Как убрать заголовки группировок в СКД, сохранив возможность независимого сворачивания колонок?

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

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

Почему стандартное отключение заголовков не работает?

Проанализируем ситуацию: когда в настройках СКД мы устанавливаем значение «Нет» для расположения группировок, платформа полностью исключает соответствующий уровень иерархии из визуального отображения. Механизм автогруппировки (сворачивания) в 1С жестко привязан к структуре ячеек табличного документа. Если заголовок физически отсутствует, кнопке сворачивания «не за что зацепиться» на своем уровне, и она переходит к ближайшему родителю. В итоге вместо трех кнопок для трех колонок мы получаем одну, которая сворачивает всё сразу.

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

Способ 1: Визуальная минимизация через оформление

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

  1. Перейдем на вкладку «Настройки» и выберем нужную группировку колонок.
  2. В разделе «Другие настройки» установим параметры Расположение итогов в значение Нет, чтобы убрать лишние итоговые данные.
  3. Далее воспользуемся хитростью: установим для этой группировки минимально возможную ширину. В поле «Максимальная ширина» и «Минимальная ширина» укажем значение 0.1 или 1.
  4. Чтобы заголовок не выделялся, в условном оформлении для этой группировки установим Цвет текста, совпадающий с цветом фона (обычно белый), и отключим границы (Тип линии = Нет линии).

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

Способ 2: Использование пользовательских макетов (наиболее надежный)

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

Разберем по шагам, как создать пустой макет:

  1. Перейдем на закладку «Макеты» в конструкторе СКД.
  2. Нажмем «Добавить макет заголовка группировки».
  3. Выберем имя группировки, которую хотим скрыть.
  4. В области макета выделим одну ячейку. Важно: не оставляйте область пустой, лучше задать ей минимальную высоту.
  5. В свойствах ячейки макета уберем все границы и текст.

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

Способ 3: Применение условного оформления для скрытия текста

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

  1. В настройках конкретной группировки перейдем в «Условное оформление».
  2. Добавим новый элемент оформления.
  3. В параметре «Текст» укажем пустую строку (просто пробел).
  4. В параметре «Границы» выберем значение Нет линии для всех сторон.
  5. В качестве области укажем только поля самой группировки.

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

Способ 4: Программная корректировка Табличного Документа

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

После вывода результата в ТабличныйДокумент, мы можем перебрать ячейки и принудительно очистить их или скрыть строки/колонки, сохранив при этом группировку.


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

// Пройдем по шапке и минимизируем нужные колонки
Для НомерКолонки = 1 По Результат.ШиринаТаблицы Цикл
    Область = Результат.Область(1, НомерКолонки, 1, НомерКолонки);
    Если Область.Текст = "ИмяСкрываемойГруппировки" Тогда
        Область.Текст = "";
        Результат.Область(, НомерКолонки).ШиринаКолонки = 1;
    КонецЕсли;
КонецЦикла;

Важный нюанс: при программном скрытии колонок через свойство Видимость = Ложь кнопки сворачивания могут исчезнуть. Поэтому рекомендуется именно уменьшать ширину или очищать содержимое, а не полностью скрывать область.

Резюме и рекомендации

Подводя итог, можно сказать, что «красивое» решение в 1С — это то, которое стабильно работает и не ломает стандартный функционал. Если вам нужно убрать заголовки, сохранив сворачивание:

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

← На главную