При разработке отчетов на базе Системы компоновки данных (СКД) часто возникает задача оптимизации экранного пространства. Стандартно СКД выводит каждую новую группировку или поле в отдельную колонку, что может привести к избыточной ширине таблицы. В этой статье мы подробно рассмотрим, как объединить несколько независимых полей, измерений регистра или иерархических группировок в одну ячейку или колонку.
Рассмотрим самый простой и часто используемый метод, который позволяет объединить несколько полей в одну колонку (ячейку) через разделитель. Это идеально подходит, когда нам нужно вывести, например, Артикул и Наименование номенклатуры в одной ячейке.
Выполним следующие шаги:
Проанализируем результат: теперь система не будет создавать для каждого поля отдельный столбец, а сконкатенирует их значения в рамках одной ячейки. Это работает для реквизитов и простых полей, но может вызывать сложности с независимыми измерениями регистров, если нарушена логика иерархии.
Если ваша задача — вывести иерархическое дерево (например, Организация -> Подразделение -> Склад) не "лесенкой" в разных колонках, а строго друг под другом в первой колонке, воспользуемся специальной настройкой.
Разберем последовательность действий:
Посмотрим на эффект: все уровни группировок будут выводиться в первой колонке отчета. При этом для дочерних элементов будет автоматически добавлен отступ слева, что сохранит визуальную структуру дерева, но избавит отчет от лишних пустых колонок справа.
Когда стандартные группы "В отдельной ячейке" не помогают (например, при сложной логике или ошибках связей), мы можем прибегнуть к механизму Вычисляемых полей. Это наиболее надежный программный способ подготовки данных перед выводом.
Рассмотрим пример. Допустим, нам нужно объединить измерение Склад и Контрагент. Создадим новое вычисляемое поле:
ОбъединенноеПредставление.
Строка(Склад) + " / " + Строка(Контрагент)
Проанализируем этот подход: метод Строка() гарантирует, что ссылочные типы будут преобразованы в текст, а оператор + соединит их. Теперь в настройках отчета вместо двух отдельных группировок или полей мы просто выводим наше одно поле ОбъединенноеПредставление.
Иногда требуется в строке родительской группировки перечислить все значения подчиненных записей. Например, вывести в одной строке с заказом все товары, которые в него входят, через запятую. Если данные о заказах поступают по электронной почте, можно автоматизировать создание документов и номенклатуры в 1С:Бухгалтерии на основе текста письма.
Выясним, как это реализовать:
Номенклатура в список ресурсов.
СоединитьСтроки(Различные Номенклатура, ", ")
Теперь, если мы не будем добавлять детальные записи в структуру отчета, а выведем только группировку по Заказу, в колонке Номенклатура мы увидим список всех товаров в одну строку. Это мощный инструмент для "схлопывания" данных. При необходимости можно изучить пример агрегации значений колонки из нескольких строк в СКД.
Этот способ упоминали участники форума для случаев, когда нужно "обмануть" систему и заставить её считать разные поля реквизитами одного владельца. Это актуально для измерений регистра накопления. Для контроля корректности данных после подобных настроек или миграции полезно автоматически сверить бухгалтерские и налоговые проводки между базами 1С.
Разберем по шагам:
Регистратор.Номер или Дата), которые должны быть в той же ячейке, изменим колонку Путь.Дата напишем Регистратор.Дата. Вместо Номер — Регистратор.Номер.Важно: этот метод требует осторожности, так как изменение путей может повлиять на работу других частей схемы и на автозаполнение полей в настройках.
Если ни один из вышеперечисленных способов не дает нужного визуального оформления, мы можем создать Макет группировки.
Рассмотрим этот процесс:
Заголовок или Тело).[Склад] (отв. [Ответственный]).Создание макета дает полный контроль над визуализацией: вы можете менять шрифт, цвет и границы для объединенных данных независимо от остального отчета. Для автоматизации работы с результатами таких отчетов в системах без API можно настроить программного робота для переноса данных или проверки информации.
Таким образом, мы проанализировали шесть различных подходов к выводу группировок в одну ячейку. Выбор конкретного метода зависит от типа данных (реквизиты, измерения или независимые группировки) и требований к итоговому оформлению отчета.