Где находится макет "Отчет о финансовых результатах" в конфигураторе 1С?

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

При работе с механизмами регламентированной отчетности в программных продуктах «1С:Предприятие» (в частности, в конфигурации «1С:Бухгалтерия предприятия») разработчики часто сталкиваются с задачей кастомизации или анализа алгоритмов заполнения бухгалтерского баланса и сопутствующих форм. Однако попытка найти макет под прямым названием "Отчет о финансовых результатах" (ОФР) в дереве метаданных отчета РегламентированныйОтчетБухОтчетность часто заходит в тупик. В этой статье мы подробно разберем, по какому принципу устроено хранение этих макетов, где именно они находятся в конфигураторе и как функционирует механизм их программного заполнения.

Выясняем причину: историческое наследие наименований

Для того чтобы понять, почему макет отсутствует под своим привычным именем, нам необходимо обратиться к истории законодательства. Финансовый отчет, который сегодня повсеместно называется «Отчет о финансовых результатах», до 2013 года официально именовался как «Отчет о прибылях и убытках» (ОПУ). Согласно общероссийскому классификатору управленческой документации, данная форма имеет код ОКУД 0710002.

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

Пошаговый поиск макета в конфигураторе

Рассмотрим процесс поиска актуального макета в дереве метаданных конфигурации по шагам:

  1. Откроем конфигуратор вашей информационной базы и перейдем в ветку Отчеты.
  2. Найдем основной объект, отвечающий за составление бухгалтерской отчетности — отчет РегламентированныйОтчетБухОтчетность.
  3. Раскроем ветку Макеты данного отчета.
  4. Вместо поиска подстроки "ОФР", обратим внимание на макеты, содержащие в названии _ОПУ.

Проанализировав состав макетов, мы увидим, что в системе нет одного универсального макета. Бухгалтерская отчетность жестко привязана к периодам действия редакций законов Минфина. Для каждого существенного изменения законодательства создается свой набор макетов. Например, мы можем встретить следующие варианты:

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

Как система определяет, какой макет вызвать?

Выясним, каким образом программный код определяет, какую именно форму и макет показать пользователю при формировании отчета за определенный период. Вся логика версионирования сосредоточена в модуле менеджера отчета РегламентированныйОтчетБухОтчетность.

Внутри этого модуля расположена экспортная функция ТаблицаФормОтчета(). Она возвращает таблицу значений, в которой сопоставляются периоды действия (даты начала и окончания) и соответствующие им имена экранных форм (например, ФормаОтчета2019Кв1). Каждая такая экранная форма содержит в своем собственном подчиненном дереве макетов те самые печатные бланки (в формате табличных документов .mxl), которые выводятся на экран и на печать.

Логика заполнения показателей в коде

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

Основной сбор данных и расчет остатков/оборотов по счетам происходит в общем модуле ЗаполнениеБухгалтерскойОтчетности. Точкой входа для заполнения всех разделов баланса является процедура ЗаполнитьБухотчетность.

Для инициализации процесса заполнения конкретно Отчета о финансовых результатах используется контекст выполнения. Посмотрим на пример кода, который подготавливает параметры и вызывает процедуру заполнения формы:


// Пример инициализации параметров и заполнения ОФР
Если ЗаполнятьОФР Тогда 
    КонтекстВыполнения.Вставить("НачалоПериодаОтчета", ДатаНачалаПериодаОтчета); 
    КонтекстВыполнения.Вставить("КонецПериодаОтчета", ДатаКонцаПериодаОтчета); 
    КонтекстВыполнения.Вставить("СоставДополнительныхСтрокОПУ", ПараметрыОтчета.СоставДополнительныхСтрокОПУ); 
    КонтекстВыполнения.Вставить("ПрименениеЕНВД", ПараметрыОтчета.ПрименениеЕНВД); 
    КонтекстВыполнения.Вставить("ОрганизацияПрименяетЕНВД", УчетнаяПолитика.ПлательщикЕНВД(Организация, ДатаКонцаПериодаОтчета)); 
    КонтекстВыполнения.Вставить("ОрганизацияПрименяетПБУ18", РегламентированнаяОтчетностьПереопределяемый.ПрименяетсяПБУ18(Организация, ДатаКонцаПериодаОтчета)); 
    
    // Непосредственный вызов процедуры заполнения показателей ОФР
    ЗаполнитьОтчетБухОтчетностьФормаОтчета2011Кв4_ОФР(КонтекстВыполнения); 
КонецЕсли;

Низкоуровневые запросы к виртуальным таблицам итогов (бухгалтерским регистрам) для расчета конкретных строк отчета (таких как «Выручка», «Себестоимость продаж», «Коммерческие расходы») выполняются в служебном общем модуле ЗаполнениеБухгалтерскойОтчетностиИтоги. Программа собирает дебетовые и кредитовые обороты по соответствующим субсчетам учета доходов и расходов (счета 90, 91, 99).

Что делать, если макет отсутствует в конфигураторе?

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

Фирма «1С» оперативно реагирует на изменения законодательства и часто выпускает обновления регламентированной отчетности до выхода общего релиза конфигурации. В таких случаях новые формы и макеты поставляются в виде внешних регламентированных отчетов (файлов с расширением .erf).

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

  1. Найти нужную запись в режиме «1С:Предприятие» через справочник дополнительных файлов отчетности.
  2. Выгрузить двоичные данные внешнего отчета на диск в формате .erf.
  3. Открыть полученный файл в конфигураторе как внешнюю обработку.
  4. Внести необходимые изменения в макеты и программный код обработки.
  5. Загрузить обновленный файл обратно в базу данных, заместив старую версию.

Важная рекомендация по изменению типовых макетов

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

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

← На главную