Туториал: интеграция 1С и КХД через стандартный REST‐интерфейс Odata

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Ранее мы обсуждали различные способы интеграции 1С с КХД в статье. Теперь давайте подробнее разберем, как получить доступ к справочникам, документам и другим данным, используя стандартные HTTP-запросы через REST-интерфейс и протокол OData 3.0.

Кратко о REST-интерфейсе и OData

REST (Representational State Transfer) — это архитектурный стиль API для обмена информацией по протоколу HTTP. То есть для доступа к объектам нужен URL-адрес и HTTP-глаголы:

Например, чтобы получить список товаров, можно отправить GET-запрос по адресу GET http://example.com/api/products , а по запросу POST добавить новый товар:

POST http://example.com/api/products

Content-Type: application/json

{

  "name": "Laptop",

  "price": 999.99,

  "stock": 10

}

OData (Open Data Protocol) — это протокол, который помогает внешним приложениям получать доступ к данным системы, не изменяя код прикладного решения. Он работает через веб-интерфейсы и поддерживает форматы XML и JSON.

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

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

Например, нужно передать данные о продажах из системы 1С в КХД. Для этого настраиваем интерфейс OData и выбираем таблицу «Продажи» в качестве источника данных. Затем создаем запрос, он может выглядеть следующим образом:
GET http://example.com/1C/odata/standard.odata/Продажи. Интерфейс OData автоматически его обрабатывает, извлекает данные из системы 1С и передает их в КХД.

Что нужно для интеграции?

Для начала вам нужно 1С:Предприятие версии не ниже 8.3.5 и настроенный веб-сервер (IIS или Apache), который будет отвечать за передачу данных через REST-интерфейс.

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

Как происходит интеграция пошагово

Чтобы работать с протоколом OData, его нужно опубликовать через меню настройки 1С. Для этого в конфигураторе 1С перейдите в раздел «Администрирование» и выберите «Публикация на веб-сервере».

Подробное описание процесса публикации можно найти в книге «Руководство администратора» для 1С:Предприятие 8.3. 

Чтобы получить доступ к объектам 1С, используйте метод глобального контекста -  УстановитьСоставСтандартногоИнтерфейсаOData(). Он определяет, какие объекты будут доступны через интерфейс. Однако, если ваше приложение работает в режиме совместимости с версией 8.3.4 или более ранней, то этот метод не применим — все поддерживаемые объекты будут автоматически доступны через OData.

Для настройки интерфейса OData в конфигурации, разработанной на основе библиотеки стандартных подсистем (БСП), откройте меню «Администрирование», затем выберите «Синхронизация данных» и «Настройки стандартного интерфейса OData».

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

На вкладке «Состав» нажмите «Загрузить метаданные» и укажите основные и подчиненные объекты, к которым хотите предоставить доступ.

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

Чтобы получить информацию в формате JSON, добавьте к URL параметр ?$format=application/json, и ссылка будет выглядеть так: 

Для получения описания стандартного интерфейса OData используйте GET-запрос по URL:

После публикации конфигурации необходимо настроить конечные точки (эндпоинты) для доступа к информации. Это URL-адреса, к которым отправляются HTTP-запросы. Обычно они генерируются автоматически, но вы можете изменить параметры доступа и указать, откуда именно нужно брать данные.

Пример, как можно получить информацию из справочника в XML-формате:

Обновление существующей записи:

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

Удаление записи из справочника:

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

Используя функции протокола OData, можно взаимодействовать с виртуальными таблицами. Параметры, передаваемые в функции, будут соответствовать параметрам этих виртуальных таблиц.

Для получения среза последнего регистра сведений "КурсыВалют" используйте команду:

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

Возможные проблемы и риски

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

Ответственные и задействованные сотрудники 

Руководство и аналитики определяют цели и задачи интеграции. Они решают, какие данные нужны для анализа как часто их следует обновлять, а также оценивают возможности системы.

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

При этом нужны знания протокола HTTP и инструментов, которые работают со стандартным интерфейсом OData со стороны КХД, либо формируют и обрабатывают произвольные HTTP запросы, разбирая данные из JSON/XML.

Заключение

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

Источник: https://habr.com/ru/companies/modusbi/articles/865798/


Интересные статьи

Интересные статьи

Не секрет, что для разных игр разработчики делали порой ну очень странные девайсы: без некоторых игры просто непроходимы, а некоторые делались чисто для погружения в атмосферу. О каких-то из них вы ...
Статья, которая рассказывает о процессе выгрузки данных из базы данных Microinvest в систему 1С Битрикс. В ней подробно описываются шаги, необходимые для успешной выгрузки, начиная от подготовки и нас...
Пастух весь день зависает в смартфоне, при этом его стадо коров остаётся под присмотром. Оператор на нефтяном месторождении прогнозирует поломку сложного агрегата и заранее сообщает о проблеме, чтобы ...
Я изучаю Битрикс где-то пару недель. Зачем?.. Хотелось чего-то новенького, тут подвернулась учёба. Даром, с наставниками, с возможным трудоустройством дальше хотя бы на пару месяцев - на испытательный...
Всем привет. Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редак...