Описание
Когда мы разрабатываем отчет на СКД, то мы можем задать список доступных значений для полей наборов данных и параметров прямо в конфигураторе.
Но мы ограничены тем, что можем задавать только статические данные - предопределенные элементы справочников, фиксированные значения примитивных типов и т.д. А что если мы хотим заполнить этот список доступных значений своим алгоритмом?
Решение
Буду краток:
// Модуль объекта отчета
Процедура ИнициализироватьСКД()
// Доступные значения параметра
ПараметрПериод = СхемаКомпоновкиДанных.Параметры.Найти("Период");
ДоступныеЗначенияПериода = Новый СписокЗначений;
Период = КонецМесяца(НачалоГода(ТекущаяДатаСеанса())) + 1;
Для а = 1 По 12 Цикл
Представление = Формат(Период - 1, "ДФ='MMMM yyyy'"); // Январь 2025
ДоступныеЗначенияПериода.Добавить(Период, Представление);
Период = ДобавитьМесяц(Период, 1);
КонецЦикла;
ПараметрПериод.УстановитьДоступныеЗначения(ДоступныеЗначенияПериода);
// Доступные значения поля
ОсновнойНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("ОсновнойНаборДанных");
ПолеОрганизация = ОсновнойНаборДанных.Поля.Найти("Организация");
ДоступныеЗначенияОрганизации = Новый СписокЗначений;
Выборка = Справочники._ДемоОрганизации.Выбрать();
Выборка.Следующий();
ДоступныеЗначенияОрганизации.Добавить(Выборка.Ссылка);
ПолеОрганизация.УстановитьДоступныеЗначения(ДоступныеЗначенияОрганизации);
КонецПроцедуры
ИнициализироватьСКД();
В область инициализации модуля объекта отчета добавляем код, который по сути переопределит схему компоновки данных до того как будет инициализирован компоновщик настроек, открыта форма отчета и т.д. В результате мы получим ограниченный список выбора для полей и параметров во всех формах отчета: непосредственно в форме отчета, форме настроек, форме редактирования варианта отчета.
Результат