|
Параметры СКД программно не заполняются | ☑ | ||
---|---|---|---|---|
0
Kukr47
10.08.23
✎
18:20
|
Заполняю программно параметры скд, делаю это в модуле объекта в процедуре
ПриЗагрузкеВариантаНаСервере(Форма, НовыеПользовательскиеНастройкиСКД) потом код заполнения СтандартнаяОбработка = Ложь; ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("Склады"); //ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки); ПараметрСКД = НовыеПользовательскиеНастройкиСКД.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("Склады"); Текст = " |ВЫБРАТЬ различные | ОстаткиТоваровВоВнешнихСистемах.НаименованиеСклада КАК НаименованиеСклада |ИЗ | РегистрСведений.ОстаткиТоваровВоВнешнихСистемах КАК ОстаткиТоваровВоВнешнихСистемах |"; Запрос = Новый Запрос(Текст); Выборка = Запрос.Выполнить().Выбрать(); СписокВыбора = Новый СписокЗначений; Пока Выборка.Следующий() Цикл СписокВыбора.Добавить(Выборка.НаименованиеСклада); КонецЦикла; ПараметрСКД.ДоступныеЗначения = СписокВыбора; но при загрузке отчета параметры все равно остаются пустые, хотя в отладке они были заполнены... |
|||
1
lodger
10.08.23
✎
18:42
|
посмотри очередность событий формы отчета
https://its.1c.ru/db/pubcomplexreports/content/38/hdoc В параметре Настройки в обработчик передаются настройки варианта отчета, имеющие тип НастройкиКомпоновкиДанных. В данном обработчике методом УстановитьЗначениеПараметра() изменен заголовок отчета, а также установлены значения параметров начала и конца отчетного периода. Однако если настройки являются пользовательскими (в нашем случае – это параметры отчетного периода) и пользователь хоть раз задавал их значения в форме отчета, то устанавливать их в этом обработчике бесполезно. Это происходит потому, что после загрузки настроек варианта отчета восстанавливаются пользовательские настройки, сделанные пользователем при последнем формировании отчета и автоматически сохраненные платформой. Пользовательские настройки накладываются на настройки варианта и загружаются в компоновщик настроек. При этом вызываются события ПередЗагрузкойПользовательскихНастроекНаСервере и ПриЗагрузкеПользовательскихНастроекНаСервере. |
|||
2
Kukr47
14.08.23
✎
17:34
|
Добавлял куда угодо перед/при загрузкой настроек и вариантов отчета, не помогало. Помогло вот что:
В процедуре ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Настройки.События.ПриОпределенииПараметровВыбора = Истина; Потом создаем экспортную процедуру Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт и там уже заполняем параметры, пример заполнения: Текст = "текст"; Запрос = Новый Запрос(Текст); Выборка = Запрос.Выполнить().Выбрать(); СписокВыбора = Новый СписокЗначений; Пока Выборка.Следующий() Цикл СписокВыбора.Добавить(Выборка.НаименованиеСклада); КонецЦикла; ПараметрКомпоновки = Новый ПараметрКомпоновкиДанных("НазваниеПараметра"); ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки); ОбщПар = КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы.Найти("НазваниеПараметра"); ОбщПар.ДоступныеЗначения = СписокВыбора; //ОбщПар.Использование = Истина; ПараметрСКД.Значение = СписокВыбора; ПараметрСКД.Использование = Истина; Если ЗначениеЗаполнено(ПараметрСКД.ИдентификаторПользовательскойНастройки) Тогда ПользовательскийПараметр = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти( ПараметрСКД.ИдентификаторПользовательскойНастройки); Если ТипЗнч(ПользовательскийПараметр) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ПользовательскийПараметр.Значение = ПараметрСКД.Значение; КонецЕсли; КонецЕсли; Оставлю тут, может кому поможет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |