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