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

Материал из razgovorov.ru
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
== Обработка служебных событий ==
 
== Обработка служебных событий ==
  
Обработка служебных событий необходима для документов, которые требуют обязательной обработки. Например, подпись извещений о получении документа. Это трудоемкий процесс через методы 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| СБИС.ВыполнитьДействие] ), что может занять значительное количество времени и ресурсов.
+
Процедура отправки электронного документа состоит из серии обменов файлами между всеми участниками обмена (отправитель, получатель, оператор). В зависимости серии таких обменов могут быть различны. Некоторые из них определяются государством, самыми характерными примерами является регламент обмена счетами-фактурами или больничными. В рамках такого обмена, отправитель или получатель по мимо файла самой фактуры или её ответной части должны в определенный момент формировать подписывать и отправлять ещё различные извещения о приеме. В СБИС при помощи API Вы можете упростить эту процедуру и по сути поручить СБИС сделать все необходимые служебные операции.  
  
Для решения данной проблемы в ExtSdk2 реализован метод [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]], который по переданному фильтру получает список служебных этапов и выполняет интеллектуальную асинхронную обработку над ними. Такой подход позволяет избежать ошибок при обработке служебных этапов и увеличить производительность работы.
+
Для этого в цикли обработки документов добавляется обработка служебных документов - На уровне API СБИС данная процедура представляет из себя сначала запрос списка документов у которых есть необработанные служебные этапы при помощи метода [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов], данный метод вернет список документов, где на каждом документе указано действие которое требуется выполнить.  
Объект фильтра совпадает с фильтром метода ( [https://sbis.ru/help/integration/api/all_methods/stage_doc| СБИС.СписокСлужебныхЭтапов] ). Размер списка этапов по умолчанию 10шт и может быть увеличен до 20, как указано в объекте фильтра.
 
  
== Пример работы с методом ProcessServiceStagesEx ==   
+
Далее для каждого полученного документа нужно вызвать  [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| СБИС.СписокСлужебныхЭтапов] следует делать до тех пор пока он не вернет пустой список.
  
<syntaxhighlight lang="python" line='line'>
+
В ExtSDK2 мы ещё больше упростили данную процедуру и для обработки служебных этапов достаточно вызвать метод [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]]. За один вызов он выполнит описанную выше последовательность. Вызывать [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]] так же следует до того момента, пока он не вернет пустой список. В случаях когда количество необработанных служебных документов измеряется десятками или сотнями тысяч - обработка служебных документов может занять продолжительное время и чтобы у пользователя не сложилось ощущение, что процесс завис рекомендуется показывать пользователю это количество обработанных служебных документов.
  
    query_id = str(uuid.uuid4())
+
Так же как и в [[Отправка_документов_-_Сценарии_ExtSdk2#Массовая отправка электронных документов | сценарии Массовой отправки документов]], для увеличения производительности можно одновременно выполнять несколько [[ ProcessServiceStagesEx | ProcessServiceStagesEx ]]. Рекомендуется не более 5 параллельных вызовов, самостоятельно превышение лимита приведет к нестабильной и медленной работе именно вашей сессии - для увеличения пропускной способности обратитесь к Вашему менеджеру.
    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 )
+
И конечно, у Клиента остается возможность самостоятельно сгенерировать и подписать служебные документы. Для этого достаточно сформировать и подписать все необходимые по регламенту обмена документы и передать из в СБИС при помощи [https://sbis.ru/help/integration/api/all_methods/make_doc| СБИС.ВыполнитьДействие] через прокси метод вызова API [[ CallSabyApi ]]
 
 
    json_string = ole.ReadAllObject()
 
     
 
</syntaxhighlight>
 
 
 
Пример получения ответов см. [[ Подключение_к_ExtSdk2_через_OLE_-_Сценарии_ExtSdk2 | Подключение к ExtSdk2 через OLE ]]  
 
 
 
Если метод вернул в ответе '''ЕстьНеобработанныеЭтапы - "Да"''' по переданному фильтру, то это означает что запрашиваемое количество этапов обработано( указано в ответе '''ОбработаноЭтапов - 10''' ). Следует вызывать метод ProcessServiceStagesEx необходимое количество раз пока в ответе не придет '''ЕстьНеобработанныеЭтапы - "Нет"'''
 
  
 
[[Категория:Сценарии ExtSdk2]]
 
[[Категория:Сценарии ExtSdk2]]

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

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

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

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

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

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

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

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