Как программно отключить вывод отборов в отчете СКД?

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

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

Основная причина ошибки: неверный тип значения параметра

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

Параметр ВыводитьОтбор принимает значения системного перечисления ТипВыводаТекстаКомпоновкиДанных, которое содержит следующие варианты:

  1. Авто — платформа определяет необходимость вывода текста самостоятельно.
  2. НеВыводить — полностью скрывает блок отборов из отчета.
  3. Выводить — принудительно выводит отборы.
  4. ВыводитьЗаголовок — выводит только заголовок секции отборов.

Корректный способ программной установки параметра

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


ПараметрВывода = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
Если ПараметрВывода <> Неопределено Тогда
    ПараметрВывода.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
    ПараметрВывода.Использование = Истина;
КонецЕсли;

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

Различие между отборами отчета и отборами группировок

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

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


// Пример отключения вывода отбора для первой группировки отчета
Группировка = Настройки.Структура[0];
ПараметрВыводаГруппировки = Группировка.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
Если ПараметрВыводаГруппировки <> Неопределено Тогда
    ПараметрВыводаГруппировки.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
    ПараметрВыводаГруппировки.Использование = Истина;
КонецЕсли;

Другие причины, почему отбор может продолжать отображаться

Выясним дополнительные нюансы, которые могут мешать скрытию отборов:

  1. Перезапись настроек компоновщиком: Если в коде изменяются свойства в объекте КомпоновщикНастроек.Настройки, но затем в КомпоновщикМакета.Выполнить() передается результат вызова КомпоновщикНастроек.ПолучитьНастройки() с наложением пользовательских настроек, внесенные программно правки могут быть сброшены. Всегда следует проверять, какой именно экземпляр настроек передается в компоновщик макета.
  2. Смешение отборов и параметров данных: Часто в шапку отчета выводятся параметры запроса (например, период или организация), которые визуально похожи на отборы. За их отображение отвечает отдельный параметр — ВыводитьПараметрыДанных. Для его скрытия также используется значение ТипВыводаТекстаКомпоновкиДанных.НеВыводить.
  3. Служебные условия через фиксированные настройки: Если условие фильтрации является полностью техническим и его не нужно видеть пользователю даже в настройках формы, рекомендуется помещать его в КомпоновщикНастроек.ФиксированныеНастройки.Отбор. Такие фильтры автоматически не выводятся в стандартную шапку отчета.
← На главную