Как в СКД сделать общий заголовок для нескольких колонок и правильно настроить отборы?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

В этой статье мы подробно разберем ситуацию, когда попытка создать такой заголовок через добавление группировок приводит к искажению вида отчета (появлению «ступенек»), и выясним, как решить эту задачу правильно.

Суть проблемы: Ступенчатый вывод вместо общего заголовка

Рассмотрим ситуацию, с которой столкнулся автор вопроса. Задача состоит в том, чтобы вывести колонку-заголовок (например, «Данные1»), а под ней расположить конкретные показатели. Интуитивно может показаться правильным создать вычисляемое поле с именем заголовка и добавить его в структуру отчета в раздел «Колонки».

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

  1. Сначала выводится колонка группировки «Данные1».
  2. Затем, со сдвигом вниз (или вправо, в зависимости от макета), выводятся вложенные группировки или детальные записи.

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

Решение 1: Использование «Группы выбранных полей»

В СКД существует четкое разделение между тем, как данные группируются (вкладка «Настройки» — структура отчета) и тем, как они выводятся внутри группировок (вкладка «Выбранные поля»).

Чтобы создать общий заголовок над несколькими ресурсами без изменения структуры группировок, нам необходимо работать с вкладкой «Выбранные поля».

Выполним следующие действия по шагам:

  1. Перейдем в настройки варианта отчета.
  2. Убедимся, что в структуре отчета (дерево слева) выбрана та группировка, в которой мы хотим видеть колонки, или корневой элемент «Отчет», если колонки должны быть общими.
  3. Перейдем на вкладку «Выбранные поля».
  4. Вместо того чтобы просто добавлять поля по одному, нажмем кнопку «Новая группа...» (или через контекстное меню «Сгруппировать поля»).
  5. В свойствах новой группы зададим Заголовок — например, «Данные1».
  6. Перетащим нужные нам поля (ресурсы «Движения», «Остатки» и т.д.) внутрь этой папки.
  7. Обратим внимание на свойство «Расположение» для этой группы. Для корректного отображения заголовков обычно подходят варианты Авто или Горизонтально.

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

Решение 2: Наложение отборов на группу данных

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

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

Вариант А: Простой отбор

Если колонки «Движения» и «Остатки» должны показывать данные, например, только по «Складу №1», мы просто добавляем отбор Склад Равно Склад1 в настройки той группировки, которая выводит эти данные (например, группировка по «Номенклатуре»).

Вариант Б: Разные отборы для разных колонок

Это более сложный случай. Допустим, нам нужно в одной таблице вывести:

Просто наложить отбор на «группу выбранных полей» невозможно, так как выбранные поля отвечают только за вывод, а не за срез данных. Отбор в СКД отсекает записи целиком. Если мы установим отбор по Складу 1, данные по Складу 2 исчезнут из отчета полностью.

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


Сумма(ВЫБОР 
    КОГДА Склад = &Склад1 ТОГДА КоличествоОстаток 
    ИНАЧЕ 0 
КОНЕЦ)

Таким образом, мы создаем два отдельных поля:

  1. ОстатокСклад1 — с условием по первому складу.
  2. ОстатокСклад2 — с условием по второму складу.

Затем, используя метод из «Решения 1», мы создаем две группы выбранных полей: «Данные по Складу 1» и «Данные по Складу 2», и помещаем туда соответствующие вычисляемые поля.

Альтернативный подход: Пользовательские поля

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

Этот инструмент позволяет пользователю (или администратору при настройке варианта) создавать новые поля-выражения прямо в пользовательском режиме. Алгоритм действий следующий:

  1. В настройках отчета переходим на вкладку «Пользовательские поля».
  2. Создаем «Новое поле-выражение».
  3. В формуле прописываем логику (аналогично примеру с ВЫБОР КОГДА... выше).
  4. Полученные поля добавляем в «Выбранные поля» и группируем их для создания общего заголовка.

Резюме

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

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

← На главную