Конвертация данных 2. Правила выгрузки данных по произвольному алгоритму

1. redtram 29 24.06.19 16:03 Сейчас в теме
Коллеги, приветствую! Разъясните ситуацию:
Есть ПВД объекта "ИмяДокумента" с галочками произвольный алгоритм, ПКО - "ИмяПКО" (у него включен флаг не запоминать выгруженные объекты, а также очищен источник).
Запрос ПВД:
"Выбрать
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.ТабличнаяЧасть (Товар, Количество, "ПроизвольныйТекст" КАК НеобходимыйРеквизит) Из Документы.ТаблицаДокумента"


Все это в "перед обработкой ПВД" вставляется в выборку данных:

ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Сообщить("Тип значения вложенной таблицы: " + ТипЗнч(ВыборкаДанных[0].ТабличнаяЧасть)); // ТаблицаЗначений
Сообщить("Тип значения вложенной таблицы: " + ТипЗнч(ВыборкаДанных[0].ТабличнаяЧасть[0].НеобходимыйРеквизит)); // Строка


В ПКС (источник очищен - приемник "НеобходимыйРеквизит"), который состоит в ПКГС "ТабличнаяЧасть" (источник очищен - приемник "ТабличнаяЧасть") в обработчике "Перед выгрузкой" (пробовал и "При выгрузке") следующий код:

Сообщить("Тип значения ОбъектКоллекции: " + ТипЗнч(ОбъектКоллекции)); // Строка табличной части: ТабличнаяЧасть 

В этой строке табличной части уже соответственно нет реквизита "НеобходимыйРеквизит".

Кто-нибудь может пояснить почему в ПКС приходит не таблица значений со всеми колонками, а табличная часть??? я уже всю голову себе сломал как это победить без "Выгрузить по правилу" (почему-то помнится что раньше получалось).
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. redtram 29 24.06.19 17:46 Сейчас в теме +0.1 $m
Ох уж эта магия КД и универсальной выгрузки загрузки... я даже с отладкой так и не понял где разница между этим кодом в ПВД:
Не работает:
Запрос = Новый Запрос(Запросы.ВыплатаЗПСЛицевымиСчетами.Текст);
Запрос.УстановитьПараметр("Получатель", УзелОбмена); //причем здесь он не ругался ни на что, а результат ... 3 потраченных часа
ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Если ВыборкаДанных.Количество() = 0 Тогда
	Отказ = Истина;
КонецЕсли;

Работает:
Запрос = Новый Запрос(Запросы.ВыплатаЗПСЛицевымиСчетами.Текст);
Запрос.УстановитьПараметр("Получатель", ПланыОбмена.ПоОрганизации.НайтиПоКоду("УВ1"));
ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Если ВыборкаДанных.Количество() = 0 Тогда
	Отказ = Истина;
КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 34 24.06.19 16:52 Сейчас в теме
(1) Есть вариант, что объект выгружается не по ПВД, а по ссылке из другого документа.
4. redtram 29 24.06.19 16:58 Сейчас в теме
(3) Исключено. ПВД единственное.
6. Sashares 34 24.06.19 17:23 Сейчас в теме
(4)Как вариант - включить отладку и посмотреть.
2. tusv 211 24.06.19 16:50 Сейчас в теме
То есть Вы хотите сказать, что такой код в ПКО
Для Каждого Колонка из Источник.ТабличнаяЧасть.Колонки Цикл
 Сообщить(Колонка.Имя);
КонецЦикла;

Не сообщить колонку НеобходимыйРеквизит?
5. redtram 29 24.06.19 16:58 Сейчас в теме
(2) Не сообщит :( т.к. в табличной части источника такой колонки нет.
9. tusv 211 24.06.19 18:06 Сейчас в теме
(5)ИМХО Ссылка воспринимается как Источник
Может быть Табличной части присвоить другой псевдоним и в ПКГС присвоить Коллекции объектов эту ТЗ
КоллекцияОбъектов = Источник.МоеНазваниеТабличнойЧасти;
14. redtram 29 24.06.19 18:15 Сейчас в теме
(9) возможно дельный совет, но проверять уже нет времени
7. redtram 29 24.06.19 17:46 Сейчас в теме +0.1 $m
Ох уж эта магия КД и универсальной выгрузки загрузки... я даже с отладкой так и не понял где разница между этим кодом в ПВД:
Не работает:
Запрос = Новый Запрос(Запросы.ВыплатаЗПСЛицевымиСчетами.Текст);
Запрос.УстановитьПараметр("Получатель", УзелОбмена); //причем здесь он не ругался ни на что, а результат ... 3 потраченных часа
ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Если ВыборкаДанных.Количество() = 0 Тогда
	Отказ = Истина;
КонецЕсли;

Работает:
Запрос = Новый Запрос(Запросы.ВыплатаЗПСЛицевымиСчетами.Текст);
Запрос.УстановитьПараметр("Получатель", ПланыОбмена.ПоОрганизации.НайтиПоКоду("УВ1"));
ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Если ВыборкаДанных.Количество() = 0 Тогда
	Отказ = Истина;
КонецЕсли;
8. Sashares 34 24.06.19 17:58 Сейчас в теме
(7)
Запрос.УстановитьПараметр("Получатель", УзелОбмена); //причем здесь он не ругался ни на что,

Подозреваю, на переменную УзелОбмена.
10. redtram 29 24.06.19 18:09 Сейчас в теме
11. Sashares 34 24.06.19 18:12 Сейчас в теме
12. tusv 211 24.06.19 18:13 Сейчас в теме
(7)Работает и так
Запрос = Запросы.ВыплатаЗПСЛицевымиСчетами;
Запрос.УстановитьПараметр("Получатель", ПланыОбмена.ПоОрганизации.НайтиПоКоду("УВ1"));

Другое дело в универсальной обработке УзелОбмена может быть не Узлом плана обмена
13. redtram 29 24.06.19 18:14 Сейчас в теме
(12) было бы справедливо, если бы запрос с отбором по этому узлу обмена не выдавал при этом правильные данные. Говорю же магия.. )
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот