Интеграция со СБИС

Подключиться к ExtSdk2 через OLE

Подключиться к ExtSdk2 через OLE

Основной способ подключения к ExtSdk2 из внешних систем — OLE-объект «Tensor.SbisPluginClientCOM». Он устанавливается на компьютер пользователя во время полной установки СБИС3 Плагина. Обновляется OLE-объект автоматически вместе с обновлением СБИС3 Плагина. Подключение к OLE-объекту аналогично работе с другими OLE-объектами.

В момент подключения OLE-объект устанавливает WebSocket соединение со СБИС3 Плагином. Поэтому до отправки первой команды нужно убедиться, что подключение установлено — дождитесь события «connected»(type=Event, data.eventName=connected). Подробнее в разделе Получение и обработка событий.

Подготовительные операции

ExtSdk2 — это расширение(модуль) СБИС3 Плагина. Плагину нужно указывать идентификатор модуля, при обращении к нему. Получить идентификатор ExtSdk можно при помощи команды ole.GetModule.

Кроме идентификатора модуля, для отправки команд в ExtSdk2 вызывающая сторона(клиент) должна быть аутентифицирована. Для аутентификации в ExtSdk2 доступны несколько вариантов. Результатом аутентификации будет идентификатор сессии, который нужно передавать при каждом вызове ExtSdk2 (допускается на одном соединении вызов команд из разных сессий).

Внимание!

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

Вызов команд

Для взаимодействия с OLE-объектом используется JSON или XML (XML это сериализованный в XML JSON). Выбор зависит от возможностей вашей системы. Структура передаваемых данных идентична в обоих вариантах, выбор варианта зависит от наличия в ИС и скорости работы соответствующего парсера. В наших интеграционных модулях для 1С и SAP из-за необходимости поддержки старых версий используется XML.

Все вызовы СБИС3 Плагин асинхронны - вы отправляете команду и ждете сообщения о результатах выполнения. Для отправки команды, в зависимости от формата работы, нужно вызвать метод ole.CallMethod или ole.CallMethodXML. Исключение составляют команды аутентификации, их нужно вызывать при помощи методов CallMethodWithoutAuth и CallMethodWithoutAuthXML. В ответ вы получите идентификатор запроса — UUID. Он будет присутствовать в событии ответа и по нему вы сможете понять, к какому запросу относится данное событие.

Вы можете ознакомиться cо списком всех доступных команд. В изложены наиболее оптимальные алгоритмы работы с ExtSdk2.

Получение и обработка событий

Работа с ExtSdk2 и СБИС3 Плагин осуществляется асинхронно, то есть в ответ на ваш вызов вы получите только его идентификатор, а не результат или ошибку. Чтобы получить результат, нужно делать периодический вызов функции ole.ReadAllObject или ole.ReadAllXml2, в зависимости от формата обмена. Эти функции возвращают все события, которые поступили от Плагина с момента последнего вызова этой функции или запуска Плагина, если это первый вызов.

Кроме событий, содержащих результат вызова команды, в OLE-объект могут приходить события, в который содержится прогресс выполнения длительной операции, например загрузки больших файлов. А также события, которые произошли в СБИС, например распознавание документа. В интеграционных модулях рекомендуется построить обработку событий на принципах регистрации и вызова обработчика обратного вызова. Интеграционный модуль должен игнорировать не интересующие или неожиданные события.

Кроме асинхронных вызовов, сами команды ExtSdk2 могут выполняться асинхронно. В основном это касается методов отправки. Такие методы в качестве ответа возвращают специальный тип ошибки, а результат выполнения приходит отдельным событием. Такой подход обусловлен тем, что изначально предполагалось исключительно синхронное выполнение методов внутри СБИС3 Плагин.

Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.