Инструкция об особенностях интеграции с API Saby

Введение

Наша команда занимается разработкой приложения Tardis (MCOB. Управление бухгалтерией). Приложение используется компаниями уполномоченных бухгалтерий для управления и комплексного взаимодействия c базами 1С, в которых ведется бухгалтерский учет по обслуживаемым организациям.

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

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

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

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

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

1. Получение регламентированных отчетов

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

Сначала попробовали метод API отчетности Saby.СписокИзменений https://saby.ru/help/integration/api/reporting/commands/list_change

Но этот метод возвращал только документы ЭДО (счета, реализации, акты). Даже если установить параметр запроса ТолькоОтчетность=Да, как рекомендовала техподдержка Saby, регламентированные отчеты получить не удавалось.

Поэтому попробовали использовать метод Saby.СписокДокументов https://saby.ru/help/integration/api/all_methods/list_doc , хотя техподдержка Saby не всегда признает существование этого метода для отчетности

article-image

Для получения именно отчетов нашли способ — указывать в параметре Тип=ОтчетФНС или ОтчетПФР, хотя в документации данные типы документов не указаны https://saby.ru/help/integration/catalog/guide#1

И техподдержка Saby считает, что данные типы использовать нельзя

article-image

Тем не менее, таким способом нам удалось получать статусы по всем видам отчетов.

2. Получение Требований ФНС

В АПИ ЭДО Saby мы не нашли метода, возвращающего список документов такого типа.

Изначально, мы пробовали получить Требования методом Saby.СписокДокументов, но документы такого типа данным методом не возвращаются.

article-image

Однако, удалось получить новые Требования методом Saby.СписокСлужебныхЭтаповhttps://saby.ru/help/integration/api/all_methods/stage_doc

и получить данные документа методом Saby.ПрочитатьДокументhttps://saby.ru/help/integration/api/all_methods/read_doc

article-image

Выяснилась неприятная особенность. Метод Saby.СписокСлужебныхЭтапов с фильтром ТолькоОтчетность=Да получает только первичное появление статуса по Требованию.

Но если пользователь в кабинете Saby откроет данный документ, то информация о появлении Требования перестает попадать в ответ запроса этим методом.

Поэтому для получения, уже прочитанных пользователями Требований, обратились за помощью в поддержку Saby, которая сначала ответила, что Требования получить никак нельзя.

article-image

Но позже прислала письмо с разъяснениями, что нужно использовать метод Saby.СписокИзменений с параметром Тип=ИстребованиеФНС.

Данный способ полностью решил нашу проблему.

Следует отметить, при тестах выполнения запросов в Postman легко не заметить, что запрос возвращает несколько объектов внутри массива “Документ”

article-image

Хотя при чтении ответа средствами 1С содержимое массива отображается корректно и полностью.

article-image

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

article-image

3. Получатели и Доверители

К сожалению, скрины к данному описанию нет возможности разместить из-за требований конфиденциальности.

Учетная запись Sabyоформляется на одну организацию по ИНН/КПП. При этом в учетной записи документооборот может происходить по нескольким организациям (если позволяет тариф).

Когда мы пытались получить Требования по организациям одного из аккаунтов Saby , обнаружили, что по некоторым организациям Требования есть в личном кабинете, но отсутствуют в ответах API.

Метод Saby.СписокИзменений изначально выполняли по каждой организации аккаунта, подставляя в запрос их ИНН/КПП. В ответе по некоторым организациям был всегда пустой список документов.

В чем заключалась проблема? Оказывается, в Saby есть такие понятия, как:

  1. Доверитель — это организация, которая поручает другой организации получать и отправлять свои документы по ЭДО.
  2. Получатель — организация, которая получила такую доверенность от Доверителя.

В личном кабинете Saby такие Требования в отборах по Доверителюне отображаются, но они находятся среди документов Получателя

Аналогично в ответах API мы получали Требования других организаций как входящие документы, адресованные главной организации аккаунта.

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

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

У каждого События список Вложений. При участии Требования в цикле обмена у одного из вложений имя файла содержит ИНН фактической организации.

Таким непростым способом получилось идентифицировать Требования организаций Доверителей и корректно отобразить их в нашей программе.

4.Получение сверок с ФНС по задолженности

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

Выполнять запросы сверок с ФНС через API Saby нет возможности.

Но в ЛК Saby есть возможность настроить автоматическое формирование и отправку запросов сверок.

Т.е. для нас оставалось разработать поиск и парсинг уже полученных в ЛК Saby сверок.

Изначально данные сверок с ФНС получали методомSaby.СписокДокументов с параметром Тип=ЗапросФНС и последующим поиском в выборке документов, где

Направление = «Входящий» и Вложение.Подтип = «1160080» и чтением данных найденных сверок методом Saby.ПрочитатьДокумент

article-image

Оказалось, что таким способом можно получить только документы “Справка о состоянии расчетов с ФНС” по аккаунтам, у которых включена услуга «Супер-сверка»

article-image

Чтобы получать данные сверок из документов “Выписка расчетов с ФНС” без покупки дополнительных лицензий клиентами, мы разработали поиск выписок и получение данных из их содержимого.

Для этого массива документов со Справками (Тип=ЗапросФНС) мы добавили поиск Выписок. Фильтр: Документ.Примечание = НСтр(«ru=’Выписка операций по расчетам с бюджетом'», «ru») и Документ.Состояние.Код = «7»

Коды состояний документов: https://saby.ru/help/integration/api/reporting/guides#code_con

article-image

Из найденных и прочитанных документов мы получаем ссылки на сами файлы сверок.

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

5. Проверка организации в аккаунте

При выполнении всех запросов к API Saby в параметрах всегда передаются ИНН и КПП.

Иногда КПП организации меняется или организация переводится в другой аккаунт Saby

Поэтому для проверки актуальности организации в аккаунте и соответствия ИНН и КПП организации в нашей программе мы используем запрос методом Saby.СписокНашихОрганизаций.

https://saby.ru/help/integration/api/all_methods/company

6. Ограничение по количеству запросов в минуту

API Saby имеет лимит по количеству запросов к сервису равный 300 запросов в минуту.

Эту проблему решили просто. Сделали паузу 0,5 секунд перед выполнением каждого запроса. Таким образом запросов в минуту никогда не будет больше 120.

7. Формат результата разный

В процессе отладки взаимодействия с API Saby обнаружили, что в случае ошибки, ответ не всегда приходит в виде описанного в документации объекта (Структуры).

article-image

Иногда объект Error является строкой!

article-image

Это тоже необходимо учитывать при обработке ответов API Saby.

Заключение

API Saby имеет довольно обширный функционал, которым удобно пользоваться при разработке интеграций. И несмотря на пробелы в документации и поддержке, из него можно получить практические всё, что необходимо.

Ваш личный сервер 1С за 1 день

Забудьте о затратах на оборудование и лицензии. Наша инфраструктура обеспечит вам гарантию надежности и безопасности данных.

0 0 голоса
Рейтинг

4 комментария
Ранние Сортировка
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
eyku
eyku
3 года назад

Ещё нужно постоянно мониторить список нового в СБИС API
https://sbis.ru/help/integration/api/history
Там бывают приятные неожиданности.

42Clouds
42Clouds
3 года назад

Здравствуйте)
Благодарим за дополнение)

Дмитрий
Дмитрий
1 год назад

«И если параметр “ЕстьЕще” равен “Да”, то для получения следующей страницы в запросе необходимо передать идентификатор последнего документа из массива ”Документ” предыдущего запроса.»
Для получения последующих страниц есть секция «Навигация», которую можно использовать для получения последующих страниц:
«»Навигация»»: {«»Страница»»: №}
первая страница имеет номер 0
Ну а затем следует просто анализировать параметр ответа «ЕстьЕще» и организовать рекурсивный цикл.

42Clouds
42Clouds
1 год назад

Здравствуйте!
Благодарим за дополнение.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных

С наступающим Новым Годом!

У вас 0

Упс… Кажется, не хватает снежинок.
Лови больше снежинок на сайте.

Снеговик

1С в облаке
— это не страшно!

Инструкция об особенностях интеграции с API Saby - 42CLOUDS

Нажимая на кнопку, Вы даете согласие на обработку персональных данных

Оставьте отзыв о нас

Расскажите, как сервис 42Clouds помог вашему бизнесу.

Отзыв будет опубликован после проверки модератором.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных