Как получить имя (ключ) варианта отчета СКД в модуле объекта?

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

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

Решение через дополнительные свойства компоновщика

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

  1. Подготовка в модуле формы: Нам необходимо перехватить момент загрузки настроек варианта и поместить идентификатор варианта в объект КомпоновщикНастроек.
  2. Чтение в модуле объекта: В процедуре ПриКомпоновкеРезультата мы обращаемся к тому же объекту и извлекаем сохраненное значение.

Разберем пример кода для реализации этого механизма. В модуле формы отчета добавьте (или расширьте) обработчик события следующим образом:


&НаСервере
Процедура ПриЗагрузкеВариантаНаСервере(Настройки)
    // Сохраняем ключ и представление варианта в дополнительные свойства компоновщика
    Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("КлючВарианта", КлючТекущегоВарианта);
    Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ПредставлениеВарианта", ПредставлениеТекущегоВарианта);
КонецПроцедуры

Теперь, когда данные переданы в структуру свойств, мы можем считать их в модуле объекта. Откройте модуль объекта и добавьте логику в процедуру ПриКомпоновкеРезультата:


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

Важные замечания и рекомендации

При использовании данного метода важно помнить о следующих нюансах:

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

← На главную