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

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


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

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