Как вывести параметры СКД на форму отчета и настроить условное оформление ячеек

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

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

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

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

Разберем по шагам алгоритм включения быстрого доступа:

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

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

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

Оптимизация параметров дат через тип СтандартныйПериод

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

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

При таком подходе в запросе отпадает необходимость оборачивать параметры в функции НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА, а пользователь получает удобную стандартную кнопку выбора периода.

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

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

Посмотрим на пример установки значений в событии или перед формированием, когда параметры не включены в пользовательские настройки:


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

КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаПо", ДатаОкончания);

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


Для Каждого ЭлементНастройки Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
    Если ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
        Если Строка(ЭлементНастройки.Параметр) = "ДатаС" Тогда
            ЭлементНастройки.Значение = ДатаНачала;
            ЭлементНастройки.Использование = Истина;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Выделение ячеек цветом: Условное оформление СКД

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

Разберем по шагам создание правила оформления:

  1. В схеме компоновки данных перейдем на вкладку Настройки и выберем закладку Условное оформление.
  2. Добавим новый элемент условного оформления.
  3. В поле Область оформления выберем необходимое свойство, например, Цвет фона или Цвет текста, и зададим желаемый цвет.
  4. В поле Условие добавим строку сравнения: поле КоличествоОборот со значением Больше 5000.
  5. Перейдем в колонку Оформляемые поля — это ключевой момент настройки. Обязательно укажем конкретное поле КоличествоОборот. Если список оформляемых полей оставить пустым, платформа применит цвет ко всей строке таблицы, а не к одной ячейке.

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

Альтернативные способы оформления ячеек

Если стандартного условного оформления недостаточно для решения задачи, рассмотрим дополнительные способы визуального выделения:

  1. Использование собственных макетов СКД. На вкладке Макеты схемы компоновки данных можно задать индивидуальный макет поля или группировки, жестко определив границы, шрифты и параметры макета для вывода данных.
  2. Программная постобработка табличного документа. В модуле объекта отчета в процедуре ПриКомпоновкеРезультата можно переопределить стандартный вывод. Мы выполняем компоновку программно с помощью объектов ПроцессорКомпоновкиДанных и ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент в результирующий ТабличныйДокумент, после чего в цикле обходим требуемые области ячеек и переопределяем свойства ЦветФона или ЦветТекста в зависимости от значений.
← На главную