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

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

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

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

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

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

Рассмотрим пошагово, как это реализовать:

  1. Откроем схему компоновки данных и перейдем на вкладку «Макеты» — для этого подойдёт консоль СКД и редактор объектов для разработчика.
  2. Нажмем кнопку добавления макета и выберем тип «Макет заголовка группировки».
  3. В параметрах макета укажем имя той группировки, заголовок которой нужно скрыть. Если имя не задано в настройках, его следует предварительно установить на вкладке «Настройки».
  4. В области макета выделим одну ячейку, но оставим ее абсолютно пустой: без текста, без рамок и без заливки.
  5. Важный нюанс: Чтобы строка не занимала место, в свойствах этой пустой ячейки можно установить фиксированную высоту, равную 0.1.

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

Метод 2. Программное удаление строк из итогового документа

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

Посмотрим на пример реализации такого подхода:


// В настройках СКД для заголовка поля или группировки укажем текст "УдалитьШапку"

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

Рассмотрим ситуацию: этот способ идеален, если вы выводите отчет в цикле. Мы просто помечаем ненужные части и «вырезаем» их из финального документа. Это избавляет от необходимости бороться с логикой компоновщика макета. Для этой задачи можно использовать готовый пример отчета с выводом нескольких отчетов СКД в один табличный документ.

Метод 3. Скрытие через Условное оформление

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

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

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

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

Метод 4. Тонкая настройка процессора вывода

Если мы выводим отчет программно, используя ПроцессорКомпоновкиДанных и ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент, у нас появляется возможность контролировать каждый выводимый элемент. Проанализируем, как можно «отсечь» заголовки на этапе вывода.

Разберем пример кода, который позволяет пропускать элементы типа «Заголовок»:


ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);

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

Пока Истина Цикл
    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Если ЭлементРезультата = Неопределено Тогда
        Прервать;
    КонецЕсли;

    // Проверяем тип элемента. Если это начало заголовка — игнорируем его.
    Если ЭлементРезультата.ТипЭлемента <> ТипЭлементаРезультатаКомпоновкиДанных.Заголовок 
         И ЭлементРезультата.ТипЭлемента <> ТипЭлементаРезультатаКомпоновкиДанных.НачалоИерархии Тогда
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
    КонецЕсли;
КонецЦикла;

В данном примере мы используем свойство ТипЭлемента. Это позволяет нам гибко управлять структурой документа. Например, мы можем пропускать заголовки ресурсов, но оставлять заголовки группировок, или наоборот.

Метод 5. Сборка данных во внешнюю Таблицу Значений

Если отчет крайне сложный, содержит множество наборов данных и условий по периодам, иногда проще отказаться от прямого вывода СКД в таблицу. Рассмотрим архитектурный подход: первая СКД используется только для получения «сырых» данных. Мы выгружаем результат ее работы в ТаблицуЗначений.

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

Резюме

Мы рассмотрели различные подходы к скрытию заголовков в СКД. Выбор конкретного метода зависит от ваших задач:

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

← На главную