При настройке стандартных отчетов в типовых конфигурациях (1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей) в поле Заголовок на вкладке Другие настройки можно встретить конструкции вида %ВалютаОтчета%. При этом в списке параметров данных СКД такой параметр отсутствует, а попытка прописать туда имя реального параметра СКД (например, Валюта или Период) не дает никакого результата — текст выводится как есть. Разберем по шагам, как устроен этот механизм и какими способами можно реализовать динамические заголовки в СКД.
Проанализируем поведение платформы и типовых конфигураций:
%ВалютаОтчета% — это специальный текстовый маркер, внедренный разработчиками типовых конфигураций. При формировании отчета срабатывает процедура общего модуля (например, функция СтруктураЗаголовковВалют), которая находит в тексте заголовка данную подстроку и заменяет ее на фактическое наименование выбранной валюты (регламентированной, управленческой или валюты взаиморасчетов).%МойПараметр% или [Валюта], алгоритм его проигнорирует, и строка останется без изменений.Рассмотрим универсальный способ создания динамического заголовка с любыми параметрами схемы без написания программного кода. Разберем по шагам:
ШапкаОтчета.ШапкаОтчета и тип макета Заголовок.Задолженность клиентов на дату [Период] в валюте [Валюта].ДФ=dd.MM.yyyy).Если требуется вычислить заголовок по сложной бизнес-логике или динамически переопределить стандартный параметр вывода Title перед формированием, используем обработчик ПриКомпоновкеРезультата в модуле объекта отчета.
Посмотрим на пример кода, позволяющего динамически изменить системный заголовок:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Получаем текущее значение параметра из настроек
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Валюта"));
Если ЗначениеПараметра <> Неопределено И ЗначениеПараметра.Использование Тогда
ТекстВалюты = Строка(ЗначениеПараметра.Значение);
Иначе
ТекстВалюты = "Все валюты";
КонецЕсли;
// Переопределяем заголовок в параметрах вывода
ЭлементЗаголовок = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("Title");
Если ЭлементЗаголовок <> Неопределено Тогда
ЭлементЗаголовок.Значение = "Задолженность клиентов по срокам (" + ТекстВалюты + ")";
ЭлементЗаголовок.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Рассмотренный подход позволяет гибко настраивать шапку отчета под любые требования, не ограничиваясь предопределенными макросами типовой конфигурации.