СБИС API2 правильное использование — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
м (added Category:СБИС using HotCat)
(Как быстро обрабатывать события)
 
(не показана 1 промежуточная версия 1 участника)
Строка 21: Строка 21:
 
Полученный список оптимальнее всего раздать обработчикам событий и обрабатывать каждое событие из списка асинхронно.
 
Полученный список оптимальнее всего раздать обработчикам событий и обрабатывать каждое событие из списка асинхронно.
  
По окончании обработки события/событий получаем новую порцию событий и повторяем процедуру.
+
По окончании обработки события/событий получаем новую порцию событий и повторяем процедуру.
 +
 
 +
ВАЖНО! Количество запрашиваемых событий должно быть таким, чтобы вы успевали обработать их все за 1 минуту. Так как именно на это время они блокируются в СБИС для обработки другими запросами.
  
 
Не забывайте обрабатывать служебные события аналогичным алгоритмом. Получили список служебных событий, асинхронно обработали каждое из них. Повторяем пока события не кончились.
 
Не забывайте обрабатывать служебные события аналогичным алгоритмом. Получили список служебных событий, асинхронно обработали каждое из них. Повторяем пока события не кончились.
Строка 58: Строка 60:
  
 
[[Категория:СБИС]]
 
[[Категория:СБИС]]
 +
[[Категория:API2]]

Текущая версия на 12:01, 11 декабря 2019

Как правильно авторизоваться

Авторизовываться отдельно не надо. Правильно написать отдельную функцию для исполнения любых запросов СБИС - которая при необходимости будет вызывать авторизацию. В функцию тем или иным способом должны быть переданы сессия, url (тестовый fix-online.sbis.ru или рабочий online.sbis.ru), название метода и его параметры

Алгоритм работы:

  • Если сессия не указана
    • пробуем авторизоваться - не удалось возвращаем ошибку.
  • Выполняем запрос
    • если возвращается 401 ошибка (пользователь не авторизован)
      • пробуем авторизоваться - не удалось возвращаем ошибку
      • повторяем запрос
  • Возвращаем результат

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

Как быстро обрабатывать события

Метод получения новых событий необходимо вызывать в цикле, пока не вернет пустой результат.

Полученный список оптимальнее всего раздать обработчикам событий и обрабатывать каждое событие из списка асинхронно.

По окончании обработки события/событий получаем новую порцию событий и повторяем процедуру.

ВАЖНО! Количество запрашиваемых событий должно быть таким, чтобы вы успевали обработать их все за 1 минуту. Так как именно на это время они блокируются в СБИС для обработки другими запросами.

Не забывайте обрабатывать служебные события аналогичным алгоритмом. Получили список служебных событий, асинхронно обработали каждое из них. Повторяем пока события не кончились.

Как быстро отправлять документы

Эффективность отправки в различных решения СБИС

Отправка документов состоит из следующих этапов:

  • Получение данных из информационной системы
  • Формирование электронных документов
  • Подписание документов
  • Отправка документов
  • Обновление статуса документа

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

Занимаясь ускорением отправки документов нужно анализировать и ускорять каждый из этих этапов.

Пути ускорения 3:

  1. оптимизировать код
  2. распараллеливание исполнения кода
  3. увеличение мощности железа.

Оптимизация кода

  • ликвидируйте лишние вызовы - Анализируйте однотипные вызовы и кэшируйте. К самым легко кешируемым данным относятся - данные о нашей организации и контрагенте.
  • пытайтесь обойтись без файловых операций

Распараллеливание исполнения кода

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

Увеличение мощности железа

  • Последняя мера, сначала надо убедиться, что текущее железо загружено.