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