Обработка событий - Сценарии ExtSdk2 — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 1: Строка 1:
Получение документов и проверка их состояния аналогична статье API [https://sbis.ru/help/integration/api/sequence/newdoc Получить документы и проверить их состояние в API] с одним исключением, что в ExtSdk2 для вызова метода API [https://sbis.ru/help/integration/api/all_methods/changeslist СБИС.СписокИзменений ] необходимо использовать [[ CallSabyApi | CallSabyApi ]].
+
СБИС на любое изменение по документу (отправка, получение подтверждения получения, получение ответа, перевод на другой этап внутреннего документооборота, получение информации из гос системы) формирует событие.
  
=== Пример вызова и получение ответа===
+
Любая автоматическая обработка документов СБИС (например обновление статусов у исходящих, или автоматическая загрузка входящих) должна строится на вызове метода [https://sbis.ru/help/integration/api/all_methods/changeslist СБИС.СписокИзменений ]. Данный метод возвращает список событий произошедших в СБИС с момента его последнего вызова. Данный метод возвращает события страницами в произвольном порядке (хронологическая последовательность не гарантируется!), предполагается последовательный вызов данного метода до тех пор пока он не вернет пустой список. Для получения следующей страницы требуется передавать идентификатор и дату время последнего обработанного события из предыдущего вызова.
  
<syntaxhighlight lang="python" line='line'>
+
Дата и время последнего обработанного события передается для тех случаев, когда по идентификатору не удастся найти событие например из-за удаления документа из корзины. В этом случае будут переданы события начиная с этого времени, что потенциально ведет к возможной повторной выгрузке ранее выгруженных событий за эту секунду.
  
    #Пример вызова
+
СБИС передает очень много разных событий, неизвестные или не интересующие Вас события должны игнорироваться. Сузить количество поступающих событий можно при помощи фильтра.
    query_id = str(uuid.uuid4())
 
    module_method = "ExtSdk2.CallSabyApi"
 
    params = {...} #Параметр запроса в СБИС.СписокИзменений
 
    parameters_module_method = json.dumps({"Method": "СБИС.СписокИзменений", "Params": params}, ensure_ascii=True)
 
    account_id = ********@plugin.sbis.ru
 
  
    ole.CallMethod( query_id, guid_module, module_method, parameters_module_method, account_id )
 
  
    #Пример получения ответа
+
Код обработки событий должен удовлетворять следующим требования:
    json_string = ole.ReadAllObject()
+
* корректная работа при повторной обработке ранее обработанного события
     
+
* игнорирование / пропуск не известных событий
</syntaxhighlight>
 
  
Более подробное описание вызова методов и получение ответом см. [[ Подключение_к_ExtSdk2_через_OLE_-_Сценарии_ExtSdk2 | Подключение к ExtSdk2 ]]
+
В ExtSDK2 вызов [https://sbis.ru/help/integration/api/all_methods/changeslist СБИС.СписокИзменений ] делается через [[ CallSabyApi | CallSabyApi ]]. Для более детальной информации ознакомьтесь с документацией по API [https://sbis.ru/help/integration/api/sequence/newdoc Получить документы и проверить их состояние в API].
  
 
[[Категория:Сценарии ExtSdk2]]
 
[[Категория:Сценарии ExtSdk2]]

Версия 08:56, 25 мая 2021

СБИС на любое изменение по документу (отправка, получение подтверждения получения, получение ответа, перевод на другой этап внутреннего документооборота, получение информации из гос системы) формирует событие.

Любая автоматическая обработка документов СБИС (например обновление статусов у исходящих, или автоматическая загрузка входящих) должна строится на вызове метода СБИС.СписокИзменений . Данный метод возвращает список событий произошедших в СБИС с момента его последнего вызова. Данный метод возвращает события страницами в произвольном порядке (хронологическая последовательность не гарантируется!), предполагается последовательный вызов данного метода до тех пор пока он не вернет пустой список. Для получения следующей страницы требуется передавать идентификатор и дату время последнего обработанного события из предыдущего вызова.

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

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


Код обработки событий должен удовлетворять следующим требования:

  • корректная работа при повторной обработке ранее обработанного события
  • игнорирование / пропуск не известных событий

В ExtSDK2 вызов СБИС.СписокИзменений делается через CallSabyApi . Для более детальной информации ознакомьтесь с документацией по API Получить документы и проверить их состояние в API.