Как вывести дополнительные реквизиты документа-регистратора в стандартных отчетах 1С:Бухгалтерии 3.0?

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

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

Вместе разберемся, почему так происходит, как устроен механизм характеристик в Системе Компоновки Данных (СКД) и какие шаги необходимо предпринять, чтобы пользовательские поля стали доступны для отборов и группировок в отчетах.

Понимание проблемы: почему стандартный отчет "не видит" наши реквизиты?

Давайте проанализируем архитектуру. В типовых конфигурациях на базе БСП механизм дополнительных реквизитов и сведений реализован через Планы Видов Характеристик (ПВХ) и соответствующие табличные части в объектах или регистры сведений.

Когда мы открываем настройки стандартного отчета (например, "Карточка счета") и пытаемся добавить поле из группы Регистратор, мы ожидаем увидеть там наши Доп. реквизиты. Однако их там часто нет. Этому есть две основные причины, которые мы подробно разберем:

  1. Составной тип данных поля "Регистратор". В регистре бухгалтерии поле регистратор может содержать сотни разных типов документов. СКД не может автоматически построить дерево характеристик для поля составного типа, если не заданы явные связи.
  2. Отсутствие регистрации нового документа в подсистеме свойств. Если вы создали свой документ, система БСП еще не "знает", что он поддерживает механизм дополнительных реквизитов.

Теперь давайте перейдем к пошаговому решению этой задачи.

Шаг 1. Правильная настройка метаданных нового документа

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

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

  1. Найдем План Видов Характеристик ДополнительныеРеквизитыИСведения. Нам необходимо включить наш новый документ в тип значений этого ПВХ. Это позволит создавать настройки свойств для данного объекта в режиме "1С:Предприятие".
  2. В сам документ добавим табличную часть ДополнительныеРеквизиты. Она должна содержать реквизиты, аналогичные тем, что есть в других документах (обычно это Свойство и Значение).
  3. В модуле менеджера или объекта документа (в зависимости от версии БСП) необходимо прописать код инициализации свойств. Обычно это вызовы процедур общего модуля УправлениеСвойствами.

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


#Область ПрограммныйИнтерфейс

// Заполняет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - ТаблицаЗначений - перечень команд
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании) Экспорт
    // Код заполнения...
КонецПроцедуры

// Настройки подсистемы "Управление свойствами".
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
    УправлениеСвойствамиПереопределяемый.ПриПолученииНастроек(Настройки);
КонецПроцедуры

#КонецОбласти

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

Шаг 2. Особенности хранения: Реквизиты против Сведений

Важно различать Дополнительные реквизиты и Дополнительные сведения. Это критично для производительности отчетов.

Дополнительные реквизиты хранятся непосредственно в документе (в той самой табличной части, которую мы добавили). При построении отчета данные берутся прямо из объекта, что относительно быстро.

Дополнительные сведения хранятся в отдельном регистре сведений. Чтобы вывести их в отчете через поле Регистратор, системе придется делать левое соединение (Left Join) регистра бухгалтерии с регистром сведений для каждой строки. На больших объемах данных (например, карточка счета за год) это может вызвать существенные "тормоза".

Рекомендация: Если вам нужно выводить данные в стандартные отчеты и делать по ним отборы, используйте именно Дополнительные реквизиты.

Шаг 3. Настройка СКД через Расширения конфигурации

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

Посмотрим, как решить это наиболее современным способом — с помощью Расширений конфигурации (Extensions).

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

В заимствованной схеме компоновки данных обратим внимание на вкладку "Характеристики". Именно здесь задается правило, по которому СКД понимает, откуда брать дополнительные поля.

Чтобы наш новый документ "подхватился", нам нужно либо:

  1. Убедиться, что в настройках характеристик для поля Регистратор не стоит жестких ограничений по типам.
  2. Либо (что надежнее) добавить собственное поле в набор данных отчета, которое будет типизировано именно нашим документом.

Рассмотрим вариант явного указания характеристик. В СКД есть механизм, позволяющий указать:

Если в типовой схеме это настроено через общий механизм, то проблема может быть в том, что поле Регистратор в запросе СКД не имеет явной типизации. Мы можем попробовать использовать синтаксис ВЫРАЗИТЬ(Регистратор КАК Документ.НашНовыйДокумент).Ссылка как отдельное поле, и тогда для этого поля характеристики подтянутся автоматически.

Альтернативное решение: Универсальный отчет

Если задача стоит "просто посмотреть данные" или "быстро сделать выборку", и нет ресурсов на программирование расширений, воспользуемся мощным инструментом пользователя — Универсальным отчетом.

Это штатный отчет, который умеет строить данные по любым объектам метаданных. Давайте настроим его для нашего случая:

  1. Откроем раздел "Отчеты" -> "Универсальный отчет".
  2. В типе объекта выберем "Документ".
  3. В поле вида объекта выберем наш новый документ.
  4. Нажмем кнопку "Настройки".

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

Мы можем:

Однако этот способ не покажет бухгалтерские проводки (Дт/Кт) в едином контексте с остатками, как это делает Карточка счета.

Нюансы программного формирования отчетов в БП 3.0

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

Если вы добавили доп. реквизиты, но они не появляются в панели настроек, возможно, проблема кроется в коде инициализации отчета. В таких случаях мы можем использовать механизм переопределения.

Посмотрим на пример логики, которая может потребоваться в модуле объекта нашего документа или в расширении общего модуля, чтобы "подсказать" отчету о наличии свойств:


// Примерный псевдокод для расширения
// Добавляем наш документ в массив типов, для которых доступны свойства
Процедура Расш_ПриОпределенииОбъектовСДопРеквизитами(Объекты)
    Объекты.Добавить(Тип("Документ.НашСпециальныйДокумент"));
КонецПроцедуры

Это обеспечивает глобальную видимость свойств документа для подсистем БСП.

Резюме

Для успешного использования дополнительных реквизитов нового документа-регистратора в стандартных отчетах:

  1. База: Документ должен быть корректно внедрен в подсистему свойств БСП (ПВХ, табличная часть, модуль менеджера).
  2. Контекст: Помните, что в бухгалтерских регистрах поле Регистратор имеет составной тип. СКД с трудом "раскручивает" свойства составных типов.
  3. Решение: Используйте расширение конфигурации для доработки схемы компоновки данных (СКД) стандартного отчета, чтобы явно указать связи характеристик, или используйте "Универсальный отчет" для оперативных задач.

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

← На главную