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