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