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

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

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

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

Способ 1. Использование настройки Расположение полей группировок

Проанализируем самый простой и эффективный метод, который не требует написания кода или создания сложных макетов. Этот метод основан на изменении системных настроек вывода полей.

Для реализации выполним следующие шаги:

  1. Перейдем на вкладку Настройки в схеме компоновки данных.
  2. Выберем нужный вариант отчета или конкретную группировку.
  3. Перейдем на закладку Прочие настройки.
  4. Найдем параметр Расположение полей группировок.
  5. Установим значение Вместе.

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

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

Рассмотрим ситуацию, когда Группировка2 нужна нам исключительно для того, чтобы разбить данные внутри Группировки 1, но отдельная колонка для нее в принципе не требуется. В этом случае мы можем полностью исключить поле группировки из визуальной части шапки.

Выполним следующие действия:

  1. В настройках отчета выберем вложенную группировку (в нашем примере — Группировка2).
  2. На закладке Прочие настройки найдем параметр Расположение группировок.
  3. Установим значение Нет.

Проанализируем результат: данные будут сгруппированы в соответствии с логикой запроса, однако отдельный столбец для этой группировки создан не будет. Это автоматически уберет заголовок из шапки. Чтобы значения Группировки 2 все же были видны пользователю, мы можем добавить их в Выбранные поля вышестоящей группировки (Группировка 1). Таким образом, информация отобразится в одной строке или через запятую, а шапка останется чистой.

Способ 3. Создание макета заголовка для конкретного поля

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

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

Рассмотрим пошагово:

  1. Перейдем на вкладку Макеты.
  2. Нажмем Добавить макет и выберем Добавить макет заголовка поля.
  3. В появившемся окне выберем поле, соответствующее Группировке 2.
  4. В области ячеек макета оформим заголовок так, как нам нужно. Если мы хотим, чтобы заголовок отсутствовал, мы можем объединить эту ячейку с заголовком Группировки 1 или установить ей минимальную высоту и прозрачный текст.

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

Способ 4. Переход к табличной структуре отчета

Как отметил автор темы, иногда наиболее стабильным решением является изменение структуры отчета с «Списка» на «Таблицу». В таблице настройки заголовков работают более предсказуемо.

Проанализируем ситуацию: если мы представим наш отчет в виде таблицы, где Группировка 1 и Группировка 2 находятся в строках, мы получим гораздо больше контроля над оформлением шапки. В таблице заголовки колонок (ресурсов) и заголовки строк разделены более явно на уровне генерации макета.

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

Если нам нужно оставить ячейку в шапке (для сохранения симметрии), но сделать ее пустой, можно применить «хитрость» с заголовками полей.

  1. В настройках выбранных полей для Группировки 2 установим пользовательский заголовок.
  2. Вместо текста введем неразрывный пробел (комбинация клавиш Alt + 160).

Важный момент: если оставить поле заголовка просто пустым, 1С автоматически подставит имя поля из конфигурации или синоним из запроса. Использование спецсимвола заставляет систему вывести «пустоту», которая визуально скрывает присутствие вложенного уровня в шапке.

Программная корректировка табличного документа

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


ПроцессорКомпоновки = Новый ПроцессорКомпоновкиРезультатаКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);

ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Если ЭлементРезультата = Неопределено Тогда Прервать КонецЕсли;
    
    // Здесь можно анализировать тип элемента и вносить правки
    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

После вывода мы можем найти нужную область в ТабличныйДокумент и применить методы УдалитьОбласть() или Очистить() для конкретных ячеек шапки. Это гарантирует 100% результат, но требует аккуратности при обновлении отчета.

Подводя итог, можно сказать, что для большинства задач достаточно настройки Расположение полей группировок = Вместе или Расположение группировок = Нет. Эти методы являются наиболее «чистыми» с точки зрения архитектуры 1С и не ломают пользовательские настройки отчета.

← На главную