Как в отчете СКД настроить заголовок группировки, не перекрывая вложенные колонки

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

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

Проанализируем типичную ситуацию. У нас есть отчет с двумя уровнями вложенности: верхний уровень — группировка по полю Партнер (контрагент), а внутри нее — группировка по полю Номенклатура. Наша цель — в строке с названием партнера вывести текст вида: "Контрагент: Ромашка, менеджер: Иванов".

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

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

Решение 1: Использование вычисляемого поля и выражения представления

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

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

    Пример выражения:

    
    Формат("Контрагент: %1, менеджер: %2", Партнер, Партнер.ОсновнойМенеджер)
    

    Здесь %1 и %2 — это параметры, на место которых будут подставлены значения полей Партнер и Партнер.ОсновнойМенеджер соответственно.

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

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

Этот способ идеален, когда нужно изменить только текстовое содержимое заголовка, не меняя его структуру и форматирование кардинально.

Решение 2: Настройка макета с "пустыми" ячейками

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

  1. Откроем макет заголовка для группировки "Партнер".
  2. Вместо одной ячейки, которая вызывает проблему, создадим в макете столько ячеек, сколько колонок охватывает наша группировка. В нашем случае — две: одна для партнера, вторая для номенклатуры.
  3. В первую ячейку поместим наш текст или параметр, например, [ПредставлениеПартнераСМенеджером].
  4. Вторую ячейку оставим полностью пустой. Ее наличие явно укажет системе, что объединять ячейки не нужно, и для колонки "Номенклатура" на этом уровне зарезервировано место.

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

Решение 3: Использование фиктивной группировки

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

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

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

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

Таким образом, для решения, казалось бы, простой задачи, СКД предлагает несколько подходов разной степени сложности. Выбор конкретного метода зависит от требований к отчету: для простого изменения текста идеально подойдет "Выражение представления", а для сложных дизайнерских заголовков — "Фиктивная группировка".

← На главную