Работа с Системой компоновки данных (СКД) часто выходит за рамки простого извлечения данных. Когда отчет готов, встает вопрос его презентабельности: как выделить определенные уровни иерархии, зафиксировать размеры таблиц и сделать так, чтобы все отчеты в системе выглядели единообразно. В этой статье мы подробно разберем, как управлять визуальной составляющей отчетов, решим проблему «скачущих» размеров шрифтов и научимся автоматизировать оформление.
Часто возникает задача выделить определенную группировку (например, «Номенклатуру» или «Контрагента») более крупным шрифтом, не затрагивая при этом шапку таблицы. Отработать настройки поможет управляемая консоль запросов и отчетов — для этого подойдёт универсальная консоль запросов и компоновки данных. Рассмотрим два основных способа решения этой задачи.
Способ 1: Условное оформление с использованием областей.
Многие разработчики используют «Условное оформление» без задания условия. Это рабочий метод (также доступна декомпиляция условного оформления), но важно настроить его «по науке», чтобы изменения не затронули заголовки полей. Разберем по шагам, как это сделать:
В группировке.Способ 2: Использование макетов группировок.
Если требуется полный контроль над визуализацией, проанализируем закладку Макеты. Здесь можно создать индивидуальный макет для заголовка или всей группировки. Однако помните о риске: жесткое задание макета может ограничить пользователя (в отличие от случая, когда выполняется вывод внешнего отчета в один документ). Если пользователь захочет добавить новое поле в эту группировку через настройки, оно может просто не отобразиться, так как в вашем статичном макете для него не предусмотрен параметр.
Проблема «расползающихся» или слишком узких колонок решается несколькими методами, в зависимости от требуемой гибкости.
Метод 1: Настройки набора данных.
Рассмотрим самый простой способ — использование свойств полей на закладке Наборы данных (по аналогии с тем, как дорабатываются динамические списки). Для каждого поля можно задать параметры:
Минимальная ширинаМаксимальная ширинаЭти параметры позволяют жестко зафиксировать размер колонки. Если установить одинаковое значение для обоих параметров, ширина будет строго фиксированной независимо от объема данных.
Метод 2: Программная корректировка.
Если нам нужно менять ширину динамически в зависимости от результата, воспользуемся процедурой ПриКомпоновкеРезультата в модуле объекта отчета. Проанализируем пример кода, который перебирает области итогового табличного документа:
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
Результат = ЭлементыФормы.Результат; // Или ТабличныйДокумент
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Выводить(ПроцессорКомпоновки);
// Установка ширины колонки программно
Результат.Область(, 2, , 2).ШиринаКолонки = 30;
КонецПроцедуры
Если стоит задача изменить шрифт во всех новых или уже существующих отчетах, лучше всего использовать Макеты оформления компоновки данных. Выясним, как это работает.
В дереве метаданных в ветке Общие -> Макеты оформления компоновки данных можно создать свой стиль оформления. В нем задаются шрифты, цвета и рамки для всех типов ячеек (заголовки, ресурсы, группировки). Чтобы применить его:
Для автоматизации этого процесса в старых отчетах можно написать обработку, которая программно переберет схемы компоновки и установит нужный макет оформления в НастройкиПоУмолчанию. Если ваша конфигурация построена на БСП (Библиотеке стандартных подсистем), макет оформления можно массово изменить через справочник Варианты отчетов.
Разберем ситуацию, когда вы устанавливаете в макете шрифт Arial 8, а платформа 1С настойчиво выводит Arial 10. Это связано с тем, как платформа обрабатывает системные шрифты при различных настройках масштабирования Windows (DPI).
Посмотрим на проверенные способы решения этой проблемы:
Стиль значение Шрифт текста, а уже затем переопределить его параметры (Arial, 8). Это заставляет платформу более жестко следовать настройкам.Жирный, шрифт реже подвергается автоматическому пересчету размера.Проанализируем пример кода для программного изменения макета оформления во всех вариантах отчета. Это полезно, если вы создали свой корпоративный стиль и хотите внедрить его во все отчеты системы:
Для Каждого Вариант Из СхемаКомпоновкиДанных.ВариантыНастроек Цикл
ПараметрМакет = Вариант.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("AppearanceCustomization"));
Если ПараметрМакет <> Неопределено Тогда
ПараметрМакет.Значение = "МойКорпоративныйМакет";
ПараметрМакет.Использование = Истина;
КонецЕсли;
КонецЦикла;
Использование этих методов позволит вам создавать профессиональные и удобные для чтения отчеты, сохраняя при этом гибкость настроек СКД и единый визуальный стиль во всей системе.