Как в отчете на СКД динамически изменить заголовок ресурса в зависимости от выбранной валюты?

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

При разработке отчетов в 1С (например, в «1С:Комплексная автоматизация» или «1С:ERP») часто возникает задача динамически отображать в шапке отчета выбранную пользователем валюту. Например, для ресурса ДолгКлиентаВВалютеОтчета стандартный заголовок «Всего» требуется заменить на «Всего (USD)» или «Всего (руб.)» в зависимости от значения параметра Валюта.

Разберем типичные ошибки при попытке решить эту задачу через стандартный интерфейс и детально рассмотрим надежные способы реализации.

Анализ частых ошибок при настройке

Проанализируем, почему стандартные попытки ввести параметр в текст не приводят к желаемому результату:

  1. Ввод имени параметра в виде обычной строки. Если в поле «Текст» условного оформления написать Всего &Валюта или ПараметрыДанных.Валюта, система СКД воспримет это как обычный строковый литерал и выведет в заголовок именно этот текст символ в символ.
  2. Неверная область использования условного оформления. Установка флага «В общем итоге» влияет только на оформление итоговых строк и колонок с данными, а не на заголовок самой колонки. Для шапки требуется область «В заголовках полей» или «В заголовках колонок».

Способ 1. Использование макетов СКД

Рассмотрим наиболее простой и визуальный способ вывода динамического текста в заголовок без написания программного кода.

Разберем пошаговый алгоритм настройки:

  1. Перейдем на вкладку «Макеты» схемы компоновки данных.
  2. Нажмем кнопку «Добавить макет» и выберем пункт «Добавить макет поля».
  3. В свойствах макета укажем нужное поле (например, ДолгКлиентаВВалютеОтчета) и выберем тип макета — «Заголовок».
  4. В появившейся области ячейки откроем свойства и настроим параметры отображения:
    — Тип заполнения: установим значение Шаблон.
    — Текст: укажем шаблон с подстановкой параметра: Всего ([ПараметрыДанных.Валюта]).

При формировании отчета СКД автоматически заменит выражение в квадратных скобках на строковое представление выбранной валюты.

Способ 2. Условное оформление с вычисляемым параметром

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

Разберем процесс настройки по шагам:

  1. Перейдем на вкладку «Параметры» схемы компоновки данных.
  2. Добавим новый параметр с именем ЗаголовокРесурса.
  3. В колонке «Выражение» напишем формулу объединения строк:
    "Всего (" + Строка(&Валюта) + ")"
  4. Перейдем на вкладку «Настройки» в раздел «Условное оформление» и добавим новый элемент.
  5. В колонке «Оформление» найдем свойство Текст. Нажмем кнопку очистки или смены типа значения, переключим тип с обычного текста на «Параметр компоновки данных» и выберем наш параметр ЗаголовокРесурса.
  6. В колонке «Оформляемые поля» добавим ресурс ДолгКлиентаВВалютеОтчета.
  7. В дополнительных свойствах элемента оформления обязательно проверим список «Область использования оформления» и включим флаг «В заголовках полей».

Способ 3. Программная смена заголовка поля в модуле отчета

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

Посмотрим на пример кода:


ЗначениеВалюты = "";
ПараметрВалюта = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Валюта"));

Если ПараметрВалюта <> Неопределено И ЗначениеЗаполнено(ПараметрВалюта.Значение) Тогда
    ЗначениеВалюты = " (" + Строка(ПараметрВалюта.Значение) + ")";
КонецЕсли;

ПолеСхемы = СхемаКомпоновкиДанных.Поля.Найти("ДолгКлиентаВВалютеОтчета");
Если ПолеСхемы <> Неопределено Тогда
    ПолеСхемы.Заголовок = "Всего" + ЗначениеВалюты;
КонецЕсли;

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

← На главную