Как раскрасить строку конкретной группировки по условию в отчете СКД?

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

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

Способ 1. Настройка условного оформления на уровне конкретного узла группировки

Самый надежный и распространенный вариант — привязать правило оформления не к корню отчета, а к конкретной ветке в дереве структуры отчета.

  1. Перейдем на вкладку Настройки в схеме компоновки данных (или откроем форму расширенных настроек отчета в режиме 1С:Предприятие).
  2. В окне Структура найдем и выделим конкретную группировку (например, группировку Рейс).
  3. В нижней части окна перейдем на вкладку Условное оформление. Обратите внимание, что настройки будут применяться только к выделенному элементу структуры.
  4. Добавим новый элемент условного оформления:
    • В поле Оформление установим нужные параметры, например, Цвет фона или Цвет текста.
    • В поле Условие укажем критерий (например, Сумма > 100000 или СтатусРейса Равно "Завершен").
    • Поле Оформляемые поля оставим пустым, если требуется раскрасить всю строку группировки целиком, либо выберем только те колонки, которые должны поменять цвет.

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

Способ 2. Использование параметра «Область использования оформления»

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

  1. В списке элементов условного оформления откроем редактирование нужного правила.
  2. В колонке или в параметрах оформления найдем свойство Область использования (или Использование оформления).
  3. Выберем подходящий вариант:
    • В группировке — оформление применится только к строкам заголовков и итогов самой группировки, исключая детальные записи.
    • В детальных записях — правило сработает только на нижнем уровне строк, не затрагивая итоги.
    • В иерархии — раскрашивает только иерархические узлы.
    • В общих итогах / В заголовках — для точечного управления шапками и подвалами.

Особенности проверки условий по ресурсам и вычисляемым полям

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

Если условие раскраски комплексное (требует сопоставления нескольких полей или сложной логики), рекомендуется создать вычисляемое поле на вкладке Вычисляемые поля со специальным выражением-маркером:


ВЫБОР
    КОГДА СуммаРейса > Лимит И Статус = "Просрочен" ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
КОНЕЦ

После этого в условном оформлении достаточно проверить равенство полученного поля значению Истина.

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

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


ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы, ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);

ПроцессорВывода.НачатьВывод();

Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Если ЭлементРезультата = Неопределено Тогда
        Прервать;
    КонецЕсли;

    // Проверяем тип элемента результата
    Если ЭлементРезультата.ТипЭлемента = ТипЭлементаРезультатаКомпоновкиДанных.ЗначениеГруппировки Тогда
        // Обработка строки группировки
    КонецЕсли;

    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЦикла;

ПроцессорВывода.ЗакончитьВывод();

Важные нюансы и приоритеты применения правил

  1. Наследование оформления: Правила из корня отчета по умолчанию наследуются всеми дочерними ветками. Чтобы правило не уходило вглубь, ограничивайте его через область использования или создавайте оформление строго внутри нужной ветки структуры.
  2. Порядок следования: Если к одной и той же ячейке подходят несколько условий оформления, побеждает то правило, которое находится ниже в списке.
  3. Стандартные макеты оформления: Предопределенные варианты оформления отчета (например, «Классический», «Античный») имеют собственные цвета для строк группировок. Чтобы пользовательский цвет фона гарантированно перекрыл стандартную тему, убедитесь, что в правиле задан явный цвет фона.
← На главную