Сценарии использования API 2 СБИС
Содержание
- 1 Вариант 1. Необходимо обрабатывать документы в своей системе, на рабочих станциях есть доступ в интернет. (загружаю в ИС только то, что необходимо).
- 2 Вариант 2. Необходимо обрабатывать документы в своей системе, на рабочей станции нет доступа в интернет (гружу все в ИС и там уже разбираюсь).
- 3 Вариант 3. Необходим максимально простой вариант, клиент готов работать в личном кабинете СБИС.
Вариант 1. Необходимо обрабатывать документы в своей системе, на рабочих станциях есть доступ в интернет. (загружаю в ИС только то, что необходимо).
Организация хочет работать с ЭДО полностью в своем интерфейсе, но готова сделать минимум доработок. Предполагается, что каждый пользователь ИС работает со СБИС через API от своего имени. Система не хранит никакой лишней информации. Списки электронных документов каждый раз запрашиваются через API. Для предварительно просмотра документов используются сервисы СБИС.
Отправка
Стандартная отправка в соответствии с руководством.
Сценарий:
Пользователь в привычном ему реестре документов нажимает выбирает один или несколько документов, и нажимает кнопку отправить. В результате метод отвечающий за отправку документов получает на вход список документов подлежащих отправке. Ниже перечисленные действия по отправке документов рекомендуется делать в многопоточном режиме. ИС для каждого отправляемого документа определяет какие ещё документы должны отправляться с ним в составе пакета, например для накладной или акта ищет соответствующую им счет-фактуру и/или счет. Для каждого типа документов формируется xml файл данному типу документов соответствующего формата. В результате формируется пакет документов с вложениями установленного формата. Подготовленный пакет документов загружается в личный кабинет СБИС.ЗаписатьДокумент. СБИС.ПодготовитьДействие добавляет в подготовленные файлы идентификаторы участников документооборота и другие служебные реквизиты. ИС скачивает подготовленные файлы или их хеш. Подписывает. Подписи передает в СБИС.ВыполнитьДействие.
Если команда отправить была вызвана в отношении одного документа, то вместо отправки открывается карточка просмотра электронного документа. Для этого после формирования xml файлов запрашивается их html визуализация СБИС.СформироватьHTMLИзXML. Открывается окно где можно ознакомиться с документом перед отправкой и при необходимости изменить состав вложений, например добавить в пакет не формализованный файл с диска.
В ИС необходимо реализовать:
- Добавить в реестр документов и контекстное меню кнопку Отправить, предусматривающую отправку нескольких документов.
- Добавить в реестр документов и контекстное меню кнопку открыть электронный документ.
- Добавить в реестр документов и контекстное меню кнопку открыть электронный документ на sbis.ru позволяющая пользователю перейти к просмотру данного файла в личном кабинете.
- Реализовать алгоритм определения состава пакета по базовому документу.
- Реализовать алгоритм формирования xml документа.
- Реализовать интерфейс просмотра отправляемого документа.
Важно знать, что имеется возможность не выгружать документы в формате ФНС, а выгружать xml документы в формате Тензора и конвертировать их в форматы ФНС при помощи xslt преобразований предоставленных Тензором. Это работает чуть медленнее, однако Вы избавляетесь от необходимости следить за изменениями формата и для перехода на новый формат, Вам будет лишь необходимо получить актуальное xslt преобразование. В дальнейшем в API появится возможность конвертации файлов на стороне сервера.
Обработка служебных
Стандартная в соответствии с документацией.
Сценарий:
В идеале запустить на сервере робота, который будет формировать и подписывать извещения о доставке в фоновом режиме используя техническую ЭЦП, чтобы эта процедура никак не замедляла работу пользователей. Обработка служебных в любом случае рекомендуется выполнять в многопоточном режиме. Запрашивается список документов для подписи. И каждый документ из полученного списка обрабатываются в соответствии с инструкцией в отдельном потоке. Если использование технической подписи не приемлемо, аналогичный алгоритм запускается в интерфейсе когда пользователь нажимает кнопку обновления полученных или отправленных документов.
Обработка статусов
Стандартная в соответствии с документацией. По сути ничем не отличается от обработки служебных документов
Обработка входящих
Сценарий:
В ИС показывается окно входящие аналогично интерфейсу ЛК СБИС, данные запрашиваются при помощь метода СписокДокументовПоСобытиям. Пользователь просматривает документы, принимает решение утвердить/отклонить. Синхронизирует номенклатуру. После чего выбирает документы, которые необходимо загрузить в ИС и загружает.
В ИС необходимо реализовать:
- интерфейс показывающий список входящих документов аналогично ЛК СБИС с необходимой фильтрацией (СписокДокументовПоСобытиям).
- форму просмотра входящего документа средствами API (показывается HTML представление аналогичное ЛК СБИС). (ПрочитатьДокумент по идентификатору редакции, ссылки на HTML представления на вложении)
- интерфейс синхронизации кодов номенклатуры поставщика с хранением результатов сопоставления либо в ИС либо в ЛК СБИС (документации пока нет)
- интерфейс принятия решения по входящим документам либо из списка входящих документов, либо из формы просмотра.
- Интерфейс поиска документов в ИС по их реквизитам, чтобы дать пользователю информацию о том есть данные документы в системе или нет. Отличаются ли имеющиеся документы.
- Загрузку основных типов/версий вложений.
Вариант 2. Необходимо обрабатывать документы в своей системе, на рабочей станции нет доступа в интернет (гружу все в ИС и там уже разбираюсь).
Организация хочет работать с ЭДО в своем интерфейсе и готова к значительным доработкам своей ИС. ИС сама администрирует полномочия своих пользователей и обеспечивает подписание документов нужной подписью. Доступ конечных пользователей в интернет ограничен. Поэтому весь в
Предполагается, что организация не хочет администрировать доступ в ЛК и использовать средства проверки полномочий ЭП под документами, она полностью полагается на свою систему. С этой целью, возможно закрытие доступа конечным пользователям в ЛК СБИС, а доступ оставляется только у администраторов и служебных учетных записей под которыми работает ИС.
Отправка
Сценарий:
При нажатии кнопки отправить, ИС подготавливает и подписывает документы, помещает их в очередь на отправку. Учитывая, что подготовленный пакет документов должен перед отправкой хранится в какой-то очереди, а также предполагается, что хочет хранить архив электронных документов. В этом случае рекомендуется для этих целей использовать те же «буферные таблицы», что и для входящих документов (описано ниже).
Обработка служебных
Стандартная в соответствии с документацией.
Алгоритм для систем доверяющим СБИС в части подготовки служебных документов:
- В отдельном потоке через интервал настроенный в интеграционном решении вызывается метод «СБИС.СписокСлужебныхЭтапов». В результате получаем список событий для обработки.
- Полученные события обрабатываем в цикле. Каждое событие (объект Документ) будет всегда содержать информацию о единственно возможном этапе и действии. Поэтому перебирать этапы и действия смысла нет, можно всегда безусловно брать первый элемент массива.
- По каждому событию вызывается метод СБИС.ПодготовитьДействие. Проще всего параметры данного метода сгенерировать на основе записи события, дополняем информацией о подписанте, и переопределяем Этап и Действие взяв за основу их единственный элемент.
- Подписываем файлы вложения.
- Вызываем метод СБИС.ВыполнитьДействие передавая туда только подписи под документами (т.к. сами файлы уже сгенерированы при подготовке действия).
Обработка статусов
Стандартная в соответствии с документацией.
Обработка входящих
Сценарий:
ИС должна забирать себе все редакции входящих документов и обрабатывать их как отдельные пакеты. Предполагается, что эти данные не имеют ничего общего с бухгалтерскими документами которые создаются на их основании, а для хранения этих документов в системе создаются новые «буферные» таблицы в которых содержаться все информация о входящих документах: реквизиты документа, реквизиты вложений, реквизиты подписей под вложениями, сами файлы вложений, сами подписи, PDF представления вложений.
Пользователь работает только с этими буферными таблицами, где повторяются все возможности ЛК СБИС – просмотр списка документов, просмотр карточки документа, принятие решения, синхронизация номенклатуры, поиск уже имеющихся в ИС документов по реквизитам.
По смыслу эти буферные таблицы являются электронным архивом.
Для наиболее полной реализации рекомендуется следующая структуру буферных таблиц.
Список необходимых доработок:
- интерфейс показывающий список входящих документов аналогично ЛК СБИС с необходимой фильтрацией.
- форму просмотра входящего документа (показывается PDF представление загруженное из ЛК СБИС).
- интерфейс синхронизации кодов номенклатуры поставщика с хранением результатов сопоставления либо в ИС либо в ЛК СБИС.
- интерфейс принятия решения по входящим документам либо из списка входящих документов, либо из формы просмотра.
- Обработку отозванных Отправителем документов. Если до утверждения документов ИС получает событие удаления документов Отправителем, то обработку таких документов необходимо прервать.
- Интерфейс работы с аннулированием документов.
- Интерфейс поиска документов в ИС по их реквизитам, чтобы дать пользователю информацию о том есть данные документы в системе или нет. Отличаются ли имеющиеся документы.
- Загрузку основных типов/версий вложений.
Алгоритм добавления записей в буферные таблицы.
- В цикле обработки результатов метода СписокИзменений отбираем:
- Непосредственно входящие пакеты ( Документ.Направление = «Входящий», Документ.Событие.Название="Получение") Далее по идентификатору редакции делаем ПрочитатьДокумент и помещаем всю информацию о пакете в буферные таблицы.
- Информацию о отзыве документа (Документ.Направление = «Входящий», Документ.Событие.Название="Уведомление об удалении на стороне отправителя"). Это означает что до того как Вы приняли документ пользователь его успел отозвать и прием такого документа не возможен. ИС должна найти в буферных таблицах такой документ и прервать его обработку (удалить/ проставить флаг/ запустить какую-то регламентированную компанией процедуру).
- Запрос на аннулирование (Документ.Направление = «Входящий», Документ.Событие.Название="Получение соглашения об аннулировании"). Добавляем в буферную таблицу аналогично п.1.1.
Алгоритм принятия решения по входящему документу / запросу на аннулирование из буферных таблиц:
- Определяемся с решением, а также с ФИО которое в этом решении будет фигурировать.
- Вызываем метод «СБИС.ПодготовитьДействие» (Утвердить, Отклонить, Документ аннулирован, Аннулирование отклонено) в зависимости от принятого решения, передаем методу ФИО подписанта который будет фигурировать в решении (подписей может быть много, а по формату некоторых документов он может быть только один). Предполагается, что организация использует стандартный регламент, поэтому запрашивать доступные варианты нет смысла. Если попытаться выполнить утверждение над уже утвержденным документом – вернутся ошибка.
- В ответ получаем документы которые необходимо подписать для его выполнения. Сохраняем их в буферных таблицах (вложения привязанные к текущему событию – либо можно создать отдельное событие по названию решения).
- Подписываем вложения выбранным сертификатом. Если нужно провести согласования, то по мере его проведения добавляем под этими вложениями подписи.
- После последнего согласования. Вызываем метод «СБИС.ВыполнитьДействие», передавая в него все прикрепленные к нашему событию файлы и подписи.
Вариант 3. Необходим максимально простой вариант, клиент готов работать в личном кабинете СБИС.
Имеет смысл рассмотреть вариант использования СБИС Коннект. Это будет принципиально проще и с тем же результатом. Исключение составляют не Windows платформы.
Отправка
Стандартная отправка в соответствии с руководством.
Сценарий:
Пользователь в привычном ему реестре документов нажимает выбирает один или несколько документов, и нажимает кнопку отправить. В результате метод отвечающий за отправку документов получает на вход список документов подлежащих отправке. Ниже перечисленные действия по отправке документов рекомендуется делать в многопоточном режиме. ИС для каждого отправляемого документа определяет какие ещё документы должны отправляться с ним в составе пакета, например для накладной или акта ищет соответствующую им счет-фактуру и/или счет. Для каждого типа документов формируется xml файл данному типу документов соответствующего формата. В результате формируется пакет документов с вложениями установленного формата. Подготовленный пакет документов загружается в личный кабинет СБИС.ЗаписатьДокумент. СБИС.ПодготовитьДействие добавляет в подготовленные файлы идентификаторы участников документооборота и другие служебные реквизиты. ИС скачивает подготовленные файлы или их хеш. Подписывает. Подписи передает в СБИС.ВыполнитьДействие.
Обработка служебных
Не реализуется - Пользователь работает в ЛК СБИС который формирует все необходимые служебные документы.
Обработка статусов
Не реализуется - Пользователь отслеживает в ЛК СБИС отклоненные или не доставленные документы и принимает соответствующие меры.
Обработка входящих
Не реализуется - Пользователь просматривает и принимает решение по входящим документам в ЛК СБИС.
Загрузка утвержденных входящих
В ИС автоматически загружаются только утвержденные документы.
Сценарий:
На стороне ИС реализован метод, который получает список событий из ЛК. Обрабатывается только событие После утверждения ИС автоматически загружает все утвержденные документы (перед загрузкой в ИС ищутся документы по реквизитам, если не находятся то создаются новые, если находятся то перезаписываются – прорабатывается вопрос как такие документы в системе потом находить и проводить).
Алгоритм загрузки утвержденных входящих:
- В цикле обработки результатов метода СписокИзменений отбираем только события, у которых:
- Документ.Направление = «Входящий»
- Документ.Событие.Название = «Уведомление о приеме»
- По полученному списку вызываем по идентификатору редакции метод ПрочитатьДокумент.
- Загружаем в систему вложения из раздела «ВложенияУчета» (данные вложения при запросе сгенерируются на лету по данным ЛК СБИС – с распознанной номенклатурой).