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

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

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

Исходная проблема: Необходимость вертикального и горизонтального группирования полей

Представим, что у нас есть следующий запрос:


ВЫБРАТЬ ПЕРВЫЕ 10
    Номенклатура.Ссылка КАК Номенклатура,
    1 КАК Поле1,
    2 КАК Поле2,
    3 КАК Поле3,
    4 КАК Поле4
ИЗ
    Справочник.Номенклатура КАК Номенклатура

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

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

Решение 1: Группировка полей с использованием заголовков

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

Разберем шаги по настройке:

  1. Откройте настройки отчета на вкладке "Настройки".
  2. Перейдите к разделу "Выбранные поля" или "Структура" (в зависимости от текущей настройки).
  3. Для того чтобы поля Поле1 и Поле2 отображались вертикально под одним общим заголовком, вам необходимо создать для них группу. Нажмите правой кнопкой мыши на поле или на общую структуру отчета и выберите "Новая группа полей".
  4. Перетащите поля Поле1 и Поле2 внутрь этой новой группы.
  5. Присвойте этой группе осмысленный заголовок (например, "Группа 1"). Подобный подход часто применяется, когда требуется сформировать шапку отчета по неделям или месяцам. Именно наличие заголовка для группы сигнализирует СКД о необходимости сгруппировать эти поля и вывести их вертикально под общим наименованием.
  6. Повторите шаги 3-5 для полей Поле3 и Поле4, создав для них вторую группу с другим заголовком (например, "Группа 2").

После выполнения этих действий СКД автоматически расположит Номенклатуру в первой колонке, а затем создаст две отдельные колонки: одну для "Группы 1" (с полями Поле1 и Поле2, выведенными вертикально) и вторую для "Группы 2" (с полями Поле3 и Поле4, также выведенными вертикально).

Преимущества этого метода:

Автор темы отметил, что это решение является для него предпочтительным, поскольку его отчет уже является таблицей, и усложнять его дополнительными настройками "Таблицы" или отключением автополей не хотелось бы. Этот подход позволяет сохранить уже существующую структуру отчета и применить лишь необходимые настройки группировки.

Решение 2: Использование таблиц в СКД

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

Разберем по шагам, как настроить отчет с использованием таблицы:

  1. На вкладке "Настройки" в структуре отчета измените тип вывода с "Список" или "Отчет" на "Таблица". Это фундаментальное изменение, которое дает нам полный контроль над строками и колонками.
  2. В разделе "Строки" перетащите измерение Номенклатура. Это обеспечит вывод каждой позиции номенклатуры в отдельной строке.
  3. Для вывода групп полей вертикально во второй и третьей колонках, мы можем создать группировки в разделе "Колонки".
  4. Создайте новую группировку в "Колонках" (например, нажав правой кнопкой мыши и выбрав "Новая группировка"). Эту группировку можно назвать "Группа полей 1".
  5. Внутри этой группировки "Группа полей 1" добавьте выбранные поля Поле1 и Поле2. СКД автоматически расположит эти поля вертикально внутри колонки, связанной с данной группировкой.
  6. Повторите этот процесс, создав вторую группировку в "Колонках" ("Группа полей 2") и поместив в нее Поле3 и Поле4.
  7. Важно убедиться, что для каждого поля указаны соответствующие ресурсы, если они являются таковыми (в нашем примере Поле1-4 это ресурсы).

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

Преимущества использования таблиц:

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

Решение 3: Использование вычисляемых полей для группировки

Еще один рабочий вариант, который обсуждался в контексте "костылей", это создание вычисляемых полей, которые будут служить для группировки. Похожие методы используются, когда нужно собрать значения колонки из нескольких строк. Хотя автор темы счел этот метод "ненужным", в некоторых сложных сценариях он может быть вполне оправдан.

Принцип работы:

  1. В СКД, на вкладке "Наборы данных", в разделе "Вычисляемые поля", создадим два новых поля.
  2. Первое вычисляемое поле, например, Группа1, может иметь выражение: "Группа Полей 1"
  3. Второе вычисляемое поле, например, Группа2, может иметь выражение: "Группа Полей 2"
  4. Затем, при построении отчета в режиме "Таблица" (как в Решении 2), мы можем использовать эти вычисляемые поля в качестве измерений в "Колонках".
  5. В "Колонки" добавляем Группа1, а затем вложенно в нее Поле1 и Поле2.
  6. Аналогично, добавляем Группа2 и вложенно в нее Поле3 и Поле4.

Пример структуры таблицы с вычисляемыми полями:

Когда этот подход может быть полезен:

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

Решение 4: Настройка макетов для полного контроля

Для самого полного и детального контроля над внешним видом отчета можно использовать макеты оформления в СКД. Этот способ является наиболее трудоемким, но и самым мощным с точки зрения кастомизации.

Принцип работы:

  1. На вкладке "Макеты" в СКД вы создаете пользовательские макеты для различных областей отчета (заголовки, данные, ресурсы).
  2. В этих макетах вы вручную определяете, в какой ячейке, с какими параметрами форматирования и в каком порядке будет выводиться каждое поле.
  3. Это позволяет абсолютно точно контролировать расположение и внешний вид каждого элемента отчета, включая вертикальную и горизонтальную группировку, объединение ячеек и многое другое.

Когда использовать:

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

Заключение и выводы

Мы рассмотрели несколько подходов к решению задачи вертикальной и горизонтальной группировки полей в отчетах 1С СКД, когда в отчете присутствует только одно измерение:

  1. Использование заголовков групп полей: Это решение, найденное автором темы, является наиболее простым и элегантным для описанной задачи. Оно позволяет СКД понять, как следует сгруппировать поля для вертикального вывода под общим заголовком, не усложняя структуру отчета. Мы рекомендуем начинать именно с этого подхода, так как он использует стандартные механизмы СКД и является наименее трудоемким.

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

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

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

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

← На главную