Получить данные из 1с c

Обновлено: 04.07.2024

Обмен данными с конфигурацией через веб-сервисы

Внимание! Данный функционал доступен в "Библиотеке стандартных подсистем", начиная с версии 2.3.1.62.

Для обмена данными через формат EnterpriseData у конфигураций, использующих "Библиотеку стандартных подсистем", есть два веб-сервиса:

  • EnterpriseDataUpload – упрощенный вариант для загрузки данных в информационную базу из сторонних приложений. Не требует специальных настроек на стороне конфигурации (кроме развертывания собственно веб-сервиса); однонаправленный обмен данными – ТОЛЬКО импорт данных в информационную базу.
  • EnterpriseDataExchange – для двустороннего обмена данными между конфигурацией и сторонним приложением. Для работы с ним необходима настройка обмена данными на стороне конфигурации.

Собственно задача обмена данными включает в себя две подзадачи:

  • Составление корректного XML-файла в формате EnterpriseData,
  • Вызов веб-методов в правильной последовательности.

Особенности работы методов веб-сервисов

Большинство методов обоих веб-сервисов имеют выходной параметр – строку ErrorMessage. В случае если внутри конфигурации произошла ошибка, связанная с бизнес-логикой – в эту строку будет записана информация об этой ошибке. Если ошибок в процессе работы метода не было – в строку ErrorMessage будет помещена пустая строка. Если же в процессе работы метода возникла системная ошибка (например, на стороне конфигурации не удалось разархивировать полученный архив) – веб-метод сгенерирует исключение (exception).

Большинство методов обоих веб-сервисов возвращают строки, но в текущей версии возвращаемые строки всегда пустые (кроме EnterpriseDataUpload.PutDataActionResult – он возвращает статус обработки данных на стороне конфигурации – “Active”, “Completed” либо “Failed”).

Что нужно для работы

На стороне конфигурации

На стороне конфигурации должны быть развернуты веб-сервисы EnterpriseDataUpload и EnterpriseDataExchange соответствующих версий (в данном случае была использована версия 1.0.1.1). При открытии этих двух URL-адресов в браузере (нужно подставить правильное для вашей инсталляции «1С:Предприятия» имя веб-сервера и публикации):

должны выводиться WSDL-описания сервисов:


  • В Solution Explorer в контекстном меню узла References выбрать команду Add Service Reference.
  • В нижнем левом углу появившегося диалога нажать кнопку Advanced.
  • В нижнем левом углу появившегося диалога нажать кнопку Add Web Reference.

Использовалась среда разработки Eclipse 4.4.2. Для генерации кода по WSDL файлов веб-сервисов применялась утилита wsdl2java из фреймворка Apache CXF 2.7.16.

Простой обмен данными с конфигурациями с помощью формата EnterpriseData

Объект может содержать в себе ссылки на другие объекты (например, документ «Акт выполненных работ» может содержать в себе одну или несколько ссылок на номенклатуру). В этом случае, если мы импортируем данные в информационную базу, все объекты, на которые мы ссылаемся из «родительского» объекта, должны либо уже существовать в системе, либо их описание должно содержаться в том же XML файле.

Если нам необходимо удалить какой-то объект, в коллекцию Body надо добавить элемент типа «УдалениеОбъекта», и в этом элементе сослаться на удаляемый объект (см. описание типа «УдалениеОбъекта» в схеме EnterpriseData_X_Y_Z.xsd).

С помощью формата EnterpriseData нам доступны операции создания, обновления и удаления объектов. На данный момент для корректной загрузки данных в типовые решения все объекты должны содержать заполненный элемент «Ссылка» из элемента «Ключевые свойства» (GUID в форме строки). Это первичный ключ объекта. Конфигурации ведут себя следующим образом:

  • Если в системе нет объекта с ключом из поля «Ссылка» - создается новый объект.
  • Если в системе уже есть объект с ключом из поля «Ссылка» - существующий объект обновляется новыми данными, пришедшими в XML.
  • Если пришел элемент типа «УдалениеОбъекта» - объект с соответствующим ключом удаляется из системы.

Веб-сервис EnterpriseDataUpload

EnterpriseDataUpload – интерфейс исключительно для импорта данных в формате EnterpriseData в конфигурацию из сторонних приложений. Условия задачи: у нас есть XML файл с данными в формате EnterpriseData, надо передать его в конфигурацию и убедиться в том, что на стороне конфигурации данные успешно получены.

Алгоритм работы следующий:

Итак, у нас есть архив с данными в формате EnterpriseData (один или несколько файлов). Не будем описывать, как в программе создать архив и разбить его на несколько файлов, чтобы сэкономить время – желающие смогут легко найти примеры подобного кода, используя поисковые сервера и соответствующие запросы.

Реализуем функцию, которая принимает такие входные параметры:

  • URL Веб-сервиса,
  • Имя пользователя для соединения с Веб-сервисом,
  • Пароль.

Путь до архивированного файла с данными. Если архив умещается в одном файле – это имя файла с полным путем, включая расширение (например, “C:\Exchange\data.zip”). Если же архив разбит на несколько частей, то это будет имя любого из файлов без расширения и точки (например, “C:\Exchange\data”). Предполагается, что это последовательность файлов с расширениями “.001”, “.002” и т.д.

Реализация функции (в виде статического метода) в листинге ниже. Диагностическая информация выводится в консоль.

Соответствующую библиотеку мы добавим с закладки COM:

private void button1_Click( object sender, EventArgs e)

string user = "Админ" ;

string file = "C:\\1cv82\\Личные базы\\ДБ" ;

V82. COMConnector com1s = new V82. COMConnector ();

result = com1s.Connect( "File='" + file + "';Usr='" + user + "';pwd='" + pas + "';" );

После запуска этой программы в 1С у нас добавиться элемент справочника "Номенклатура":

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

(1) serg__k, тип "dynamic" появился в VS 2010. В более ранних версиях его нету. При обращении к платформе 8.3 необходимо в настройках проекта поставить 32 разрядную систему))

Автору большое спасибо за вполне себе грамотную и подробную статью. По существу все супер.

Но у меня возникли вопросы на которые сейчас не знаю ответа. В процессе поиска. Поиски чуть подзатянулись и поэтому хочу спросить, может автор статьи сталкивался уже? Или может кто ещё подскажет?

Написал пару методов для себя на стороне 1С.
Первый принимает в качестве параметра название объекта 1С. Параметр строковый. Возвращает тоже строку, только уже с описанием структуры хранения данного объекта. Второй метод принимает дату, возвращает число 1 или 0.

У меня конечная цель была - узнать статус одной долгой процедуры, если статус плохой - развернуть свежий бэкап базы на тестовом сервере и параллельно запустить одну обработку на тестовом сервере.
Опять же начинаю сомневаться в том - смогу ли я корректно эту обработку запустить? Там в процедуру надо передать ряд параметров у которых типы: Строка, дата, булево.

Буду благодарен за любое направление в нужную сторону, где копать(искать).

Союз-PLM представляет собой полнофункциональный программный комплекс для решения широкого спектра задач управления инженерной технической информацией наукоемких изделий и сложных инженерных объектов в области машиностроения, приборостроения, архитектуры, строительства.

Для работы этого кода вам придется в свойствах конфигурации в окне "Заголовок для скриптов" дописать:

По дополнительному запросу Союз-PLM высылает шаблон документа “Сводная спецификация”. Мы слегка модифицируем этот документ, добавив в шаблон в табличную часть поле “ Покупной / IsPurchased ” (Bool). Этот атрибут нам нужен, для того что бы мы знали какие детали мы купим в виде готового узла, а какие подузлы будем собирать сами из комплектующих, которые, в свою очередь, тоже надо обеспечить (купить или сделать) для сборки.

В скрипте формирования табличной части в процедуре public void ParseItem( ) меняем одну строку для заполнения нового атрибута.

// Однотипно заполняемые атрибуты
Line[ " IsPurchased " ] = IsPurchased; // Эту строку мы добавили
Line[ " Order " ] = attr.CollectionElements.Count;

Больше ничего менять не надо, нам вполне подойдет штатная выгрузка в Excel, прямо в документе, для передачи данных в 1С.

Подключаем обработку в ERP (НСИ и администрирование -> Печатные формы -> Дополнительные отчеты и обработки.) В документе “Заказ на сборку” в меню заполнение появится кнопка “Загрузить заказ на сборку из файла”.


Выбираем файл данных, которые будем загружать. Указываем схему обеспечения и папку по умолчанию для вновь созданной номенклатуры. Нажимаем кнопку прочитать файл.

К статье прилагается пример excel файла для загрузки, на случай если вы будете формировать его в другой системе. После нажатия кнопки строится дерево узлов комплектующих.

Если для узла есть соответствие в ERP, то по сочетанию Обозначение+” ”+Наименование подбирается номенклатура из ERP. Производится визуальный контроль заполнения колонки “Номенклатура ERP”. Если есть номенклатура, которая названа по другому чем в PLM, но которую надо привести к стандарту, она выбирается в этой колонке вручную.

После нажатия кнопки “Создать/обновить номенклатуру в ERP” будет создана недостающая номенклатура, а указанная приведена к стандарту. В созданной номенклатуре артикул будет заполнен Обозначением.

Нажатие кнопки “Добавить в документ” выгружает данные в документ. Количество комплектующих умножается на количество изделий, которые надо собрать в заказе на сборку. Если для узла стоит флаг “Покупной”, то он выгружается без подузлов.

Обработка гарантированно работает на платформе 8.3 (тестировано на релизе 8.3.8.1652) с конфигурациями 1С:ERP Управление предприятием 2 (тестировано на релизе 2.1.3.136) только на управляемых формах.

запрос для получения необходимых данных на сайте для обнавления своих данных
Пожалуйста, может кто-нибудь знает необходимый скрипт, который позволял бы обращаться к.

Получения данных от web-сервиса ЦБ РФ
Добрый день! Подскажите пожалуйста, каким образом можно реализовать клиентское приложение для.

Ошибка получения данных из select
Здравствуйте, проблема с select: имеется таблица построенная на div (tabel-cell и tabel-row).

Защита получения пост данных
Вычитал что при получении пост данных можно подхватить sql инъекцию, то есть через пост запросы.

Друзья привет. Понял в чем проблема. Но вопрос все таки открыл.
Все 3 поля в 1с это ссылки. Если будут обычные типы Я их смогу получить прочитать да сделать все что угодно.
А есть возможность прочитать значение этих полей?Ссылочных yyyuuu, если язык запросов в 1С подражает языку SQL, то у него должны быть аналоги оператора JOIN языку SQL, то у него должны быть аналоги оператора JOIN Немного не понял о чем вы.
Можно пожалуйста уточнить? Кто с чем соеденять нужно.

yyyuuu, о том, что если вам нужно что-то вытащить по внешнему ключу (в вашей терминологии - ссылка), то в SQL (на который очень похож приведённый вами выше пример) используется оператор JOIN (в разных вариантах):

В 1С должен быть аналогичный вариант. Я думаю, что вам стоит спросить в ветке 1С, а не тут. В 1С должен быть аналогичный вариант. Я думаю, что вам стоит спросить в ветке 1С, а не тут. Соеденения тут не нужно. Запрос коретный соеденять просто не с чем.

Резуьлтат запроса 1с
Ссылка и ЖДнакладная это ссылки на другие документы. Они вообще там где то в базе. Через ссылки Я получаю доступ к этим данным. Через Ссылку жд накладной Я могу спокойно получить все данные в ней. Как наследвание практически.

yyyuuu, кажется начинаю понимать. В виде "ссылки" вам приходит документ и вы хотите с ним работать как с объектом? Usaga, Да вот, верно. Я вообще бы хотел понять возможно ли его разобрать как нибудь или он и убедет

yyyuuu, тут вам поможет тип dynamic . Он как раз для этих целей был создан.

carrotik, Мне кажется это не выход.Проще тогда напрямую к базе подключаться и брать данные. Я пока нашел такой варинат. Вроде бы работает но некоторые моменты хотелось бы уточнить

Визуализация процесса получения данных
Доброго времени суток. Нужно визуализировать процесс получения данных. На форме есть панель, на ней.

Получения данных из Flash на странице
Добрый день подскажите каким образом можно получить данные из Flash-а который отображает на.


Список и получения данных в Controller
Доброво времени суток. Вопрос в принцепе простой. В Mvc4. У меня есть список учеников и им.

Получения данных с другого сайта
Пожалуйста помогите разобратся. Например создадим страницу Links2.html, в нем надо создать команду.

Получения данных с игрового сервера
Здравствуйте, мне интересно могу ли я получать данные о Игровом сервере (количество игроков.

Ошибка получения данных из mysql
Вот такой код : $host = 'localhost'; $user = 'user'; $pass = '12345'; $connect =.

Читайте также: