При разработке отчетов с использованием Системы компоновки данных (СКД) разработчики часто сталкиваются с задачей индивидуального оформления элементов интерфейса. Если изменение шрифта для самих ячеек данных решается стандартными средствами Условного оформления, то настройка заголовков групп полей вызывает затруднения, так как они формируются системой автоматически как статические элементы Табличного документа.
Рассмотрим, почему это происходит и какими способами можно добиться нужного визуального результата.
Основная причина заключается в том, что СКД при выводе отчета сама определяет области заголовков и назначает им стили по умолчанию. Условное оформление, которое мы настраиваем в схеме, обычно «привязывается» к значениям полей данных. Заголовки групп полей при этом остаются вне зоны влияния стандартных правил оформления, так как они не содержат данных, к которым можно применить условие.
Наиболее правильным и декларативным способом является использование Макетов оформления. Это штатный механизм 1С, который позволяет централизованно управлять внешним видом отчета.
Настройки.Макет оформления выберите один из существующих стилей или создайте свой.Заголовка группы и Заголовка поля.Этот метод предпочтителен, так как он сохраняет целостность структуры отчета и корректно работает при изменении настроек пользователем.
Если вам нужно точечное изменение стиля для конкретной группы, воспользуйтесь механизмом Макетов внутри настроек СКД:
Макеты.Добавить.Заголовок группировки (или соответствующую область).Группировка укажите ту группу, для которой требуется изменить шрифт.Табличного документа введите название заголовка и установите нужные параметры шрифта (размер, начертание, цвет) через свойства ячейки.После сохранения СКД перестанет использовать стандартный заголовок и отрисует тот макет, который вы подготовили вручную.
Если вы работаете на устаревших версиях платформы (например, 8.2.13) или стандартные методы не позволяют добиться желаемого визуального эффекта, можно применить «костыльный» метод — программное изменение Табличного документа после его вывода.
Разберем, как это реализовать. После того как отчет был сформирован, мы можем обратиться к результирующему документу и изменить свойства областей программно.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Вносим изменения в области заголовка
Для Каждого Область из ДокументРезультат.Области Цикл
Если СтрНайти(Область.Имя, "ЗаголовокГруппы") > 0 Тогда
Область.Шрифт = Новый Шрифт(Область.Шрифт, , , Истина); // Устанавливаем жирный шрифт
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Важное примечание: Этот метод следует использовать с осторожностью. Программная правка Табличного документа делает отчет зависимым от структуры группировок. Если вы добавите новое поле или измените иерархию, адресация областей может нарушиться, что приведет к ошибкам в отображении заголовков.
Рекомендуем в первую очередь использовать Макеты оформления, так как они являются наиболее надежным инструментом. Применяйте программную правку только в том случае, когда другие способы не обеспечивают нужного результата из-за ограничений режима совместимости вашей информационной базы.