Имя: Пароль:
1C
1С v8
не выводит результат из ПроцессораКомпоновки
0 Папай
 
23.02.21
12:40
всем добрый день.
приведу код:

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

может кто подскажет в какую сторону копать.это обмен.между опен картом и 1с.Так вот беру запрос из СКД.запрос дает ссылку на номенклатуру,сделал отдельно очет на СКД.Отчет выводит ссылку на номенклатуру(собственно ссылка для обмена с сайтом на опен карте)
Но вот код категорчиески не двигаться в цикл.То есть при проверке ТаблицаЗначений абсолютно пустая,хотя ПроцессорКомпоновки.следующий() показывает такие параметры:

ЗначенияПараметров    ЗначенияПараметровМакетаКомпоновкиДанных    ЗначенияПараметровМакетаКомпоновкиДанных
Макет    "Макет1"    Строка
Макеты    ОписанияМакетовОбластейМакетаКомпоновкиДанных    ОписанияМакетовОбластейМакетаКомпоновкиДанных
ПроцентВывода    0    Число
РасположениеВложенныхЭлементов    Горизонтально    РасположениеВложенныхЭлементовРезультатаКомпоновкиДанных
ТипЭлемента    Начало и конец    ТипЭлементаРезультатаКомпоновкиДанных
1 Папай
 
23.02.21
12:42
не понятно почему Макет1 если имя макета "ВыгрузкаНоменклатуры"
2 hhhh
 
23.02.21
12:46
попробуйте Результат2
3 Папай
 
23.02.21
12:58
поменял.категорически ноль строк в таблице значений

        Результат2 = Новый ТаблицаЗначений;
        
        ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
        ПроцессорВывода.УстановитьОбъект(Результат2);
        ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
                 сообщить(Результат2.Количество());
        Для каждого СтрокаТовараДляОбработки Из Результат2 Цикл
4 zmaximka
 
23.02.21
13:05
Результат = Новый ТаблицаЗначений; а это зачем?
5 Папай
 
23.02.21
13:08
(4)потому что УстановитьОбъект требует таблицу значений
Синтаксис:
УстановитьОбъект(<Объект>)
Параметры:
<Объект> (необязательный)
Тип: ТаблицаЗначений, ДеревоЗначений.
Объект, в который будет осуществляться вывод.
6 Папай
 
23.02.21
13:10
сам СКД отрабатывает отлично.и дает результат
7 Папай
 
23.02.21
13:10
ну всмысле ссылку выкидывает.
8 DrShad
 
23.02.21
13:25
а где у тебя хоть одно выбранное поле?
9 acht
 
23.02.21
13:42
(6) Откуда приходит КомпоновщикСхемы и чем оно инициалируется?
10 acht
 
23.02.21
13:53
(1) > если имя макета
Потому что макет объекта, откуда бы берешь схему компоновки и макет компоновки - разные вещи
11 Папай
 
23.02.21
14:25
(9)
чуть выше у меня есть процедурка по прочтению настроек

и там:

    КомпоновщикСхемы = Новый КомпоновщикНастроекКомпоновкиДанных;
    
    КомпоновщикСхемы.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ВременноеХранилищеСКД));
12 acht
 
23.02.21
14:33
(11) Гм. То есть ты инициализируешь компоновщик вместе с полями выбора и структорой вывода одной схемой, а потом работаешь с другой, из макета объекта. Зачем?

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

Как-то так
13 acht
 
23.02.21
14:35
А, еще после иницалиции возможно понадобится сделать типа

    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);
14 Папай
 
23.02.21
14:36
буду пробовать спасибо
15 Папай
 
24.02.21
13:22
добрый день.хотелось бы поднять тему еще раз так как я в глухом углу.к сожалению предложенный вариант (12)(13)не сработал

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


количество в ТЗ по прежнему ноль.ни одной строки
16 acht
 
24.02.21
13:58
Структура вывода в настрокайх компоновки, ну и в настройках по умолчанию схемы настроена?
17 Вафель
 
24.02.21
13:59

Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
18 Вафель
 
24.02.21
14:00
и вместо

КомпоновщикСхемы.Настройки

лучше писать

КомпоновщикСхемы.ПолучитьНастройки()

иначе будут косяки с пользовательскими настройками
19 Папай
 
24.02.21
14:54
(16)начала заполняться таблица.спасибо.а как по умолчанию прописать узел?если он не предопределенный.потому что по факту из узла 1 элемент зарегистрирован а вижу 9600.то есть это со всех узлов наверное
20 Папай
 
24.02.21
15:15
(12)Друг!атдуши!спасибо.добился нужного результата!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн