Имя: Пароль:
1C
 
СКД - с отборами на форме
,
0 lamme
 
10.08.21
21:23
запрос - в макете.
в самом тексте запроса есть параметр, типа " ... ВидЦены = &ВидЦены ..."
на форме - отборы этого скд.

цель - вывести результат запроса в таблицу значений

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



Где тут параметр установить?
1 Asmody
 
10.08.21
21:29
во втором параметре метода Выполнить() компоновщика макета
2 lamme
 
10.08.21
21:35
ОтборНаФорме.Настройки - это параметры на форме. которые ползователь задает руками.
но это не тот параметр - что в запросе прописан как " ... ВидЦены = &ВидЦены ..."

те в обычном звапросе это было бы типа
запрос.установитьпараметр("ВидЦены",ЧегоТоТам);
3 Жан Пердежон
 
10.08.21
21:53
(2) а ты внимательней посмотри
4 Asmody
 
10.08.21
21:59
(2) что ты себе там придумал  СКД не сильно волнует.
параметры задаются в настройках
5 Asmody
 
10.08.21
21:59
6 echo77
 
11.08.21
07:02
(0) Я компоную результат с помощью этой процедуры - здесь все просто
Процедура ПолучитьДанныеНаОснованииСКД:
https://infostart.ru/public/80164/
7 lamme
 
11.08.21
07:22
спасибо
статья интересная

но все равно не понимаю
куда и как надо добавить свои настройки

подскажите
8 lamme
 
11.08.21
07:32
9 echo77
 
11.08.21
07:43
вот пример:

ТаблицаЗначений = Новый ТаблицаЗначений;
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
СтруктураПараметров = Новый Структура("ДатаОтчета", НашаДата);
ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, ТаблицаЗначений, СтруктураПараметров);
10 lamme
 
11.08.21
07:46
да
это видел

согласно коду

ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;

те вот тут устанавливаются параметры КоллекцияЗначенийПараметров

а у меня в этом месте нет ни одного доступного для установки параметра
11 lamme
 
11.08.21
07:47
если не сложно
можешь куда ниб кинуть пример работающий по твоему алгоритму
чтобы не скачивать
12 lamme
 
11.08.21
07:53
попробовал сделать как в (6)
и все равно ругается
что

Не задано значение параметра "КонецПериода"
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(<<?>>&КонецПериода, ВидЦен = &ВидЦен) КАК ЦеныНоменклатурыСрезПоследних


СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("СКД");
    
    
    ДеревоЗначений = Новый ДеревоЗначений;
    
    СтруктураПараметров = Новый Структура("КонецПериода, ВидЦен", ТекущаяДата(), ВидЦен);
    ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ДеревоЗначений, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, СтруктураПараметров);
13 echo77
 
11.08.21
08:16
(12) проверьте еще раз параметры. Похоже, что здесь ошибка. Должно быть:

ДеревоЗначений = Новый ДеревоЗначений;
    
СтруктураПараметров = Новый Структура("КонецПериода, ВидЦен", ТекущаяДата(), ВидЦен);
ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, ДеревоЗначений, СтруктураПараметров);
14 echo77
 
11.08.21
08:23
Да, тут баг :-)
Надо компоновщик настроек создавать

    СхемаКомпоновкиДанных = ПолучитьМакет("СхемаИзвлеченияДанных");
    ДеревоЗначений = Новый ДеревоЗначений;
    СтруктураПараметров = Новый Структура("КонецПериода", ТекущаяДата());
    
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    
    ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДеревоЗначений, СтруктураПараметров);
15 lamme
 
11.08.21
08:36
Поле объекта не обнаружено (ПараметрыДанных)
        КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
16 lamme
 
11.08.21
10:37
прошу помощи
17 ДенисЧ
 
11.08.21
10:39
А отладчик украли? О_о
18 lamme
 
11.08.21
10:44
нет
но в какое место тыкнуться
чтобы параметры установить
19 ДенисЧ
 
11.08.21
10:46
Что у тебя отладчик про ИсполняемыеНастройки говорит?
20 lamme
 
11.08.21
10:49
извини
сейчас буду тупить..

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


то тут у
СхемаКомпоновкиДанных  - не вижу где есть ИсполняемыеНастройки
21 ДенисЧ
 
11.08.21
10:53
А откуда ты вообще такое слово взял нецензурное?
22 lamme
 
11.08.21
10:53
какое из них ?
23 ДенисЧ
 
11.08.21
11:08
"ИсполняемыеНастройки", на которое 1с ругается.
24 lamme
 
11.08.21
11:14
прикол ...
25 lamme
 
11.08.21
11:14
спасибо
26 lamme
 
11.08.21
11:15
было
ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДеревоЗначений, СтруктураПараметров);
надо
ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, ДеревоЗначений, КомпоновщикНастроек.Настройки,  СтруктураПараметров);
27 lamme
 
11.08.21
11:17
(6)
Спасибо
28 lamme
 
11.08.21
11:17
(23)
Спасибо