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

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

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

Способ 1. Использование штатной настройки «Расположение заголовков ресурсов»

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

Рассмотрим пошагово, как применить эту настройку:

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

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

Способ 2. Создание индивидуального макета группировки

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

Разберем алгоритм действий по созданию макета:

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

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

Пример настройки параметра в макете:

В ячейке макета укажем текст (Период), а в свойствах ячейки установим тип "Параметр". В таблице параметров ниже свяжем этот параметр с полем системы компоновки (например, Месяц).

Способ 3. Скрытие через условное оформление

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

Для реализации этого способа выполним следующие действия:

  1. В настройках СКД перейдем на вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В настройках оформления установим Текст — впишем туда пустую строку или неразрывный пробел (Alt+255), а также установим Стиль границы сверху — Нет линии.
  4. На вкладке Условие ничего не указываем (если нужно скрыть всегда).
  5. На вкладке Оформляемые поля выберем поле нашего ресурса.
  6. Критически важный шаг: на вкладке Дополнительно (или "Область использования") снимем все галочки, кроме В заголовке полей.

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

Способ 4. Управление через структуру выбранных полей

Часто лишние строки появляются из-за того, что поля ресурсов добавлены в "Выбранные поля" на уровне всего отчета, а не внутри конкретных группировок. Посмотрим, как оптимизировать структуру:

  1. Очистим список Выбранные поля на верхнем уровне настроек отчета.
  2. Зайдем в настройки конкретной группировки колонок.
  3. Добавим ресурсы именно в Выбранные поля этой группировки.

Когда ресурс находится "внутри" группировки, СКД понимает контекст и часто автоматически убирает заголовок ресурса, если он является единственным в данной ветке иерархии. Если же вы используете кросс-таблицу, попробуйте создать Группировку по детальным записям внутри колонок и вынести ресурсы туда — это изменит алгоритм отрисовки заголовков платформой.

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

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

Рассмотрим пример логики программной обработки:


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

КонецПроцедуры

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

Резюме

Подведем итоги нашего анализа. Для большинства задач достаточно настройки Расположение заголовков ресурсов = Нет. Если же требуется сложная визуализация, мы рекомендуем использовать Макеты группировок с объединением ячеек — это наиболее надежный способ с точки зрения платформы. Условное оформление отлично подходит для быстрого исправления ("костыля"), а программная обработка — для уникальных случаев, где важен каждый пиксель финального документа.

← На главную