Как настроить оформление и макет ресурсов для итоговых колонок в отчете на СКД?

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

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

Нередко разработчики пытаются решить эту задачу созданием пользовательского макета ресурсов, но сталкиваются с тем, что оформление применяется только к ячейкам на пересечении детальных записей, а итоговые колонки остаются без изменений. Рассмотрим причины такого поведения платформы и подробно разберем все способы настройки оформления итогов в СКД.

Почему макет ресурсов не применяется к итогам по умолчанию

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

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

Способ 1. Корректная настройка типов макета ресурсов

Чтобы задействовать механизм макетов СКД именно для итогов, выполним по шагам следующую настройку:

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

Обратим внимание на важный нюанс: макет ресурсов отвечает только за ячейки с данными. Заголовок самой итоговой колонки (шапка с текстом «Итого») данным макетом не управляется. Чтобы оформить саму шапку, добавим параллельно Макет группировки или Макет заголовка группировки для соответствующего поля с типом Общий итог заголовок или Общий итог подвал.

Также проверим глобальный стиль оформления отчета. Если на вкладке Настройки в разделе Другие настройки выбран предопределенный стиль (например, «Классический» или «Основной»), платформа может принудительно переопределять цвета ячеек. Чтобы макет отобразился в точности так, как нарисован в табличном документе, установим параметр Макет оформления в значение Без оформления.

Способ 2. Оформление итогов через Условное оформление (без макетов)

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

Разберем по шагам, как применить оформление только к итогам:

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

Такой подход исключает необходимость рисования макетов в пикселях и автоматически сохраняет масштабируемость и адаптивность отчета при изменении состава полей.

Способ 3. Выделение итогов в отдельную структуру группировок

Рассмотрим подход, к которому часто приходят разработчики, когда требуется полностью кастомизировать расчет и вывод итогов:

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

Иногда предлагается вариант разделения отчета на две таблицы одна под другой, где первая таблица выводит детальные данные, а вторая — только итоги. Однако проанализируем ограничения такого подхода:

  1. Производительность: Вывод двух отдельных таблиц заставляет процессор компоновки данных выполнять двойную работу по обработке наборов данных и расчету агрегатов. На больших объемах информации это существенно увеличивает время формирования отчета и расход оперативной памяти.
  2. Геометрия колонок: Таблицы выводятся независимо друг от друга. При автоматическом расчете ширины колонок в результирующем табличном документе вертикальные границы итоговой таблицы гарантированно сместятся относительно колонок основной таблицы, что испортит визуальное восприятие отчета.

Таким образом, наиболее надежным и технически правильным решением является использование штатных типов макета ресурсов (Общий итог подвал) либо настройка области использования в Условном оформлении с параметром В итогах.

← На главную