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