Почему в отчете на СКД не отображается добавленное вычисляемое поле

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

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

1. Программное формирование отчета в модуле менеджера

Рассмотрим основную причину такого поведения. Большинство типовых отчетов на базе Библиотеки стандартных подсистем (БСП), таких как «Задолженность покупателей по срокам долга», строятся не типовым механизмом СКД напрямую, а программно. В модуле менеджера или модуле объекта отчета выполняется сложная логика компоновки:

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

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

2. Кэширование пользовательских настроек (Хранилище вариантов)

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

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

  1. Откроем форму отчета в режиме «1С:Предприятие».
  2. Перейдем в меню Еще (или кнопку «Настройки»).
  3. Выберем пункт Стандартные настройки (или «Сбросить настройки»).

3. Настройка расположения вычисляемого поля и агрегатных функций

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

  1. Вывод в детальных записях: поле без агрегатных функций может отображаться только на уровне детальных записей либо в группировке самого нижнего уровня.
  2. Использование в ресурсах: если требуется вывести значение поля на уровне группировок (например, контрагента или договора), необходимо перейти на вкладку Ресурсы и задать выражение агрегации, например Максимум(СрокОплаты) или Сумма(ДнейПросрочено).
  3. Расположение дополнительного поля: если поле добавляется в список «Дополнительные поля» конкретной группировки, обратим внимание на свойство Расположение. По умолчанию часто установлено значение «Вместе» (значение выводится в одной строке через запятую). Чтобы поле выводилось в отдельную колонку, переключим свойство в значение Отдельно.

4. Варианты корректной доработки типового отчета

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

Вариант А. Использование механизма расширений (рекомендуемый подход)

Добавим типовой отчет в расширение конфигурации. В расширении можно:

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

Вариант Б. Создание внешнего отчета

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

Для корректного функционирования внешнего отчета необходимо:

  1. Добавить в модуль объекта функцию СведенияОВнешнейОбработке() в соответствии со стандартами БСП для интеграции с подсистемой «Дополнительные отчеты и обработки».
  2. Перенести логику инициализации и постобработки из модуля менеджера в модуль объекта отчета.
  3. Заменить прямые обращения к менеджеру отчета конфигурации на методы внешнего отчета.
← На главную