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

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 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]]

Текущая версия на 09:03, 25 мая 2021

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

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


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

Важно. События возвращаются не в хронологическом порядке.

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

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

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

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


Обновление статуса раннее отправленного документа

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