Как убрать слово «Параметры:» при выводе отчета на СКД?

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

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

Анализ проблемы и поведение платформы

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


СхемаКомпоновкиДанных = ПолучитьМакет("Макет");
НастройкиКомпоновки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновки);

// Заполнение параметров
ПараметрСсылка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Ссылка");
ПараметрСсылка.Значение = СсылкаНаОбъект;
ПараметрСсылка.Использование = Истина;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);

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

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

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

Способ 1. Очистка или замена текста ячейки по координатам

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

Обратите внимание на частую ошибку: обращение к нулевым координатам вызовет исключение, так как нумерация строк и колонок в ТабличныйДокумент всегда начинается с единицы. Попытка выполнить код вида ДокументРезультат.Область(4, 0, 4, 0).Текст приведет к системной ошибке. Правильное обращение к ячейке выглядит следующим образом:


// Очищаем ячейку с заголовком параметров по известным координатам
ДокументРезультат.Область(4, 1, 4, 1).Текст = "";

Если в ячейке находится объединенный текст или помимо слова есть другие данные, можно применить функцию СтрЗаменить:


ОбластьПараметров = ДокументРезультат.Область(4, 1, 4, 1);
ОбластьПараметров.Текст = СтрЗаменить(ОбластьПараметров.Текст, "Параметры:", "");

Ограничение метода: жесткая привязка к координатам (строка 4, колонка 1) крайне нестабильна. Достаточно включить или выключить заголовок отчета, изменить состав группировок или применить пользовательские отборы, как строка сдвинется, и очистится полезная информация отчета.

Способ 2. Динамический поиск и удаление ячейки через НайтиТекст

Рассмотрим более надежный вариант программной постобработки. Чтобы не зависеть от фиксированных номеров строк, воспользуемся встроенным методом табличного документа НайтиТекст(). Разберем по шагам, как это реализовать:

  1. Выполняем компоновку и формируем документ стандартным способом.
  2. Вызываем метод НайтиТекст для поиска подстроки «Параметры:».
  3. Если область найдена, очищаем ее содержимое или удаляем строку со сдвигом.

НайденнаяОбласть = ДокументРезультат.НайтиТекст("Параметры:");
Если НайденнаяОбласть <> Неопределено Тогда
    // Вариант А: просто очистить надпись
    НайденнаяОбласть.Текст = "";
    
    // Вариант Б: полностью удалить строку со сдвигом, чтобы не оставалось пустой полосы
    ДокументРезультат.УдалитьОбласть(НайденнаяОбласть, ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЕсли;

Такой подход защищает код от изменений в макете, добавления новых колонок или изменения высоты заголовка.

Способ 3. Перенос параметров в заголовок отчета

Проанализируем архитектурную альтернативу без постобработки ячеек табличного документа. Если параметры требуется выводить компактно в верхней части листа, их стандартный вывод можно полностью отключить в настройках компоновщика (параметр вывода Выводить параметры данных = Не выводить), а сами значения поместить непосредственно в общий заголовок отчета Title.

Посмотрим на пример формирования многострочного заголовка перед выводом отчета:


ПараметрыВывода = КомпоновщикНастроек.Настройки.ПараметрыВывода;

ЭлементЗаголовок = ПараметрыВывода.Элементы.Найти("Title");
ЭлементЗаголовок.Использование = Истина;

ТекстЗаголовка = "Реестр сертификатов к товарной накладной" + Символы.ПС
    + "Грузоотправитель: " + ПараметрДанныхГрузоотправитель.Значение + Символы.ПС
    + "ИНН/КПП: " + ПараметрДанныхГрузоотправительИННКПП.Значение;

ЭлементЗаголовок.Значение = ТекстЗаголовка;

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

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

Если требуется строгое табличное оформление реквизитов шапки, оптимальным решением является использование механизмов СКД без пост-модификации:

  1. В настройках схемы отключаем стандартный вывод параметров.
  2. В структуру настроек отчета на самый верх добавляем отдельную группировку, не привязанную к полям данных (пустая группировка), и задаем ей имя, например, ШапкаПараметров.
  3. Для этой группировки в других настройках указываем «Вариант использования группировки = Дополнительная информация» и отключаем оформление.
  4. На вкладке «Макеты» схемы компоновки создаем «Макет группировки» типа «Заголовок» для созданной группировки.
  5. В ячейках макета оформляем нужный вид шапки, а в свойствах ячеек указываем выражения вида ПараметрыДанных.Грузоотправитель или шаблоны [ПараметрыДанных.Поставщик].

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

← На главную