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