CallMethodXML — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 5: Строка 5:
 
* {{Шаблон:ApiParam|query_id|1|строка|uuid для идентификации вызова метода}}
 
* {{Шаблон:ApiParam|query_id|1|строка|uuid для идентификации вызова метода}}
 
* {{Шаблон:ApiParam|guid_module|1|строка|uuid модуля полученный через GetModule()}}
 
* {{Шаблон:ApiParam|guid_module|1|строка|uuid модуля полученный через GetModule()}}
 +
* {{Шаблон:ApiParam|module_method |1|строка|Имя вызываемого метода модуля}}
 
* {{Шаблон:ApiParam|parameters_module_method|1|строка|json с параметрами, сериализованный в строку}}
 
* {{Шаблон:ApiParam|parameters_module_method|1|строка|json с параметрами, сериализованный в строку}}
 
* {{Шаблон:ApiParam|account_id|1|строка| идентификатором сессии, полученный при регистрации}}
 
* {{Шаблон:ApiParam|account_id|1|строка| идентификатором сессии, полученный при регистрации}}
 
== Результат ==
 
== Результат ==
Результат следует ожидать через вызов функции ReadAllXml2()
+
Работа с ExtSdk2 осуществляется асинхронно, поэтому ответ следует ждать через вызов функции [[ReadAllXml2|ReadAllXml2]]. Более подробное о получении ответов и видах событий см. в статье [[Виды_событий_-_Сценарии_ExtSdk2|Виды событий]].
В результате должно прийти событие Message, у которого в Result лежит 'результат работы вызываемого метода
+
В результате должно прийти событие [[Виды_событий_-_Сценарии_ExtSdk2#Примеры ответов от модуля#Message|Message]], у которого в Result лежит 'результат работы вызываемого метода.
  
 
== Пример успешного вызова ==
 
== Пример успешного вызова ==
Строка 15: Строка 16:
  
 
query_id = str(uuid.uuid4())
 
query_id = str(uuid.uuid4())
module_method = "ExtSdk2.AuthByPassword"
+
module_method = "ExtSdk2.WriteDocument"
parameters_module_method = json.dumps({"Login": "login", "Password": "password"}, ensure_ascii=True)
+
parameters_module_method = "<object><object name="Document"></object></object>"
  
 
CallMethodXML( query_id, guid_module, module_method, parameters_module_method, session_id )
 
CallMethodXML( query_id, guid_module, module_method, parameters_module_method, session_id )
Строка 22: Строка 23:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Пример ответа ==
+
== Ответ ==
<syntaxhighlight lang="python" line='line'>
 
 
 
    answer = read_all_xml( query_id )
 
 
 
    result = answer[ 'Result' ]
 
 
 
    def read_all_xml( query_id ):
 
       
 
        # Словарь с функциями обработки событий по типу
 
        supported_events = {
 
            'Message': parse_Message,
 
            'Error': parse_Error,
 
            'Event': parse_Event
 
        }
 
 
 
        xml_string = ole.ReadAllXml2()
 
        events = parse_xml_to_json(xml_string)
 
 
 
        for event in events:
 
            event_type = event.get('type')
 
            supported_events[event_type](event)
 
         
 
            if( event[ 'queryID' ] == query_id )
 
              return event[ 'data' ]
 
 
 
</syntaxhighlight>
 
  
 +
 
[[Категория:OLE ExtSdk2]]
 
[[Категория:OLE ExtSdk2]]

Текущая версия на 11:26, 21 июля 2021

Описание

Вызов методов модуля плагина c авторизацией( с имеющимся идентификатором сессии - session_id ). Предназначен для вызовов из интегрируемых систем, работающих с xml, таких как 1C или SAP.

Параметры

  • query_id ! (строка) - uuid для идентификации вызова метода
  • guid_module ! (строка) - uuid модуля полученный через GetModule()
  • module_method ! (строка) - Имя вызываемого метода модуля
  • parameters_module_method ! (строка) - json с параметрами, сериализованный в строку
  • account_id ! (строка) - идентификатором сессии, полученный при регистрации

Результат

Работа с ExtSdk2 осуществляется асинхронно, поэтому ответ следует ждать через вызов функции ReadAllXml2. Более подробное о получении ответов и видах событий см. в статье Виды событий. В результате должно прийти событие Message, у которого в Result лежит 'результат работы вызываемого метода.

Пример успешного вызова

query_id = str(uuid.uuid4())
module_method = "ExtSdk2.WriteDocument"
parameters_module_method = "<object><object name="Document"></object></object>"

CallMethodXML( query_id, guid_module, module_method, parameters_module_method, session_id )

Ответ