Импорт из 1С:Предприятие по протоколу OData
В платформе 1С:Предприятие, начиная с версии 8.3.5, реализована возможность автоматически формировать REST-интерфейс OData версии 3.0. Через этот интерфейс стороннее приложение может получать данные базы 1С по HTTP-протоколу.
В Loginom интеграция с 1С через стандартный компонент, реализующий COM-соединение, возможна только при работе под Windows. При работе под Linux можно обращаться к 1С по HTTP-протоколу. Демопример показывает импорт данных из 1С с помощью REST-запроса.
Сценарий получает список объектов конфигурации, загружает остатки товаров из регистра накопления «ТоварыНаСкладах», получает справочник упаковок и единиц измерения, затем соединяет данные в итоговую таблицу.
Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.
Предварительная подготовка
Перед запуском демопримера нужно подготовить базу 1С и параметры подключения.
-
Требуется установленная платформа 1С:Предприятие версии 8.3.5 или выше.
-
Стандартный OData-сервис должен быть опубликован на стороне 1С. В новых версиях прикладных решений 1С доступ к объектам базы данных через OData по умолчанию может быть закрыт.
Примечание: Необходимо обратиться к администратору 1С для публикации сервиса и открытия доступа к справочникам, документам, регистрам и другим объектам по протоколу OData.
-
Внутренний пользователь базы данных 1С, от имени которого выполняются запросы к сервису, должен иметь право на внешнее соединение и доступ к объектам базы данных 1С, используемым в демопримере.
-
В демопримере реализовано получение остатков из регистра накопления «ТоварыНаСкладах» и данных справочника «УпаковкиЕдиницыИзмерения» из базы «Управление торговлей» версии 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 сервиса 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.