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

Материал из razgovorov.ru
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
== Обработка служебных событий ==
 
== Обработка служебных событий ==
  
Обработка служебных событий необходима для документов, которые требуют обязательной обработки. Например, подпись извещений о получении документа. Необходимо получать списки этапов( [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов] ), подготавливать необходимые действия( [https://sbis.ru/help/integration/api/all_methods/develop_doc| СБИС.ПодготовитьДействие] ) и выполнять их( [https://sbis.ru/help/integration/api/all_methods/make_doc| СБИС.ВыполнитьДействие] ), что может занять значительное количество времени и ресурсов. Более подробное описание можно посмотреть в статье [https://sbis.ru/help/integration/api/sequence/offdoc Обработать служебные документы в API]
+
Процедура отправки электронного документа состоит из серии обменов файлами между всеми участниками обмена (отправитель, получатель, оператор). В зависимости серии таких обменов могут быть различны. Некоторые из них определяются государством, самыми характерными примерами является регламент обмена счетами-фактурами или больничными. В рамках такого обмена, отправитель или получатель по мимо файла самой фактуры или её ответной части должны в определенный момент формировать подписывать и отправлять ещё различные извещения о приеме. В СБИС при помощи API Вы можете упростить эту процедуру и по сути поручить СБИС сделать все необходимые служебные операции.  
  
Для того, чтобы упростить процесс работы в ExtSdk2 реализован метод [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]], который по переданному фильтру получает список служебных этапов и выполняет интеллектуальную асинхронную обработку над ними. Такой подход позволяет избежать ошибок при обработке служебных этапов и увеличить производительность работы.
+
Для этого в цикли обработки документов добавляется обработка служебных документов - На уровне API СБИС данная процедура представляет из себя сначала запрос списка документов у которых есть необработанные служебные этапы при помощи метода [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов], данный метод вернет список документов, где на каждом документе указано действие которое требуется выполнить. Далее для каждого полученного документа нужно вызвать  [https://sbis.ru/help/integration/api/all_methods/develop_doc| СБИС.ПодготовитьДействие] - оно сгенерирует служебные документы и укажет какие из них требуется подписать и [https://sbis.ru/help/integration/api/all_methods/make_doc| СБИС.ВыполнитьДействие] куда передать подписи под служебными файлами. Для обеспечения максимальной производительности рекомендуется обрабатывать документы параллельно, количество документов получаемых за один вызов [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов] следует выбирать таким образом, чтобы все они успевали обрабатываться за 1 минуту. Так как именно на это время данные документы блокируются от аналогичных запросов. Вызов [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов] следует делать до тех пор пока он не вернет пустой список.
Объект фильтра совпадает с фильтром метода ( [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов] ). Размер списка этапов по умолчанию 10шт и может быть увеличен до 20, как указано в объекте фильтра.
 
  
== Пример работы с методом ProcessServiceStagesEx ==   
+
В ExtSDK2 мы ещё больше упростили данную процедуру и для обработки служебных этапов достаточно вызвать метод [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]]. За один вызов он выполнит описанную выше последовательность. Вызывать [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]] так же следует до того момента, пока он не вернет пустой список. В случаях когда количество необработанных служебных документов измеряется десятками или сотнями тысяч - обработка служебных документов может занять продолжительное время и чтобы у пользователя не сложилось ощущение, что процесс завис рекомендуется показывать пользователю это количество обработанных служебных документов.
  
<syntaxhighlight lang="python" line='line'>
+
Так же как и в [[Отправка_документов_-_Сценарии_ExtSdk2#Массовая отправка электронных документов | сценарии Массовой отправки документов]], для увеличения производительности можно одновременно выполнять несколько [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]]. Рекомендуется не более 5 параллельных вызовов, самостоятельно превышение лимита приведет к нестабильной медленной работе - для увеличения пропускной способности обратитесь к Вашему менеджеру.
 
 
    query_id = str(uuid.uuid4())
 
    module_method = "ExtSdk2.ProcessServiceStagesEx "
 
    filter{}
 
    parameters_module_method = json.dumps({"Filter": filter}, ensure_ascii=True)
 
    account_id = ********@plugin.sbis.ru
 
 
 
    ole.CallMethod( query_id, guid_module, module_method, parameters_module_method, account_id )
 
     
 
</syntaxhighlight>
 
 
 
Пример получения ответов см. [[ Подключение_к_ExtSdk2_через_OLE_-_Сценарии_ExtSdk2 | Подключение к ExtSdk2 через OLE ]]  
 
 
 
Если метод вернул в ответе '''ЕстьНеобработанныеЭтапы - "Да"''' по переданному фильтру, то это означает что запрашиваемое количество этапов обработано( указано в ответе '''ОбработаноЭтапов - 10''' ). Следует вызывать метод ProcessServiceStagesEx необходимое количество раз пока в ответе не придет '''ЕстьНеобработанныеЭтапы - "Нет"'''
 
  
 
[[Категория:Сценарии ExtSdk2]]
 
[[Категория:Сценарии ExtSdk2]]

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

Обработка служебных событий

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

Для этого в цикли обработки документов добавляется обработка служебных документов - На уровне API СБИС данная процедура представляет из себя сначала запрос списка документов у которых есть необработанные служебные этапы при помощи метода СБИС.СписокСлужебныхЭтапов, данный метод вернет список документов, где на каждом документе указано действие которое требуется выполнить. Далее для каждого полученного документа нужно вызвать СБИС.ПодготовитьДействие - оно сгенерирует служебные документы и укажет какие из них требуется подписать и СБИС.ВыполнитьДействие куда передать подписи под служебными файлами. Для обеспечения максимальной производительности рекомендуется обрабатывать документы параллельно, количество документов получаемых за один вызов СБИС.СписокСлужебныхЭтапов следует выбирать таким образом, чтобы все они успевали обрабатываться за 1 минуту. Так как именно на это время данные документы блокируются от аналогичных запросов. Вызов СБИС.СписокСлужебныхЭтапов следует делать до тех пор пока он не вернет пустой список.

В ExtSDK2 мы ещё больше упростили данную процедуру и для обработки служебных этапов достаточно вызвать метод ProcessServiceStagesEx . За один вызов он выполнит описанную выше последовательность. Вызывать ProcessServiceStagesEx так же следует до того момента, пока он не вернет пустой список. В случаях когда количество необработанных служебных документов измеряется десятками или сотнями тысяч - обработка служебных документов может занять продолжительное время и чтобы у пользователя не сложилось ощущение, что процесс завис рекомендуется показывать пользователю это количество обработанных служебных документов.

Так же как и в сценарии Массовой отправки документов, для увеличения производительности можно одновременно выполнять несколько ProcessServiceStagesEx . Рекомендуется не более 5 параллельных вызовов, самостоятельно превышение лимита приведет к нестабильной медленной работе - для увеличения пропускной способности обратитесь к Вашему менеджеру.