В общем выполняю учебное задание. Цель - создать динамически изменяющийся запрос на основании кол-ва характеристик номенклатуры и потом подменить его в скд.
Запрос написал, в скд сделал заполнение параметров(в отладчике видно, что заполняет). Но почему-то он их в итоге не заполняет, чего-то еще не хватает. Вот выкладка куска кода по настройке скд.
СхемаКомпоновкиДанных = Отчеты.СКД_СвойстваНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1;
НаборДанных.Запрос=
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗначенияСвойствНоменклатуры.НаборСвойств КАК НаборСвойств "
+ВремПоля+
"ИЗ
| РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры"+
ВремЗапрос;
Настройки=СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
НомерТекПеременной = 0;
Выборка.Сбросить();
Пока Выборка.Следующий() Цикл
НомерТекПеременной = НомерТекПеременной + 1;
ТекПеременнаяИмени = "ВидСвойства" + НомерТекПеременной;
Параметр = Настройки.ПараметрыДанных.Элементы.Найти(ТекПеременнаяИмени);
Если Параметр=Неопределено Тогда
Параметр=Настройки.ПараметрыДанных.Элементы.Добавить();
параметр.Параметр=Новый ПараметрКомпоновкиДанных(ТекПеременнаяИмени);
КонецЕсли;
Параметр.Использование=Истина;
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(ТекПеременнаяИмени, Выборка.Ссылка);
Разрешилось использованием параметровсхемыданных в цикле выборки вместо параметров компоновки
ПараметрСхемы = СхемаКомпоновкиДанных.Параметры.Добавить();
ПараметрСхемы.Имя = ТекПеременнаяИмени;
ПараметрСхемы.Заголовок = ТекПеременнаяИмени;
ПараметрСхемы.Значение = Выборка.Ссылка;
ПараметрСхемы.ОграничениеИспользования = Истина;
И все работает как надо, только настройки вывода подпилить осталось.
(2) Ну он и так видит настройки, они заданы ранее.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший