Эффективная работа с API СБИС

Материал из razgovorov.ru
Версия от 11:01, 8 октября 2019; Разговоров Михаил (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Обработка служебных этапов

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


Максимальная эффективность операции достигается за счет правильного параллельного / многопоточного выполнения операции.

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

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

Получение списка изменений

Максимальная эффективность достигается аналогичным способом.

  1. Параллельная обработка списка по разным организациям.
  2. Обработка списка только одним пользователем, блокировка данной функции всем остальным пользователям - так как это пустая трата ресурсов.
  3. Параллельная обработка событий может быть затруднена наличием событий по одному и тому же документу, поэтому имеет смысл полученный список сгруппировать по документам, а затем если процедура обработки продолжительная по времени параллельно обработать.


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


Выданные этой функцией документы блокируются на 1 минуту от аналогичных вызовов.


Для достижения максимальной эффективность данной операции её следует выполнять многопоточно.