Как настроить вложенную группировку колонок Склад — Контрагент в таблице СКД

Программист Управленческий учет IT и автоматизация бизнеса
← На главную

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

Проектирование структуры таблицы в СКД

Для начала разберем базовую структуру нашего отчета. Нам необходимо, чтобы строки были представлены номенклатурой, а колонки имели двухуровневую иерархию. Многие начинающие разработчики совершают ошибку, добавляя поля в один список группировок. Проанализируем правильный подход:

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

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

Управление заголовками ресурсов и избавление от лишних полей

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

Рассмотрим пошагово способы скрытия заголовка ресурса:

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

Способ 2: Расположение «Вместо заголовка группировки». Если установить этот параметр, то заголовок ресурса может заменить собой заголовок нижней группировки колонок. Это удобно, если ресурс один и его смысл понятен из контекста.

Способ 3: «Костыльный», но эффективный. На вкладке «Наборы данных» выберите ваше поле-ресурс и в колонке «Заголовок» введите пробел. В этом случае в шапке будет выводиться пустая строка, которая визуально не занимает места, если правильно настроить оформление.

Отображение маркера «V» вместо чисел

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

Вариант с вычисляемым полем

Мы можем создать поле, которое будет возвращать строку в зависимости от наличия данных. На закладке Вычисляемые поля добавим новое поле СтатусНаличия. В поле «Выражение» напишем следующее:


Выбор 
    Когда ЕстьВДокументе = Истина Тогда "V" 
    Иначе "" 
Конец

Затем это поле необходимо добавить в Ресурсы с функцией Максимум(СтатусНаличия), чтобы оно было доступно для вывода в ячейках таблицы.

Вариант с условным оформлением (рекомендуемый)

Этот способ гибче, так как позволяет сохранить исходный тип данных (например, число) для итогов, но изменить визуальное представление. Проанализируем алгоритм:

  1. На закладке Настройки перейдем на вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В поле «Оформление» выберем параметр Текст и укажем значение V.
  4. В поле «Условие» добавим правило: ПолеРесурса Заполнено или ПолеРесурса > 0.
  5. В поле «Оформляемые поля» выберем наш ресурс.

Теперь везде, где есть данные, пользователь увидит символ «V», а в пустых ячейках останется пустота.

Использование макетов оформления для полного контроля

Если стандартных настроек таблицы недостаточно (например, нужно объединить ячейки особым образом или задать специфический цвет для шапки склада), воспользуемся закладкой Макеты. Это мощный инструмент, который позволяет «нарисовать» структуру отчета.

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

  1. Нажмите «Добавить макет группировки».
  2. Выберите группировку (например, Склад) и тип макета (Заголовок).
  3. В появившемся табличном документе выделите область и оформите ее: объедините ячейки, задайте границы.
  4. Для вывода динамического текста (имени склада) в ячейке макета напишите [Склад] и в свойствах ячейки укажите тип Шаблон.
  5. Аналогично можно создать макет для дочерней группировки Контрагент, расположив его строго под макетом склада.

Привязка макетов позволяет добиться того самого вида, который автор сообщения описывал в (0), когда шапка выглядит единым монолитным блоком с четким разделением по вертикали и горизонтали.

Тонкая настройка визуализации: ширина и пустоты

В матричных отчетах с вложенными колонками часто возникает проблема разной ширины колонок, из-за чего отчет выглядит неопрятно. Выясним, как это исправить. В Условном оформлении добавим новый элемент, где выберем параметры МинимальнаяШирина и МаксимальнаяШирина (например, значение 10). В «Оформляемых полях» укажем Контрагент. Теперь все колонки с контрагентами будут одинаковыми, независимо от длины их наименования.

Также полезно зайти в Дополнительные настройки отчета и установить параметр Выводить пустые значения в Ложь (если это необходимо по смыслу), либо наоборот, настроить Дополнение значений, если требуется видеть всех контрагентов склада, даже если по ним в данный момент нет данных (движений).

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

← На главную