СКД установить параметры программно
Очень часто встречаю что программистов заводит в тупик такой момент как программная установка параметров системы компоновки данных (далее СКД). Сделать это можно через ‘КомпоновщикНастроек’ нашей СКД.
Допустим у нас есть отчет ‘ЗадачиКлиента’ и в СКД в наборе данных есть параметр ‘&Владелец’. Сразу уточню что это отчет реализован через 1C Enterprise Development Tools, но решения здесь будут точно такие же, как если бы мы это делали через классический конфигуратор:
Если мы хотим этот параметр устанавливать программно, то важно убедиться что он доступен, иначе мы получим ошибку что параметр не найден (флаг стоять не должен):
И так что бы программно установить параметру СКД определенное значение, мы можем использовать процедуру модуля отчета ‘ПриКомпоновкеРезультата’ и компоновщиком настроек:
1 2 3 4 5 6 7 8 |
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ПараметрСКД = Новый ПараметрКомпоновкиДанных("Владелец"); ЗначениеПараметрСКД = Справочники.Клиенты.Личное; КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрСКД, ЗначениеПараметрСКД); КонецПроцедуры |
Практически аналогично поступаем и в модуле формы отчета, но там для того что бы получить компоновщик настроек, нам придется обратится к основному реквизиту формы ‘Отчет’:
Программный код будет почти аналогичным предыдущему за счет пары нюансов:
1 2 3 4 5 6 7 8 9 |
&НаКлиенте Процедура ПриОткрытии(Отказ) ПараметрСКД = Новый ПараметрКомпоновкиДанных("Владелец"); ЗначениеПараметрСКД = ПредопределенноеЗначение("Справочник.Клиенты.Личное"); Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрСКД, ЗначениеПараметрСКД); КонецПроцедуры |
Так же можно использовать и другую конструкцию при установке параметров СКД:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) //ПараметрСКД = Новый ПараметрКомпоновкиДанных("Владелец"); //ЗначениеПараметрСКД = Справочники.Клиенты.Личное; //КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрСКД, ЗначениеПараметрСКД); ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Владелец"); ПараметрСКД.Использование = Истина; ПараметрСКД.Значение = Справочники.Клиенты.Личное; КонецПроцедуры |
И напоследок. Прежде чем писать какой-то свой код, убедитесь, что до вас его уже не написали:
1 2 3 4 5 |
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) бит_ОтчетыКлиент.УстановитьЗначениеПараметраКомпоновщика(КомпоновщикНастроек, Справочники.Клиенты.Личное, "Владелец"); КонецПроцедуры |
Всем удачи и простой разработки отчетов на СКД!