Как в СКД скрыть заголовки ресурсов и сгруппировать колонки таблицы?

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

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

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

Способ 1. Использование макетов СКД (Оптимальный вариант)

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

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

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

Способ 2. Установка пустого заголовка (Быстрый обходной путь)

Если отчет простой и нет желания возиться с рисованием макетов, применим небольшую хитрость. Мы можем просто «стереть» название ресурса.

  1. Перейдите на вкладку Наборы данных (или в настройки выбранных полей).
  2. Найдите нужный ресурс (например, Количество).
  3. В колонке Заголовок установите значение, состоящее из одного пробела (" ").

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

Способ 3. Группировка в папке «Выбранные поля»

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

  1. Перейдите на вкладку Настройки и откройте раздел Выбранные поля.
  2. Создайте новую группу (папку) полей.
  3. Добавьте в эту папку необходимые ресурсы.
  4. В свойствах созданной папки найдите параметр Расположение и установите для него значение Вертикально.

Скомбинировав этот метод с очисткой заголовка самой группы, мы изменим геометрию вывода колонок: они будут располагаться строго друг под другом, экономя горизонтальное пространство.

Способ 4. Изменение расположения ресурсов в других настройках

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

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

Способ 5. Программная постобработка табличного документа

Если стандартных настроек и макетов не хватает для реализации сложного дизайна (например, нужно хитро объединить ячейки), применим программную постобработку. Этот метод дает 100% контроль над результатом.

В модуле объекта отчета необходимо переопределить обработчик события ПриКомпоновкеРезультата. Суть метода заключается в программном выводе СКД в ТабличныйДокумент с последующим обходом строк шапки и удалением или объединением ячеек с помощью метода Объединить().

Рассмотрим пример того, как выглядит каркас такого решения:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Отключаем стандартный вывод отчета
    СтандартнаяОбработка = Ложь;
    
    // Программно формируем отчет
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    // Постобработка: поиск и удаление/объединение лишних строк шапки
    // Обходим верхние строки ДокументРезультат и скрываем строку с ресурсами
    // (Алгоритм обхода зависит от структуры конкретного отчета)
    
КонецПроцедуры

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

← На главную