Имя: Пароль:
1C
1С v8
Отчет СКД, программный вывод, при смене настроек (польз) формирует по по старым настройкам
0 SkillUp
 
10.02.20
12:34
Здравствуйте, прошу помочь. Программно вывожу отчет СКД, если изменить настройки (допустим сфомировать за другой период). То выводит данные, из настроек, которые заполнили впервый раз, после открытия (т.е. первые настройки сохраняются, и формируется только по ним отчет). Как программно обновлять настройки каждый раз? В какой процедуре? Короче "плаваю" в этом вопросе. Форма отчета пустая..

При программном выводе отчета у меня только одна процедура:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
1) Начало:   СтандартнаяОбработка = Ложь;

2) Программное заполнение полей СКД: ...

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

КонецПроцедуры
1 SkillUp
 
10.02.20
12:39
"Форма отчета пустая..." Хотел объяснить, что там нету кода. Все по умолчанию.
2 fisher
 
10.02.20
12:51
Если это УФ и используются пользовательские настройки СКД, то и программно изменять настройки нужно именно через "ПользовательскиеНастройки".
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
В этой строчке непонятно откуда у тебя берутся "Настройки". Штатно, если хочешь получить настройки с учетом "ПользовательскиеНастройки", там должны быть КомпоновщикНастроек.ПолучитьНастройки()
3 SkillUp
 
10.02.20
13:01
(2) Да, у меня так :     
      
       //Получаем схему из макета
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //Из схемы возьмем настройки
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
4 SkillUp
 
10.02.20
13:09
(2) Все разобрался, СПАСИБО!
5 SkillUp
 
10.02.20
13:59
Может кому-то поможет:

    ПараметрНач=КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНач"));
    ЗаполнитьЗначенияСвойств(КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрНач.ИдентификаторПользовательскойНастройки),параметр);
    
    ПараметрКон=КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаКон"));
    ЗаполнитьЗначенияСвойств(КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрКон.ИдентификаторПользовательскойНастройки),параметр);

Поэлементно, работает так.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан