Имя: Пароль:
1C
1С v8
Задание динамических параметров в СКД
0 chingiz
 
22.08.11
14:00
В общем выполняю учебное задание. Цель - создать динамически изменяющийся запрос на основании кол-ва характеристик номенклатуры и потом подменить его в скд.

Запрос написал, в скд сделал заполнение параметров(в отладчике видно, что заполняет). Но почему-то он их в итоге не заполняет, чего-то еще не хватает. Вот выкладка куска кода по настройке скд.

СхемаКомпоновкиДанных = Отчеты.СКД_СвойстваНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1;
НаборДанных.Запрос=
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ЗначенияСвойствНоменклатуры.НаборСвойств КАК НаборСвойств "
   +ВремПоля+
   "ИЗ
   |    РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры"+
   ВремЗапрос;
Настройки=СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);    
   
   НомерТекПеременной = 0;
   Выборка.Сбросить();                                                              
   Пока Выборка.Следующий() Цикл
       НомерТекПеременной = НомерТекПеременной + 1;
       ТекПеременнаяИмени = "ВидСвойства" + НомерТекПеременной;
       
       
       Параметр = Настройки.ПараметрыДанных.Элементы.Найти(ТекПеременнаяИмени);
       Если Параметр=Неопределено Тогда
           Параметр=Настройки.ПараметрыДанных.Элементы.Добавить();
           параметр.Параметр=Новый ПараметрКомпоновкиДанных(ТекПеременнаяИмени);
       КонецЕсли;
       Параметр.Использование=Истина;
       Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ТекПеременнаяИмени, Выборка.Ссылка);
       
   КонецЦикла;
   
   Настройки = КомпоновщикНастроек.Настройки;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
       
   
   КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
   
   ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
   
   ЭлементыФормы.Результат.Очистить();
   ДокументРезультат=ЭлементыФормы.Результат;
   
   ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   
   ДокументРезультат.ОтображатьСетку=Ложь;
   ДокументРезультат.ОтображатьЗаголовки=Ложь;
   ДокументРезультат.Показать();
1 chingiz
 
22.08.11
14:27
Точнее сказать при вывыводе отчета выдает ошибку, что параметр не задан. Помогите, уже пол дня бьюсь!
2 jump if zero
 
22.08.11
14:47
Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ТекПеременнаяИмени);
3 chingiz
 
22.08.11
15:31
Разрешилось использованием параметровсхемыданных в цикле выборки вместо параметров компоновки

ПараметрСхемы  = СхемаКомпоновкиДанных.Параметры.Добавить();
       ПараметрСхемы.Имя = ТекПеременнаяИмени;
       ПараметрСхемы.Заголовок = ТекПеременнаяИмени;
       ПараметрСхемы.Значение = Выборка.Ссылка;
       ПараметрСхемы.ОграничениеИспользования = Истина;
И все работает как надо, только настройки вывода подпилить осталось.
4 chingiz
 
22.08.11
15:32
(2) Ну он и так видит настройки, они заданы ранее.