Как выделить цветом строку группировки и ресурсы в отчете СКД?

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

При разработке отчетов на Системе компоновки данных (СКД) часто возникает задача визуального разделения данных. Стандартный вывод отчета не всегда нагляден, особенно когда в нем много уровней вложенности. Пользователи часто просят выделить строки с итогами (группировки) особым фоном, чтобы сразу видеть агрегированные показатели. Однако начинающие разработчики часто сталкиваются с тем, что выделение через Макет поля раскрашивает только само название группировки, оставляя числовые показатели (ресурсы) в стандартном виде. В этой статье мы подробно разберем, как добиться полной раскраски всей строки группировки, включая ресурсы.

Метод 1: Использование Условного оформления и системного поля «Уровень»

Это самый гибкий и популярный способ. Давайте разберем ситуацию: у нас есть иерархия данных (например, Организация — Склад — Номенклатура), и мы хотим выделить уровень «Склад» синим цветом. Для этого нам поможет системное поле Уровень.

Проанализируем шаги настройки:

  1. Перейдем на вкладку Настройки в схеме компоновки данных.
  2. Выберем вкладку Условное оформление.
  3. Добавим новый элемент оформления. В поле Оформление установим нужный Цвет фона.
  4. В поле Условие выберем Системные поля.Уровень.
  5. Укажем вид сравнения Равно и значение уровня. Важно помнить: нумерация уровней в СКД начинается с 1. Если ваша группировка является самой верхней в отчете, ее уровень — 1.
  6. Критический момент для ресурсов: в списке Оформляемые поля ничего не выбирайте, если хотите раскрасить всю строку целиком. Если оставить этот список пустым, СКД применит оформление ко всем полям строки, включая ресурсы.

Рассмотрим нюанс: если мы укажем конкретные поля в списке оформляемых, то ресурсы, которые не входят в этот список, останутся белыми. Именно поэтому для «покраски» всей строки целиком правило должно действовать на всю запись.

Метод 2: Настройка оформления для конкретной группировки

Иногда использование системного поля Уровень неудобно, например, если структура отчета может меняться пользователем. В этом случае мы можем задать оформление не на уровне всего отчета, а непосредственно для выбранной группировки.

Выясним, как это сделать:

  1. В дереве настроек СКД (левое окно на вкладке «Настройки») выделим конкретную группировку (например, Склад).
  2. Внизу выберем вкладку Условное оформление, которая относится именно к этому элементу.
  3. Добавим оформление (цвет фона).

В данном случае нам не нужно задавать условие по уровню. Поскольку оформление привязано к конкретной группировке, СКД автоматически применит его ко всем строкам этой группировки. Чтобы раскрасились и ресурсы, убедитесь, что в поле Оформляемые поля либо пусто (все поля), либо добавлены и поля группировки, и поля ресурсов.

Метод 3: Работа с макетами оформления (Standard Layouts)

Если нам не принципиален конкретный оттенок, а нужно просто сделать отчет «красивым» и читаемым, разберем возможности стандартных макетов. В СКД встроено несколько цветовых схем, которые автоматически умеют раскрашивать уровни группировок в разные цвета.

Посмотрим, где это настраивается:

  1. Выделим самый верхний элемент в дереве настроек (объект Отчет).
  2. На вкладке Другие настройки найдем параметр Макет оформления.
  3. Попробуем выбрать варианты: Арктика, Зеленый, Море или Античный.

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

Метод 4: Создание собственного макета группировки

Когда стандартного условного оформления недостаточно (например, нужно объединить ячейки или задать сложную рамку), мы используем Макеты. Как заметил автор вопроса, макет поля не всегда помогает с ресурсами. Давайте разберем, как сделать правильно через Макет группировки.

Пошаговая инструкция:

  1. Перейдем на вкладку Макеты.
  2. Нажмем Добавить макет группировки.
  3. Выберем имя группировки и тип макета (например, Заголовок — это строка с названием группы и итогами).
  4. В появившейся области табличного документа мы можем нарисовать строку так, как она должна выглядеть. Выделим ячейки цветом, установим границы.
  5. Для вывода ресурсов в этом макете нужно создать параметры и связать их с полями ресурсов (например, СуммаОборот).

Использование макета группировки полностью перекрывает стандартный вывод строки. Это позволяет нам жестко задать оформление для каждой ячейки строки, включая те места, где выводятся итоги (ресурсы).

Метод 5: Программное управление оформлением

В некоторых случаях условие для раскраски может быть очень сложным и зависеть от внешних данных. Тогда мы можем вмешаться в процесс компоновки программно. Рассмотрим пример кода в модуле объекта отчета, который можно использовать в процедуре ПриКомпоновкеРезультата.


// Пример программной установки условного оформления
ЭлементОформления = КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаВыделения);

// Условие: Уровень равен 1
ЭлементУсловия = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СистемныеПоля.Уровень");
ЭлементУсловия.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементУсловия.ПравоеЗначение = 1;

// Применяем ко всем полям
ЭлементОформления.Использование = Истина;

Этот код позволяет динамически управлять цветами в зависимости от параметров, переданных пользователем, или других условий, недоступных в статическом конструкторе СКД.

Тонкости и порядок применения (Приоритет)

Проанализируем важную деталь: порядок применения оформления. В СКД правила применяются сверху вниз. Если у вас задано общее оформление для всего отчета (уровень 1 — красный), а ниже задано оформление для конкретной группировки (уровень 1 — синий), то применится то, которое находится ниже в списке или более специфично для данной области.

Также стоит учитывать системное поле ЭтоИерархия. Если ваш отчет использует иерархические справочники, то родительские элементы и детальные записи могут иметь один и тот же «уровень» с точки зрения структуры группировок, но разный визуальный смысл. Используйте условие Системные поля.Это иерархия Равно Да, чтобы выделить именно папки или родительские узлы.

Подведем итог: для простой раскраски строки группировки вместе с ресурсами используйте Условное оформление на уровне отчета с фильтром по Системные поля.Уровень и пустым списком оформляемых полей. Это наиболее эффективный и легко поддерживаемый способ в 1С 8.3.

← На главную