Подключение к ExtSdk2 через OLE - Сценарии ExtSdk2 — различия между версиями
(→Пример реализации получения ответов от COM-объекта) |
|||
Строка 32: | Строка 32: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Для | + | Для вызова методов модуля ExtSdk2 необходимо сначала получить его guid с помощью функции COM-объекта ole.GetModule(name). |
Вызов методов ExtSdk2 выполняется через вызов методов COM-объекта. Методы "ole.CallMethodWithoutAuth" и "ole.CallMethodWithoutAuthXML" вызываются для авторизации в плагине и позволяют получить идентификатор сессии - account_id, который нужно получить в ответах от модуля. Имея данный идентификатор можно вызывать все остальные методы модуля через "CallMethod" и "CallMethodXML". Методы с постфиксом XML вызываются с "parameters_module_method" в виде xml. | Вызов методов ExtSdk2 выполняется через вызов методов COM-объекта. Методы "ole.CallMethodWithoutAuth" и "ole.CallMethodWithoutAuthXML" вызываются для авторизации в плагине и позволяют получить идентификатор сессии - account_id, который нужно получить в ответах от модуля. Имея данный идентификатор можно вызывать все остальные методы модуля через "CallMethod" и "CallMethodXML". Методы с постфиксом XML вызываются с "parameters_module_method" в виде xml. | ||
− | Методы на вход принимают query_id вызываемого метода, guid_module - guid полученного модуля, module_method - метод модуля, который хотим позвать, parameters_module_method - параметры вызываемого метода, а так же либо host на котором мы хотим работать( online.sbis.ru ), либо account_id - полученный идентификатор сессии с которым можно вызывать остальные методы модуля. | + | Методы на вход принимают: query_id вызываемого метода, guid_module - guid полученного модуля, module_method - метод модуля, который хотим позвать, parameters_module_method - параметры вызываемого метода, а так же либо host на котором мы хотим работать( online.sbis.ru ), либо account_id - полученный идентификатор сессии с которым можно вызывать остальные методы модуля. |
По переданному query_id следует ожидать ответа от модуля. | По переданному query_id следует ожидать ответа от модуля. | ||
Строка 42: | Строка 42: | ||
== Пример реализации получения ответов от COM-объекта == | == Пример реализации получения ответов от COM-объекта == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
− | + | json_string = ole.ReadAllObject() | |
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ReadAllObject" функция COM-объекта, возвращающая массив json событий в виде строки. Пришедшую строку следует разобрать на события. События бывают трех типов: "Message", "Error", "Event", которые следует разобрать и найти ответ по переданному query_id. | |
[[Категория:Сценарии ExtSdk2]] | [[Категория:Сценарии ExtSdk2]] |
Версия 16:27, 21 апреля 2021
Для работы со СБИС3 Плагин из внешних систем, таких как 1С или SAP, требуется получить COM-объект, зарегистрированный Плагином в Вашей системе. Его название "Tensor.SbisPluginClientCOM". Все примеры кода указаны на языке Python.
Получение COM-объекта
ole = win32com.client.Dispatch("Tensor.SbisPluginClientCOM")
Получение COM-объекта занимает одну строку "ole = win32com.client.Dispatch("Tensor.SbisPluginClientCOM")" с использованием библиотеки pywin32. Далее Плагин подготавливает необходимые внутренние инструменты для подключения и в случае успеха пробрасывает событие с именем "Event_connected".
Пример вызовов методов плагина через COM-объект
# Получение модуля
guid_module = ole.GetModule(name)
# Вызов методов модуля через COM-объект
query_id = str(uuid.uuid4())
module_method = "ExtSdk2.AuthByPassword"
parameters_module_method = json.dumps({"Login": "login", "Password": "password"}, ensure_ascii=True)
host = online.sbis.ru
ole.CallMethodWithoutAuth( query_id, guid_module, module_method, parameters_module_method, host )
account_id = ********@plugin.sbis.ru
ole.CallMethod( query_id, guid_module, module_method, parameters_module_method, account_id )
Для вызова методов модуля ExtSdk2 необходимо сначала получить его guid с помощью функции COM-объекта ole.GetModule(name).
Вызов методов ExtSdk2 выполняется через вызов методов COM-объекта. Методы "ole.CallMethodWithoutAuth" и "ole.CallMethodWithoutAuthXML" вызываются для авторизации в плагине и позволяют получить идентификатор сессии - account_id, который нужно получить в ответах от модуля. Имея данный идентификатор можно вызывать все остальные методы модуля через "CallMethod" и "CallMethodXML". Методы с постфиксом XML вызываются с "parameters_module_method" в виде xml.
Методы на вход принимают: query_id вызываемого метода, guid_module - guid полученного модуля, module_method - метод модуля, который хотим позвать, parameters_module_method - параметры вызываемого метода, а так же либо host на котором мы хотим работать( online.sbis.ru ), либо account_id - полученный идентификатор сессии с которым можно вызывать остальные методы модуля.
По переданному query_id следует ожидать ответа от модуля.
Пример реализации получения ответов от COM-объекта
json_string = ole.ReadAllObject()
ReadAllObject" функция COM-объекта, возвращающая массив json событий в виде строки. Пришедшую строку следует разобрать на события. События бывают трех типов: "Message", "Error", "Event", которые следует разобрать и найти ответ по переданному query_id.