Конвертация данных 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 210 24.06.19 16:50 Сейчас в теме
То есть Вы хотите сказать, что такой код в ПКО
Для Каждого Колонка из Источник.ТабличнаяЧасть.Колонки Цикл
 Сообщить(Колонка.Имя);
КонецЦикла;

Не сообщить колонку НеобходимыйРеквизит?
5. redtram 29 24.06.19 16:58 Сейчас в теме
(2) Не сообщит :( т.к. в табличной части источника такой колонки нет.
9. tusv 210 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 210 24.06.19 18:13 Сейчас в теме
(7)Работает и так
Запрос = Запросы.ВыплатаЗПСЛицевымиСчетами;
Запрос.УстановитьПараметр("Получатель", ПланыОбмена.ПоОрганизации.НайтиПоКоду("УВ1"));

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день