Имя: Пароль:
1C
 
Конвертация 2.0
0 bebibo
 
26.09.23
13:25
Конвертация данных 2.0. Запросом получаю сгруппированные данные таблицы, которая в документе из ЗУП. Нужно данные из этого запроса подставить в таблицу в УНФ. Как можно это сделать. Знаю что можно как-то параметром передать результат запроса, подскажите как это сделать?
1 mikecool
 
26.09.23
15:04
читай справку в каждом разделе, надо объявить коллекцию - предопределенное ее имя есть в справке, на память - не приходит
2 MrBen
 
26.09.23
16:13
Давно я делал что-то подобное. Как пример могу дать ссылку на публикацию в инфостарте. Там сворачивал реализации из источника и создавал документ для приемника. Не помню точно но вроде в ПВД это делается
3 boozin
 
26.09.23
17:10
Не знаю твой ли случай, но:
1. В ПКО таблицы пишем в обработчике ПередОбработкой что-то вроде

Запрос = Новый Запрос(
"ВЫБРАТЬ
|    ВыпускПродукцииТовары.Номенклатура КАК Номенклатура,
|    ВыпускПродукцииТовары.Количество КАК Количество,
|    Истина КАК ЭтоТовар
|ИЗ
|    Документ.ВыпускПродукции.Товары КАК ВыпускПродукцииТовары
|ГДЕ
|    ВыпускПродукцииТовары.Ссылка = &Источник
|    И ВыпускПродукцииТовары.Номенклатура.ТоварнаяГруппа <> ЗНАЧЕНИЕ(Справочник.ТоварныеГруппы.СобственнаяПродукция)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ВыпускПродукцииПроизводство.Ингредиент,
|    СУММА(ВыпускПродукцииПроизводство.КоличествоИнгредиента),
|    МАКСИМУМ(ЛОЖЬ) КАК ЭтоТовар
|ИЗ
|    Документ.ВыпускПродукции.Производство КАК ВыпускПродукцииПроизводство
|ГДЕ
|    ВыпускПродукцииПроизводство.Ссылка = &Источник
|    И ВыпускПродукцииПроизводство.Ингредиент.ТоварнаяГруппа <> ЗНАЧЕНИЕ(Справочник.ТоварныеГруппы.СобственнаяПродукция)
|
|СГРУППИРОВАТЬ ПО
|    ВыпускПродукцииПроизводство.Ингредиент
|
|ИМЕЮЩИЕ
|    СУММА(ВыпускПродукцииПроизводство.КоличествоИнгредиента) > 0");

Запрос.УстановитьПараметр("Источник", Источник.Ссылка);


КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();

2. В табличную часть добавляем реквизит с признаком "Передавать данные в параметр". Присвоиваем ему нужное имя. Это надо для того, чтобы ТЧ попала в параметры объекта
3. В обработчике ПослеЗагрузки находим ее так:
ТабЧ = "";
Если ПараметрыОбъекта <> Неопределено И ПараметрыОбъекта["ТоварыТабличнаяЧасть"] <> Неопределено Тогда
    ТабЧ = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
КонецЕсли;

В моем случае таблица называется "Товары", а "ТабличнаяЧасть" - шаманская добавка... :)

Должно работать
4 MrBen
 
27.09.23
13:18
(3) У меня другой вариант работал, пишется в ПВД:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента,
|    РеализацияТоваровУслугТовары.Ссылка.ВидОперации,
|    РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента,
|    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
|    МАКСИМУМ(1) КАК КратностьВзаиморасчетов,
|    МАКСИМУМ(1) КАК КурсВзаиморасчетов,
|    РеализацияТоваровУслугТовары.Ссылка.Организация,
|    РеализацияТоваровУслугТовары.Ссылка.Склад,
|    РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС,
|    РеализацияТоваровУслугТовары.Ссылка.ТипЦен,
|    РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС,
|    РеализацияТоваровУслугТовары.Номенклатура,
|    СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
|    МАКСИМУМ(1) КАК КоличествоМест,
|    РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
|    МАКСИМУМ(1) КАК Коэффициент,
|    РеализацияТоваровУслугТовары.Цена,
|    СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
|    РеализацияТоваровУслугТовары.СтавкаНДС,
|    СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС
|ИЗ
|    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
|    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|    И РеализацияТоваровУслугТовары.Ссылка.Проведен
|
|СГРУППИРОВАТЬ ПО
|    РеализацияТоваровУслугТовары.СтавкаНДС,
|    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
|    РеализацияТоваровУслугТовары.Ссылка.ВидОперации,
|    РеализацияТоваровУслугТовары.Ссылка.Организация,
|    РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС,
|    РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
|    РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС,
|    РеализацияТоваровУслугТовары.Ссылка.Склад,
|    РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента,
|    РеализацияТоваровУслугТовары.Номенклатура,
|    РеализацияТоваровУслугТовары.Ссылка.ТипЦен,
|    РеализацияТоваровУслугТовары.Цена,
|    РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента
|
|УПОРЯДОЧИТЬ ПО
|    РеализацияТоваровУслугТовары.Ссылка.Контрагент,
|    РеализацияТоваровУслугТовары.Ссылка.Склад";

Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
ТЗ = РезультатЗапроса.Выгрузить();
ТЧ = ТЗ.СкопироватьКолонки();
ТЗРез = ТЗ.СкопироватьКолонки();
ТЗРез.Колонки.Добавить("Товары");

ПозТЗ = 0;
Пока Выборка.СледующийПоЗначениюПоля("Контрагент") Цикл
    
    НоваяСтрока = ТЗРез.Добавить();                                //Создали шапку документа
    ЗаполнитьЗначенияСвойств(НоваяСтрока, ТЗ[ПозТЗ]);
    ТекущийСклад = Выборка.Склад;
    
    Пока Выборка.Следующий() Цикл
        Если ТекущийСклад = Выборка.Склад Тогда                 //Пока все товары с одного склада
            ЗаполнитьЗначенияСвойств(ТЧ.Добавить(), ТЗ[ПозТЗ]);    //заполняем ТЧ документа
            ПозТЗ = ПозТЗ+1;
        Иначе                                                    //Сменился склад,
            ТекущийСклад = Выборка.Склад;
            
            НоваяСтрока.Товары = ТЧ.Скопировать();                //Фиксируем докупент по предыдущему складу
            ТЧ.Очистить();
            
            НоваяСтрока = ТЗРез.Добавить();                        //и начинаем заполнять для следующего.
            ЗаполнитьЗначенияСвойств(НоваяСтрока, ТЗ[ПозТЗ]);
            
            ЗаполнитьЗначенияСвойств(ТЧ.Добавить(), ТЗ[ПозТЗ]);
            ПозТЗ = ПозТЗ+1;
        КонецЕсли;
    КонецЦикла;
    
    НоваяСтрока.Товары = ТЧ.Скопировать();
    ТЧ.Очистить();
КонецЦикла;

ВыборкаДанных = ТЗРез;
5 boozin
 
27.09.23
15:07
Не понятно, что автор хочет сделать. Если он хочет загрузить ТЧ документа из некоей таблицы, тогда это "Получать из входящих данных" и тогда в ПВД эти данные заполняются. а потом ВыгрузитьПоПравилу
Примерно так:

ВыборкаПоДокументам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоДокументам.Следующий() Цикл

ОписаниеЗарплатаКВыплате = Новый Структура(СтрокаЗарплатаКВыплате);
    ОписаниеЗарплатаКВыплате.Организация              = ВыборкаПоДокументам.Ссылка.Организация;
    ОписаниеЗарплатаКВыплате.Банк                  =    ВыборкаПоДокументам.Ссылка.ЗарплатныйПроект;
    ОписаниеЗарплатаКВыплате.ВидДоходаИсполнительногоПроизводства = ВыборкаПоДокументам.Ссылка.ВидДоходаИсполнительногоПроизводства;
    ОписаниеЗарплатаКВыплате.ХарактерВыплаты  =      ВыборкаПоДокументам.Ссылка.СпособВыплаты;
    ОписаниеЗарплатаКВыплате.Дата                     = ВыборкаПоДокументам.Ссылка.Дата;
    ОписаниеЗарплатаКВыплате.Номер                    = ВыборкаПоДокументам.Ссылка.Номер;
    ОписаниеЗарплатаКВыплате.Комментарий              = "Выгрузка из ЗУП 3.1 " + Строка(ВыборкаПоДокументам.Ссылка.СпособВыплаты) + " за " + Строка(Формат(ВыборкаПоДокументам.Ссылка.ПериодРегистрации, "ДФ=""ММММ гггг""")) + " №" + ВыборкаПоДокументам.Ссылка.Номер + " от " + Строка(Формат(ВыборкаПоДокументам.Ссылка.Дата, "ДЛФ=Д"));
    ОписаниеЗарплатаКВыплате.КраткийСоставДокумента   = ВыборкаПоДокументам.Ссылка.КраткийСоставДокумента;
    ОписаниеЗарплатаКВыплате.Ответственный            = ВыборкаПоДокументам.Ссылка.Ответственный;
    ОписаниеЗарплатаКВыплате.ПериодРегистрации        = ВыборкаПоДокументам.Ссылка.ПериодРегистрации;
    ОписаниеЗарплатаКВыплате.ПодразделениеОрганизации = ВыборкаПоДокументам.Ссылка.Подразделение;

    
    Зарплата.Очистить();
    
    ВыборкаПоСтрокам = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоСтрокам.Следующий() Цикл
        
        СтрокаЗарплата = Зарплата.Добавить();
        Если Параметры.ВыгружатьВРазрезеФизическихЛиц Тогда
            СтрокаЗарплата.ФизическоеЛицо            = ВыборкаПоСтрокам.ФизическоеЛицо;
        Иначе    
            СтрокаЗарплата.ФизическоеЛицо            = Справочники.ФизическиеЛица.ПустаяСсылка();
        КонецЕсли;    
        СтрокаЗарплата.КВыплате                      = ВыборкаПоСтрокам.КВыплате;
        СтрокаЗарплата.КомпенсацияЗаЗадержкуЗарплаты = ВыборкаПоСтрокам.КомпенсацияЗаЗадержкуЗарплаты;
    КонецЦикла;
    Зарплата.Свернуть("ФизическоеЛицо", "КВыплате, КомпенсацияЗаЗадержкуЗарплаты");
    ОписаниеЗарплатаКВыплате.Зарплата = Зарплата;
    ВыгрузитьПоПравилу(, , ОписаниеЗарплатаКВыплате, , "ЗарплатаКВыплатеВБанк");
КонецЦикла;
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.