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

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

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

Сценарий получает список объектов конфигурации, загружает остатки товаров из регистра накопления «ТоварыНаСкладах», получает справочник упаковок и единиц измерения, затем соединяет данные в итоговую таблицу.

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

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

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

Предварительная подготовка

Перед запуском демопримера нужно подготовить базу 1С и параметры подключения.

а) Подготовка 1С
  1. Требуется установленная платформа 1С:Предприятие версии 8.3.5 или выше.

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

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

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

  4. В демопримере реализовано получение остатков из регистра накопления «ТоварыНаСкладах» и данных справочника «УпаковкиЕдиницыИзмерения» из базы «Управление торговлей» версии 11.4. При использовании другой конфигурации или другой версии базы может потребоваться изменить настройки сценария.

б) Пример настройки подключения

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

  • <protocol> — протокол http или https;
  • <host> — IP-адрес или доменное имя веб-сервера 1С;
  • <base> — имя базы, указанное при публикации сервиса OData;
  • odata/standard.odata — обращение к стандартному интерфейсу OData.

Примеры:

  • http://localhost/UTDemo/odata/standard.odata;
  • http://111.111.1.11/UTDemo/odata/standard.odata.

Описание алгоритма

1. Подключение и получение списка объектов

Во входном порту переменных подмодели Подключение и получение списка объектов задаются параметры обращения к сервису 1С.

Имя Метка Значение
 url URL опубликованного сервиса OData http://localhost/UTDemo/odata/standard.odata
 login Логин пользователя 1С odata
 password Пароль пользователя 1С odata
 parameters Параметры запроса $format=json
 number_of_access_attempts Количество попыток обращения к сервису По умолчанию 10
а) Объекты конфигурации

Подмодель Объекты конфигурации отправляет запрос к опубликованному OData-сервису 1С и возвращает ответ сервера.

В узле Строка запроса базовый URL соединяется с параметрами запроса. Сформированная строка передается в подмодель HTTP-сервис 1C Попытка.

В подмодели HTTP-сервис 1C Попытка выполняется обращение к сервису. Условие повторного обращения задается в узле Условие для цикла: запрос повторяется, пока данные не будут получены или пока не будет достигнуто количество попыток, заданное в переменной number_of_access_attempts.

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

б) Парсинг

Подмодель Парсинг преобразует JSON-ответ со списком объектов конфигурации в таблицу.

В узле JSON в дерево JSON-ответ преобразуется в древовидную структуру. Узел Дерево в таблицу преобразует дерево в таблицу. В узле Параметры полей задаются понятные имя и метка для поля Объект конфигурации.

в) Конструктор URL

Узел Конструктор URL формирует URL объектов конфигурации из базового URL сервиса OData.

На выходе узла формируется таблица URL объектов, опубликованных в стандартном интерфейсе OData 1С.

2. Получение таблицы остатков товаров

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

Имя Метка Значение
 date_time Дата и время для запроса параметра Дата получения остатков. Значение по умолчанию 27.02.2023 00:00
а) Товары на складах

Подмодель Товары на складах получает остатки товаров на заданную дату.

В узле URL Товары на складах из таблицы URL объектов конфигурации выбирается URL регистра накопления ТоварыНаСкладах.

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

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

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

б) Ед.измерения

Подмодель Ед.измерения получает данные справочника упаковок и единиц измерения.

В узле Фильтр URL Catalog_УпаковкиЕдиницыИзмерения из таблицы URL объектов конфигурации выбирается URL справочника Catalog_УпаковкиЕдиницыИзмерения.

В подмодели Настройка переменных к параметрам запроса добавляется выбор полей ключа ссылки и наименования. Затем подготовленные значения собираются в общий набор переменных.

Производный компонент Запрос единиц измерения выполняет запрос к справочнику и возвращает JSON-ответ сервиса. Производный компонент настроен на подмодель Объекты конфигурации.

Подмодель Парсинг преобразует JSON-ответ справочника в таблицу единиц измерения. В результате формируются поля Ключ единицы измерения и Единица измерения.

в) Итоговая таблица

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

В узле Слияние выполняется левое соединение таблиц. Узел Выборка полей оставляет в результате только нужные поля.

Итоговый набор содержит номенклатуру, артикул номенклатуры, характеристику, склад и единицу измерения.


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

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

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

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

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

Новости, материалы по аналитике, кейсы применения, активное сообщество