Импорт из 1С:Предприятие по протоколу OData

В платформе 1С:Предприятие, начиная с версии 8.3.5, реализована возможность автоматически формировать REST интерфейс OData версии 3.0. Таким образом, появилась возможность предоставить доступ стороннему приложению к базе 1С через HTTP протокол.

В Loginom интеграция с 1С через стандартный компонент, реализующий COM-соединение, возможна только при работе под Windows. При работе под Linux интегрироваться с 1C можно через HTTP протокол. Данный пример описывает импорт данных из 1С с помощью стандартного компонента REST-запрос. Сценарий состоит из двух этапов:

  1. Подключение к объектам конфигурации 1С через ODATA

  2. Запрос данных для дальнейшей обработки

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Запустить демо

Установить локально

Предварительные настройки

  • Установленная Платформа 1С:Предприятие версии 8.3.5 и выше.

  • REST сервис Odata должен быть опубликован на стороне 1С. В новых версиях прикладных решений 1С доступ к объектам базы данных через Odata по умолчанию закрыт.

    Примечание: Необходимо обратиться к администратору 1С для публикации сервиса и открытия доступа к справочникам, документам, регистрам и т.д по протоколу Odata.

  • Внутренний пользователь базы данных 1С, от имени которого будут выполняться запросы к сервису, должен иметь право на внешнее соединение, а также доступ к объектам базы данных 1С, используемым в интеграции.

В примере реализовано получение остатков из регистра «Товары на складах» на определенную дату из базы данных (конфигурации) «Управление торговлей» версии 11.4.

Примечание: При использовании другой версии или конфигурации может потребоваться внести изменения в демонстрационный сценарий.

Получение объектов конфигурации

а) Настройка подключения к REST 1C

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

Далее необходимо задать переменную пользователя URL опубликованного сервиса OData. Переменная должна содержать строку вида <protocol>://<host>/<base>/odata/standard.odata, где:

<protocol> — протокол (http, https)

<host> — IP-адрес или доменное имя веб-сервера 1С

<base> — имя базы, указанное при публикации сервиса OData

odata/standard.odata — признак обращения к стандартному интерфейсу OData

Например:

  1. http://localhost/HTTPTest/odata/standard.odata

  2. http://111.111.1.11/HTTPTest/odata/standard.odata

Более подробно о публикации: REST интерфейса OData.

Примечание: Эта строка является общей частью URL всех запросов к сервису, задается на этапе публикации сервиса 1С и предоставляется администратором 1С.

б) Получение объектов конфигурации

В подмодели реализована логика отправки заданного во входных параметрах запроса к сервису OData, получения ответа сервиса с обработкой и выводом ошибок. Входной порт подмодели принимает следующие параметры:

Имя переменной Метка Комментарий
url url Общая для всех запросов часть URL
suffixURL Суффикс URL Суффикс URL может модифицироваться для различных запросов к сервису
parameters Параметры GET запроса Параметры GET запроса к сервису — часть итоговой строки GET запроса, указываемая после знака ?. Пример: $format=json&$expand=Номенклатура,Характеристика,Склад
number_of_access_attempts Количество попыток обращения к сервису Максимальное число попыток обращения к сервису. При превышении числа попыток опрос сервиса прекращается, и формируется соответствующее сообщение об ошибке.

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

Общая часть URL, его суффикс и GET параметры соединяются в узле Строка запроса. Сформированный URL передается в узел Цикл, где задается «URL сервиса» узла Подключение REST-сервиса.

В узле Цикл выполняется несколько попыток взаимодействия с сервисом. Условием выхода из цикла является успешное получение данных либо превышение числа попыток взаимодействия.

в) Трансформация JSON в таблицу

Данные, которые получили в предыдущем узле, не пригодны для дальнейшей обработки в исходном варианте. Поэтому в узле JavaScript выполняется парсинг полученных данных и их постобработка для корректного вывода результата.

Формирование основной части URL запросов

Узел Конструктор URL принимает на вход таблицу с доступными объектами конфигурации, переменную пользователя URL опубликованного сервиса OData и формирует url объектов. Далее данные передаются на подмодели Товары на складах и Единицы измерения для дальнейшей обработки.

Запрос остатков товаров из регистра «Товары на складах»

Подмодель Товары на складах получает данные по остаткам товаров на заданную дату из регистра «Товары на складах». Входной порт принимает следующие значения:

Имя переменной Метка Комментарий
balance_on_date Баланс на дату Дата, которая учитывается в регистре при выполнении запроса.
number_of_access_attempts Количество попыток обращения к сервису Максимальное число попыток обращения к сервису. При превышении числа попыток опрос сервиса прекращается, и формируется соответствующее сообщение об ошибке.
а) Добавление конечной части URL запросов

Необходимо сформировать url объектов, по которым будет отправлен запрос к регистру, чтобы получить в результирующем наборе данные по остаткам товаров на складе.

URL объектов формируется внутри подмодели узлами:

  • URL Товары на складах
  • Таблица в переменные
  • Соединение (переменные)
  • Суффикс URL

В узел Запрос к регистру передаются сформированные части составного запроса.

б) Трансформация JSON в таблицу

Полученные данные в формате JSON передаются в узел Парсинг JSON для дальнейшей трансформации в таблицу.

Запрос данных справочника «Единицы измерения»

На вход подмодели Единицы измерения подаются следующие переменные:

Имя переменной Метка Комментарий
number_of_access_attempts Количество попыток обращения к сервису Максимальное число попыток обращения к сервису. При превышении числа попыток опрос сервиса прекращается, и формируется соответствующее сообщение об ошибке.
а) Добавление конечной части URL запросов

Так же, как и в подмодели Товары на складах, сформирован url объектов, по которым будет отправлен запрос к регистру.

URL объектов формируется внутри подмодели узлами:

  • URL Catalog_УпаковкиЕдиницыИзмерения
  • Таблица в переменные
  • Соединение (переменные)

Сформированный запрос передается в узел Запрос к регистру.

б) Трансформация JSON в таблицу

Полученные данные в формате JSON передаются в узел Парсинг JSON для дальнейшей трансформации в таблицу.

Объединение данных из регистра «Товары на складах» и справочника «Единицы измерения»

Для объединения данных об остатках товаров и единиц измерения используется узел Слияние. Для слияния применяются следующие настройки: Левое соединение по полю Ref_Key.

Итоговый набор

С помощью компонента Параметры полей формируется итоговый набор данных и добавляется визуализатор Таблица.


Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).