Имя: Пароль:
1C
1С v8
Отображение параметров СКД отчета, созданного программно
,
0 Dwarrior
 
12.12.16
12:22
Здравствуйте уважаемые!

Собственно проблема - у формы документа есть макет типа "Схема компоновки данных". Программно загружаю его, задаю параметр запроса, формирую табличный документ, показываю. Отчет формируется верно, но значение параметра в отчете стоит "<Пустое значение>", хотя я его задал. Видимо что-то не так делаю.

Вот код:
    СКД = Документы.ПеремещениеТоваров.ПолучитьМакет("СКДНоменклатураДокументов");
    
    ПараметрДокументы = СКД.НастройкиПоУмолчанию.ПараметрыДанных.Элементы[0];
    ПараметрДокументы.Значение = МассивДокументов;
    ПараметрДокументы.Использование = Истина;

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

Вот когда показываю ТабДок, в секция Параметры данных выглядит так:
Параметры:    Документы перемещения: <Пустое значение>
1 Dwarrior
 
12.12.16
13:24
Кто знает СКД хорошо, подскажите пожалуйста:)
2 bodri
 
12.12.16
13:34
С чего вы взяли, что нужный параметр имеет индекс 0

пример обхода элементов параметров

ПолеСклад = Новый ПолеКомпоновкиДанных("Склад");
    Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
        Если Элемент.ЛевоеЗначение = ПолеСклад Тогда
            ЭлементОтбора = Элемент;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если ЭлементОтбора = Неопределено Тогда
        ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    КонецЕсли;
    ЭлементОтбора.ВидСравнения        = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ЛевоеЗначение        = ПолеСклад;
    ЭлементОтбора.ПравоеЗначение    = Отчет.Склад;
    ЭлементОтбора.Использование        = ЗначениеЗаполнено(Отчет.Склад);
3 bodri
 
12.12.16
13:38
(2) это пример отбора
пример параметра

    ЗначениеПараметраПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
        
    Если ЗначениеПараметраПериод <> Неопределено Тогда
        ЗначениеПараметраПериод.Значение        = ?(Отчет.Дата = '0001-01-01', Отчет.Дата, КонецДня(Отчет.Дата));
        ЗначениеПараметраПериод.Использование    = Истина;
    КонецЕсли;
4 bodri
 
12.12.16
13:39
(0) не должно быть так:
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,СКД.НастройкиПоУмолчанию);
5 bodri
 
12.12.16
13:40
+(4) вы заново передаете настройки по умолчанию

надо:
Настройки = СКД.НастройкиПоУмолчанию;

//установить настройки

// а уже потом

МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД,Настройки);
6 mistеr
 
12.12.16
13:59
(0) Так массив же у тебя, чего ты хотел? Используй СоединитьСтроки().

Задавать параметры можно проще:

СКД.НастройкиПоУмолчанию.ПараметрыДанных.УстановитьЗначениеПараметра("Организация", Организация);
7 Dwarrior
 
12.12.16
17:10
(2),(3) параметр точно один, проверено в отладчике. И это параметр запроса, а не отбор
(5) попробовал так - не помогает, все равно "Пустое значение"
8 Dwarrior
 
12.12.16
17:11
+(7) Значение параметра точно задаю верно, тело отчета выводится правильное, только в секции вывода параметров почему-то Пустое значение
9 Dwarrior
 
12.12.16
17:15
(3)  А где взять КомпоновщикНастроек? Это реквизит Отчета, но у меня самого отчета нет, у меня только СКД в макете
10 EvgeniuXP
 
12.12.16
19:51
(9) создай отчет, и загрузи СКД в него.
11 EvgeniuXP
 
12.12.16
19:53
а создать - у тебя два варианта - либо на форме создай, либо в пофигураторе.