Имя: Пароль:
1C
 
Параметры для набора данных-объект из СКД
0 inkvizitr
 
12.07.17
15:28
Есть вот такой код, где программно генерирую текст запроса, в запросе буду реализовывать параметры, как из СКД передать их в запрос?


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

            
        КонецЕсли;
        
        Если Сч < КоличествоДокументов Тогда
            ТекстЗапроса = ТекстЗапроса +    
            "
            |ОБЪЕДИНИТЬ ВСЕ
            |";
        КонецЕсли;            
        Сч = Сч + 1;
    КонецЦикла;
    
    
    Запрос = Новый Запрос;   //Отрабатываю запрос
    Запрос.Текст = ТекстЗапроса;
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выгрузить();
    
    //Вывожу ТЗ в макет СКД
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);    
    
    ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", Выборка);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
    
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры
1 aleks_default
 
12.07.17
15:33
ПараметрОтчета = Новый ПараметрКомпоновкиДанных(ИмяПараметра);
ЗначениеПараметра = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрОтчета).Значение;
2 inkvizitr
 
12.07.17
15:34
(1) щас попробую
3 kittystark
 
12.07.17
16:08
(0) так на всякий, ащипка вищел:

КАК Отвественный

буквку Т потерял