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

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

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

Метод 1: Использование макетов ресурсов

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

Для того чтобы закрасить колонку целиком, нам необходимо создать макеты для разных частей этой колонки: заголовка, самих данных и общих итогов. Разберем алгоритм действий:

  1. Перейдем на закладку Макеты в схеме компоновки данных.
  2. Нажмем кнопку «Добавить макет» и выберем Добавить макет ресурса.
  3. В появившемся окне нам нужно указать параметры:
    • Поле: Выбираем тот ресурс, который хотим закрасить (например, Сумма или Количество).
    • Имя группировки: Выбираем группировку строк.
    • Имя группировки колонок: Выбираем ту группировку колонок, которая отвечает за вашу итоговую колонку (например, ПоНеделям).
  4. После создания записи укажем область макета. Для этого выделим две-три свободные ячейки в сетке макета, зададим им нужный цвет фона и границы.
  5. В этих ячейках обязательно пропишем параметры (например, <p>Сумма</p>), чтобы СКД знала, куда выводить данные.

Важный нюанс: Одного макета ресурсов часто недостаточно. Чтобы закрасить и заголовок, и итоги, нужно добавить еще несколько макетов ресурсов с разными типами:

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

Частая ошибка начинающих разработчиков — накладывать Условное оформление на весь отчет целиком. В этом случае система применяет правила ко всем ячейкам, которые подходят под условие, что часто приводит к непредсказуемой раскраске. Проанализируем, как сделать это правильно.

Разберем ситуацию: нам нужно закрасить только ресурсы внутри определенной колонки. Для этого мы не идем в общие настройки отчета, а спускаемся на уровень конкретной группировки:

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

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

Метод 3: Использование вычисляемого поля-флага

Рассмотрим ситуацию, когда условие окраски слишком сложное для стандартного редактора СКД. В этом случае мы можем подготовить данные заранее в запросе или через вычисляемые поля. Проанализируем пример с созданием технического поля.

В тексте запроса или на вкладке Вычисляемые поля создадим поле, например, ЭтоНужнаяКолонка. В выражении напишем логику:


ВЫБОР 
    КОГДА ДеньНедели(Период) = 7 ТОГДА Истина 
    ИНАЧЕ Ложь 
КОНЕЦ

Затем в Условном оформлении мы можем использовать это поле как условие. Выясним преимущество этого метода: вы можете сделать это поле ресурсом с функцией Минимум или Максимум, чтобы оно было доступно на всех уровнях группировок. Если значение Истина, то применяем цвет. Это избавляет от необходимости «рисовать» макеты вручную.

Приоритеты оформления и типичные ошибки

Проанализируем ситуацию, описанную в сообщениях форума: «Если есть условное оформление, макет не работает». Это происходит из-за иерархии приоритетов в СКД. Условное оформление имеет более высокий приоритет, чем оформление, заданное в макете.

Если вы решили использовать макеты, убедитесь, что:

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

Практические советы по работе с макетами ресурсов

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

Рассмотрим пример настройки для итогов:

  1. Если заголовок итоговой колонки не закрашивается, создайте Макет группировки для заголовка колонки.
  2. Укажите тип макета Заголовок.
  3. В сетке макета оформите ячейку нужным цветом и укажите параметр, соответствующий имени группировки.

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

← На главную