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

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

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

Проблема стандартных настроек компоновки

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

Способ 1: Ограничение доступности и использование выражений

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

  1. Откроем схему компоновки данных на закладке «Параметры».
  2. Для нужного нам параметра установим галочку в колонке «Ограничение доступности». Это скроет его из формы настроек.
  3. Убедимся, что снята галочка «Включать в пользовательские настройки».
  4. Если параметр вычисляется на основе других данных, пропишем формулу в колонке «Выражение».

Важный нюанс: если вы устанавливаете значение этого параметра программно через КомпоновщикНастроек.Настройки.ПараметрыДанных, система все равно может решить вывести его в заголовок, так как он считается «используемым». В этом случае перейдем к следующим методам.

Способ 2: Использование механизмов БСП (Библиотеки стандартных подсистем)

Если ваша конфигурация построена на базе БСП (например, УТ 11, ERP, БП 3.0), то управление видимостью параметров реализовано на уровне стандартов разработки. Рассмотрим, как это сделать через модуль менеджера отчета.

В модуле менеджера отчета найдем или создадим процедуру ОпределитьНастройкиОтчета. В ней мы можем заполнить массив скрытых параметров, которые система не будет выводить в шапку.


Процедура ОпределитьНастройкиОтчета(Настройки) Экспорт
    // Скрываем конкретные параметры из заголовка отчета
    Настройки.ПараметрыОтчета.СкрытыеПараметры.Добавить("МойСлужебныйПараметр");
    
    // Также можно управлять общим выводом настроек
    Настройки.ПараметрыОтчета.ВыводитьПараметры = "ТолькоИзмененные";
КонецПроцедуры

Этот метод является наиболее «чистым» для современных конфигураций 1С, так как он не ломает логику компоновки и корректно обрабатывается стандартными механизмами вывода отчетов.

Способ 3: Визуальный «хак» через условное оформление

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

Мы можем создать элемент условного оформления для области, где выводится параметр, и установить его размеры в минимально возможные значения. Рассмотрим алгоритм:

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

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

Способ 4: Программное удаление области из итогового документа

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


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

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

Способ 5: Режим вывода «Только измененные»

Посмотрим на свойство «Выводить параметры» в настройках варианта еще раз. Кроме значений «Включать» и «Не выводить», там есть опция «Только измененные». Это очень мощный инструмент.

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

Рекомендации

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

Проанализировав все способы, мы видим, что система 1С предоставляет достаточно гибкости для того, чтобы сделать отчет удобным для конечного пользователя, скрыв всю внутреннюю «кухню» программных расчетов.

← На главную