Ранее мы обсуждали различные способы интеграции 1С с КХД в статье. Теперь давайте подробнее разберем, как получить доступ к справочникам, документам и другим данным, используя стандартные HTTP-запросы через REST-интерфейс и протокол OData 3.0.
Кратко о REST-интерфейсе и OData
REST (Representational State Transfer) — это архитектурный стиль API для обмена информацией по протоколу HTTP. То есть для доступа к объектам нужен URL-адрес и HTTP-глаголы:
-
GET = Получить (читать)
-
POST = Создать
-
PATCH = Изменить (обновить)
-
DELETE = Удалить
Например, чтобы получить список товаров, можно отправить 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С перейдите в раздел «Администрирование» и выберите «Публикация на веб-сервере».
-
в поле «Имя» укажите название базы данных, которое будет использоваться веб-сервером (лучше использовать латиницу, чтобы избежать проблем с кодировкой);
-
в выпадающем списке выберите веб-сервер, установленный на вашем компьютере;
-
укажите путь к нужному каталогу;
-
установите галочку «Публиковать стандартный интерфейс OData» и нажмите «Опубликовать».
Подробное описание процесса публикации можно найти в книге «Руководство администратора» для 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С в корпоративное хранилище.
Возможные проблемы и риски
На первый взгляд этот метод кажется довольно простым: не нужно ничего дополнительно программировать — достаточно просто прописывать запросы к документам и справочникам. Но, тем не менее, есть определенные сложности при таком способе интеграции.
-
При работе с большими объемами данных запросы могут выполняться медленно или сервер не справляться с нагрузкой. В таких случаях рекомендуется разбивать данные на более мелкие «порции». Это поможет системе быстрее обрабатывать информацию, но усложнит работу с запросами.
-
Сложно написать интуитивно понятный запрос. Из-за глубоко вложенных структур ресурсов формируются длинные и сложные URL-адреса. Такие запросы создают повышенную нагрузку на сервер приложения 1С и сервер СУБД. Также есть риск возникновения циклических запросов.
-
Интерфейс дает лишь общее представление об ошибках, которые возникают при получении данных. Поиск и устранение причин отнимает много времени.
-
OData дает возможность получать и изменять данные, поэтому для безопасности нужно настраивать права доступа. Например, можно ограничить права на запись и предоставить пользователям возможность только читать информацию.
-
Чтобы данные из систем 1С и КХД были согласованы, нужно обеспечить избыточность выгрузки. Это приводит к увеличению нагрузки на серверы и сети, что замедляет их работу и, как следствие, увеличивает время обработки данных.
-
Для получения сложных срезов данных из систем 1С вам придется либо дублировать структуру данных в КХД, либо усложнять логику запросов получения информации. Это приводит к дополнительной нагрузке на серверы, к увеличению сложности в сопровождении КХД и ETL-процессов.
Ответственные и задействованные сотрудники
Руководство и аналитики определяют цели и задачи интеграции. Они решают, какие данные нужны для анализа как часто их следует обновлять, а также оценивают возможности системы.
Для работы с протоколом OData не нужно иметь глубоких знаний языка 1С и уметь программировать. Программисты 1С и системные администраторы настраивают веб-сервер для публикации данных, REST-интерфейс и OData, а также назначают права доступа для пользователей. Они следят за тем, чтобы запросы были корректными, а возвращаемые данные соответствовали указанным параметрам.
При этом нужны знания протокола HTTP и инструментов, которые работают со стандартным интерфейсом OData со стороны КХД, либо формируют и обрабатывают произвольные HTTP запросы, разбирая данные из JSON/XML.
Заключение
Хотя протокол OData и считается простым и достаточно быстрым способом обмена данными между системами 1С и КХД, интеграция с его помощью может быть не всегда осуществима. В любом случае, перед тем, как приступить к работе, нужно определить, с какими данными и в каком объеме придется иметь дело, и понять, как часто они будут изменяться. И, возможно, нужно будет выбрать более подходящий способ интеграции.
ссылка на оригинал статьи https://habr.com/ru/articles/865798/
Добавить комментарий