Как настроить автоматическую выгрузку XML-файлов сданной отчетности из СБИС через API?

Программист 1С v8.3 (Управляемые формы) Налоговый учет IT и автоматизация бизнеса
← На главную

При работе с большим количеством обособленных подразделений бухгалтерия часто сталкивается с проблемой массовой выгрузки сданной отчетности. В интерфейсе СБИС-онлайн стандартные средства позволяют либо выгружать отчеты по одному, либо скачивать огромный архив, содержащий избыточную информацию (подписи, служебные файлы, протоколы). Для автоматизации процесса получения «чистых» XML-файлов, например, по форме 6-НДФЛ, целесообразно использовать возможности JSON-RPC API СБИС. Рассмотрим подробно, как реализовать этот механизм в 1С.

Общая архитектура решения через API

СБИС предоставляет программный интерфейс, который позволяет взаимодействовать с разделом «Госорганы» (Электронная отчетность). Для решения задачи нам не подходят методы обычного ЭДО (электронного документооборота с контрагентами). Мы будем использовать специализированные методы для работы с регламентированной отчетностью. Процесс взаимодействия в 1С можно разделить на четыре ключевых этапа: авторизация, поиск нужных отчетов по фильтрам, получение метаданных документа и, наконец, выгрузка самого XML-файла.

Этап 1: Авторизация и получение сессионного ключа

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

Разберем пример формирования запроса для получения сессии:


// Создаем структуру запроса
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("jsonrpc", "2.0");
СтруктураЗапроса.Вставить("method", "СБИС.Аутентифицировать");
ПараметрыАут = Новый Структура;
ПараметрыАут.Вставить("Логин", "ВашЛогин");
ПараметрыАут.Вставить("Пароль", "ВашПароль");
СтруктураЗапроса.Вставить("params", ПараметрыАут);
СтруктураЗапроса.Вставить("id", 1);

// Преобразуем в JSON и отправляем через HTTPСоединение
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса);
СтрокаЗапроса = ЗаписьJSON.Закрыть();

// После выполнения запроса получаем SID (Session ID)
// SID используется в заголовке X-SBISSessionID для всех последующих вызовов

Этап 2: Поиск сданных отчетов 6-НДФЛ

Когда у нас есть активная сессия, мы можем приступить к поиску конкретных документов. Для этого используется метод Отчетность.СписокОтчетов (или аналогичные методы из раздела интеграции с госорганами). Важно правильно настроить фильтрацию, чтобы не скачивать лишние данные. Нам потребуются следующие параметры:

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

Этап 3: Выгрузка XML-файла из документа

Каждый отчет в СБИС — это пакет документов. В нем может содержаться сам XML отчета, файл подписи, квитанция о приеме, извещение о получении и протокол проверки. Наша задача — вытащить именно основной файл. Для этого используется метод Документ.Выгрузить или СБИС.СписокВложений.

Выясним причину, по которой иногда сложно найти нужный файл: в одном документе может быть несколько редакций (корректировок). Выясним, как выбрать последнюю. В ответе API каждый файл имеет атрибут типа. Нам нужен файл с расширением .xml, чье имя соответствует маске ФНС для данного вида отчетности.

Пример получения контента файла в Base64 и его сохранение:


// Получаем структуру файла из API
ДанныеФайла = ОтветAPI.Result.Файл; // Условный путь в структуре ответа
ДвоичныеДанные = Base64Значение(ДанныеФайла.Контент);

// Сохраняем файл на диск
ДвоичныеДанные.Записать("C:\Reports\Report_6NDFL.xml");

Нюансы работы с корректировками и изменениями

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

Рекомендации по настройке в 1С

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

  1. Настройку подключения: Хранение логина, пароля и идентификатора информационной системы (AppKey), если это требуется вашей лицензией СБИС.
  2. Выбор периода: Поля «Дата начала» и «Дата окончания».
  3. Табличную часть: Список найденных в СБИС отчетов с возможностью отметить «галками» те, которые нужно скачать.
  4. Путь выгрузки: Директория, куда будут складываться XML-файлы.

Важный момент по лицензированию: Для доступа к методам API отчетности в СБИС должна быть подключена соответствующая лицензия (например, «Интеграция с корпоративными системами» или расширенный пакет «API для госорганов»). Если лицензии нет, методы будут возвращать ошибку прав доступа, даже при верном логине и пароле.

Советы по взаимодействию с техподдержкой

Если при реализации возникают сложности с конкретными именами методов или структурой JSON, при обращении в поддержку СБИС просите соединить вас с отделом технической интеграции API. Обычные операторы линии консультаций работают с интерфейсом пользователя и могут не знать о существовании JSON-RPC. Четко формулируйте запрос: «Интеграция через JSON-RPC API, получение списка сданных документов из раздела отчетности в госорганы». Для анализа ответов и генерации кода по структурам данных подойдёт инструмент для валидации и форматирования JSON в 1С.

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

← На главную