Имя: Пароль:
1C
1С v8
Параметры СКД программно не заполняются
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
Добавлял куда угодо перед/при загрузкой настроек и вариантов отчета, не помогало. Помогло  вот что:
В процедуре ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки)

Настройки.События.ПриОпределенииПараметровВыбора  = Истина;

Потом создаем экспортную процедуру Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт и там уже заполняем параметры, пример заполнения:

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