При доработке отчетов на базе системы компоновки данных (СКД) разработчики часто сталкиваются с ситуацией: в схему компоновки добавлено вычисляемое поле, оно выбрано в настройках отчета, однако после формирования отчета соответствующая колонка на экране так и не появляется. Проанализируем причины такого поведения платформы 1С и рассмотрим пошаговые варианты решения задачи.
Рассмотрим, почему вычисляемое поле может «теряться» при выводе отчета:
1С:Бухгалтерия предприятия) сложные отчеты строится не чисто интерактивно по схеме СКД, а программно. В модуле менеджера или модуле объекта отчета прописан код, который переопределяет текст запроса, структуру группировок и список выводимых полей. Из-за этого поля, внесенные только через визуальный редактор СКД, просто игнорируются кодом.Выясним, как поступить, если отчет формируется программно. Если вы добавляете колонки в отчет вроде «Задолженность покупателей по срокам долга», необходимо внести изменения не только в схему СКД, но и в программный модуль, отвечающий за сборку отчета.
Разберем порядок действий:
ПриКомпоновкеРезультата или специальные функции формирования запроса).Пример перехвата компоновки в модуле объекта:
Процедура ПриКомпоновкеРезультата(ИзмерительОтчета, СхемаКомпоновкиДанных, Настройки, ИсполняемаяСхема)
// Включаем или корректируем вывод созданного поля в настройках компоновщика
ПолеСрокОплаты = Новый КомпоновкаДанныхПоле("СрокОплаты");
// Дополнительная программная обработка параметров или текста запроса
КонецПроцедуры
Если код отчета не формирует колонки динамически, а проблема связана с сохраненным кэшем, необходимо сбросить настройки отчета к первоначальным:
Проанализируем ситуацию, когда в вычисляемом поле требуется рассчитать сложное значение, например, дату предполагаемой оплаты на основе даты документа и срока из договора.
Если для расчета вычисляемого поля используется функция общего модуля, модуль должен быть экспортным и с установленными флагами вызова. В выражении вычисляемого поля синтаксис вызова выглядит следующим образом:
ИмяМодуляСервер.РассчитатьДатуОплаты(Документ.Дата, Договор.СрокОплаты)
Обратите внимание: в выражениях вычисляемых полей СКД нельзя обращаться к другим вычисляемым полям. Кроме того, вычисляемые поля без настроенных ресурсов отображаются только на уровне детальных записей (записей нижнего уровня).
Чтобы сохранить типовую конфигурацию на поддержке при добавлении вычисляемых полей в отчеты:
ПриКомпоновкеРезультата в расширении с помощью аннотации &Вместе или &После..erf), внесите правки в модуль и схему, после чего подключите его через справочник «Дополнительные отчеты и обработки».