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