Имя: Пароль:
1C
1С v8
Передача параметра в СКД програмно
0 AlexGS87
 
29.05.13
14:37
Процедура Кнопка1Нажатие(Элемент)
   СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;


//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();

//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);

ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);  
               
;

КонецПроцедуры

Процедура ПриОткрытии()
    ЗначениеПараметраТара = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Тара"));
       
       Если ЗначениеПараметраТара <> Неопределено Тогда
           ЗначениеПараметраТара.Значение = Справочники.Номенклатура.НайтиПоКоду("0000019") ;
           ЗначениеПараметраТара.Использование = Истина;
       КонецЕсли;


КонецПроцедуры



В результате вылетает ошибка:
{Отчет.Отчет2.Форма.ФормаОтчета.Форма(30)}: Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);  
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(7, 69)}: Не задано значение параметра "тара"
Интек_ОборотыТарыПоставщикиОстаткиИОбороты.Номенклатура.Родитель = <<?>>&тара


Текст запроса
ВЫБРАТЬ
   ОборотыТарыПоставщикиОстаткиИОбороты.Номенклатура
ИЗ
   РегистрНакопления.Интек_ОборотыТарыПоставщики.ОстаткиИОбороты КАК ОборотыТарыПоставщикиОстаткиИОбороты
ГДЕ
   ОборотыТарыПоставщикиОстаткиИОбороты.Номенклатура.Родитель = &тара


При виводе без параметра все работает. Как исправить даную ситуацию. Спасибо.
1 mikecool
 
29.05.13
14:38
если тара - предопределенный элемент, то задай значение на закладке параметры
2 AlexGS87
 
29.05.13
14:43
Дело в том что это я для примера взял один параметр, для того чтобы разобратся как всё этоработает. В реальной задаче у меня 4-5 параметров будет, которые будут вводится пользователем с формы.
3 mikecool
 
29.05.13
14:47
(2) тогда к каждому условию добавлять ИЛИ &Параметр = &ПустоеЗначениеТипаПараметр
или пользоваться отборами
4 AlexGS87
 
29.05.13
14:54
Не понятная ситуация почему когда без параметров запрос тогда отчет виполняется (ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ), а если есть параметры , то на этой строчке вылетает
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); ?
5 AlexGS87
 
29.05.13
14:56
Если можно то маленький примерчик для передачи параметра при программном создании отчета.
6 Kreont
 
29.05.13
15:01
Да вроде так же в коде в ПриОткрытии:
КомпоновщикНастроек.Инициализировать(Неопределено);
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].ПравоеЗначение = Склад;
КомпоновщикНастроек.Настройки.Отбор.Элементы[0].Использование = Истина;

А может не работает, поскольку потом загрузку настроек еще раз делаешь строкой:
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
7 AlexGS87
 
29.05.13
15:07
Спасибо, сейчас попробую
8 AlexGS87
 
29.05.13
15:39
Kreont, спасибо за подсказку. Дело действительно было в том что настройки передавались по умолчанию, без заполненых параметров.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан