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

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

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

Способ 1. Использование системных групп в выбранных полях

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

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

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

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

Способ 2. Настройка расположения группировок в одну колонку

Если ваша задача — вывести иерархическое дерево (например, Организация -> Подразделение -> Склад) не "лесенкой" в разных колонках, а строго друг под другом в первой колонке, воспользуемся специальной настройкой.

Разберем последовательность действий:

  1. Зайдем в Настройки СКД и выберем вкладку Дополнительные настройки.
  2. Найдем параметр Расположение группировок.
  3. Установим значение В одной колонке.

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

Способ 3. Вычисляемые поля для объединения данных

Когда стандартные группы "В отдельной ячейке" не помогают (например, при сложной логике или ошибках связей), мы можем прибегнуть к механизму Вычисляемых полей. Это наиболее надежный программный способ подготовки данных перед выводом.

Рассмотрим пример. Допустим, нам нужно объединить измерение Склад и Контрагент. Создадим новое вычисляемое поле:

  1. Перейдем на закладку Вычисляемые поля.
  2. Добавим новое поле с именем ОбъединенноеПредставление.
  3. В колонке Выражение напишем код на языке выражений СКД:

Строка(Склад) + " / " + Строка(Контрагент)

Проанализируем этот подход: метод Строка() гарантирует, что ссылочные типы будут преобразованы в текст, а оператор + соединит их. Теперь в настройках отчета вместо двух отдельных группировок или полей мы просто выводим наше одно поле ОбъединенноеПредставление.

Способ 4. Использование функции СоединитьСтроки в ресурсах

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

Выясним, как это реализовать:

  1. Перейдем на закладку Ресурсы.
  2. Добавим поле Номенклатура в список ресурсов.
  3. В выражении ресурса укажем функцию:

СоединитьСтроки(Различные Номенклатура, ", ")

Теперь, если мы не будем добавлять детальные записи в структуру отчета, а выведем только группировку по Заказу, в колонке Номенклатура мы увидим список всех товаров в одну строку. Это мощный инструмент для "схлопывания" данных. При необходимости можно изучить пример агрегации значений колонки из нескольких строк в СКД.

Способ 5. Манипуляция путями данных в наборе данных

Этот способ упоминали участники форума для случаев, когда нужно "обмануть" систему и заставить её считать разные поля реквизитами одного владельца. Это актуально для измерений регистра накопления. Для контроля корректности данных после подобных настроек или миграции полезно автоматически сверить бухгалтерские и налоговые проводки между базами 1С.

Разберем по шагам:

  1. На закладке Наборы данных найдем поле, которое хотим сделать "основным" (владельцем), например, Регистратор.
  2. Для других полей (например, Номер или Дата), которые должны быть в той же ячейке, изменим колонку Путь.
  3. Вместо Дата напишем Регистратор.Дата. Вместо Номер — Регистратор.Номер.
  4. В Дополнительных настройках установим параметр Расположение реквизитов в значение Вместе с владельцем.

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

Способ 6. Создание собственного макета

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

Рассмотрим этот процесс:

  1. Перейдем на закладку Макеты.
  2. Добавим макет группировки, выберем имя группировки и тип макета (например, Заголовок или Тело).
  3. В области макета (аналог табличного документа) выделим одну ячейку.
  4. В свойствах ячейки укажем тип Параметр или Шаблон.
  5. В выражении параметра мы можем написать любую комбинацию полей, например: [Склад] (отв. [Ответственный]).

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

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

← На главную