Как убрать заголовок группировки в отчете СКД?

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

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

Способ 1: Оптимизация структуры группировок

Часто проблема кроется в избыточности самой структуры отчета. Рассмотрим типичную ситуацию: разработчик создает группировку по полю Номенклатура с типом Иерархия, а внутрь нее добавляет еще одну группировку Детальные записи. В этом случае СКД воспринимает иерархию как родительский контейнер, для которого нужен свой заголовок.

Проанализируем правильный подход: если нам нужно вывести иерархию справочника вместе с его элементами, достаточно создать одну группировку по полю Номенклатура и в настройках типа группировки выбрать Иерархия. Вложенные Детальные записи в данном случае не нужны, так как сама иерархическая группировка уже выводит и узлы (папки), и листья (элементы). Удалив лишний уровень вложенности, мы автоматически избавимся от дублирующего заголовка в шапке.

Способ 2: Настройка расположения группировок и полей

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

  1. Перейдем на вкладку Настройки, выберем нужную группировку в дереве структуры.
  2. В нижней части окна откроем вкладку Другие настройки.
  3. Найдем параметр Расположение группировок. Установка значения в Нет может убрать заголовки, однако будьте осторожны: это может изменить логику вывода итогов.
  4. Более точечный инструмент — параметр Расположение имен полей. Если установить его в значение Нет именно для конкретной группировки, СКД скроет подписи колонок в шапке для этого уровня, сохранив при этом сами данные.

Также полезно проверить параметр Вариант использования группировки. Переключение между режимами Иерархия и Только иерархия существенно меняет способ отрисовки шапки.

Способ 3: Управление реквизитами и их расположением

Выясним причину появления пустых ячеек при использовании иерархии. Часто это связано с тем, что реквизиты объекта (например, артикул или код) выводятся отдельно. В настройках группировки найдем параметр Расположение реквизитов. Если он установлен в Отдельно, СКД создает дополнительные колонки с заголовками. Перевод этого параметра в Вместе с владельцем позволяет скомпоновать данные в одной ячейке, что визуально «схлопывает» лишние элементы шапки. При необходимости можно также воспользоваться приемами для оформления читаемых надписей в заголовках колонок.

Способ 4: Визуальные хитрости и условное оформление

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

Минимальная высота. Для поля, которое создает проблему, в Других настройках можно задать параметр Высота (или Минимальная высота) равным 1. Это не удалит ячейку полностью, но сделает ее практически незаметной для человеческого глаза.

Условное оформление. Мы можем применить хитрость с цветом. Создадим элемент условного оформления для области заголовка:

  1. Установим Цвет текста равным цвету фона (обычно белый).
  2. Установим Шрифт размером 1.

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

Способ 5: Использование пользовательских полей

Рассмотрим продвинутый метод обхода стандартных алгоритмов. Мы можем создать Пользовательское поле (поле-выражение). В самом выражении оставим пустую строку:

""

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

Способ 6: Программная корректировка макета

Для тех, кто формирует отчет программно, существует радикальный способ — вмешательство в макет перед выводом. Проанализируем пример кода, который можно вставить в модуле объекта отчета после генерации макета компоновки:


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

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

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

Используя объект ПостроительМакетаКомпоновкиДанных, мы можем найти область, отвечающую за заголовок, и установить ей свойство Видимость = Ложь или обнулить высоту строк этой области. Это наиболее гибкий метод, так как он сохраняет интерактивность отчета, но дает полный контроль над финальным видом табличного документа.

Резюме

Для решения задачи «как убрать заголовок» всегда начинайте с проверки структуры (Способ 1). В 90% случаев лишний заголовок — это признак того, что вы создали вложенную группировку там, где достаточно одной иерархической. Если же структура принципиальна, используйте параметры расположения имен полей или условное оформление для скрытия текста.

← На главную