Где найти данные регламентированной отчетности в 1С:Бухгалтерия предприятия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

При работе с конфигурацией «1С:Бухгалтерия предприятия 3.0» (БП3) разработчики часто сталкиваются с задачей программного извлечения данных из ранее заполненных регламентированных отчетов (деклараций по НДС, прибыли, бухгалтерского баланса и др.). Попытка найти эти данные в обычных табличных частях документа часто заканчивается неудачей. Давайте разберем, как устроена эта подсистема, проанализируем структуру хранения и выясним, почему архитектура системы кажется «извращенной» на первый взгляд.

Основной объект метаданных: Документ РегламентированныйОтчет

Первым делом рассмотрим объект Документ.РегламентированныйОтчет. Именно в нем регистрируется сам факт создания отчета. Если мы откроем список документов в интерфейсе «1С-Отчетность», каждая строка будет соответствовать экземпляру этого документа. Однако, проанализировав состав реквизитов документа, мы увидим следующее:

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

ХранилищеЗначений — где спрятаны цифры

Проанализируем реквизит ДанныеОтчета. Он имеет тип ХранилищеЗначений. Рассмотрим подробнее, что это означает для программиста:

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

Чтобы получить доступ к этим значениям, нам необходимо программно извлечь их из хранилища. Разберем пример кода, как это может выглядеть в общем виде:


// Получаем объект документа по ссылке
ДокументОбъект = СсылкаНаОтчет.ПолучитьОбъект();

// Извлекаем данные из хранилища
СтруктураДанных = ДокументОбъект.ДанныеОтчета.Получить();

Если ТипЗнч(СтруктураДанных) = Тип("Структура") Тогда
    // Далее работаем с распакованными данными
    // Структура обычно содержит таблицы значений с показателями
КонецЕсли;

Регистр сведений АрхивРегламентированныхОтчетов

Посмотрим на ситуацию с точки зрения обмена данными с государственными органами. Когда отчет отправляется через сервис «1С-Отчетность», система генерирует финальный XML-файл. Эти файлы зачастую не хранятся в самом документе. Проанализируем роль регистра сведений АрхивРегламентированныхОтчетов.

В этом регистре хранятся:

  1. Транспортные контейнеры обмена.
  2. Подтверждения от операторов и контролирующих органов.
  3. Сами файлы выгрузки в формате XML.

Если ваша задача — получить именно тот файл, который был отправлен в ФНС, вам следует обратиться к измерениям Объект (ссылка на документ) и ИмяФайла в этом регистре.

Справочник РегламентированныеОтчеты и внешние формы

Выясним, как система понимает, какую форму открывать для конкретного документа. Существует справочник РегламентированныеОтчеты. В нем хранится описание видов отчетов и ссылки на метаданные (встроенные обработки) или внешние файлы.

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

Электронные представления и очередь отправки

Проанализируем дополнительные механизмы хранения, связанные с электронным документооборотом (ЭДО). Для отслеживания статусов и хранения копий используются следующие регистры:

Подведем итоги

Разберем краткий алгоритм действий для разработчика, которому нужно найти данные отчетности:

  1. Найти ссылку на нужный документ через Документы.РегламентированныйОтчет по реквизитам Организация и Период.
  2. Прочитать реквизит ДанныеОтчета (тип ХранилищеЗначений) и десериализовать его методом Получить().
  3. Если нужны файлы выгрузки, обратиться к РегиструСведений.АрхивРегламентированныхОтчетов.
  4. Для определения алгоритмов заполнения изучить справочник РегламентированныеОтчеты.

Таким образом, архитектура хранения данных в БП3 продиктована необходимостью гибкости и поддержки множества постоянно меняющихся форм. Хотя это исключает возможность легкого построения консолидированных отчетов через SQL-запросы, это позволяет системе 1С оперативно обновлять формы отчетности без изменения структуры базы данных.

← На главную