Перенос реквизита новую строку ТЧ

1. Voland1402 25 18.11.13 12:14 Сейчас в теме
Здравствуйте!
Возможно тема всем надоела, но из всех уже обсуждавшихся тем четкого ответа на вопрос не нашел.
Мне необходимо конвертировать свойство объекта источника в новую строку табличной части объекта приемника. Создаю ПКГС с пустым источником и заполненным именем ТЧ приемником, в обработчике события "Перед обработкой" заполняю переменную "КоллекцияОбъектов" таблицей значения структурой соответствующей структуре ТЧ приемника. При попытке выгрузить по правилу выдает ошибку "поле объекта не обнаружено (ИмяТЧПриемника)". В чем засада? Делал по примеру правил УТ-БП. В статье http://kb.mista.ru/article.php?id=435 пункт 3 вообще непонятен... Как в ПКГС источником может являться табличная часть Приемника в ПКО. Помогите разобраться или приведите подробный алгоритм конвертации реквизита в табличную часть.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Voland1402 25 18.11.13 14:04 Сейчас в теме
3. demon_infernal 41 18.11.13 23:10 Сейчас в теме
У меня похожая задача решена, но не совсем так. В одной самописной базе есть документ "РасходныйКассовыйОрдер", в котором вобще нет табличной части, а в типовой БП табличная часть есть.

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

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


В ПКО "РасходныйКассовыйОрдер", в свою очередь, создаю ПКГС, в котором создаю подчиненные ПКС с пустым источником и приемниками с именами "СуммаПлатежа", "СуммаВзаиморасчетов", "СчетУчетаРасчетовСКонтрагентом" - то есть только с теми именами, какие колонки у меня есть в той ТЗ, которую я помещаю во ВходящиеДанные, и на всем ПКГС ставлю галку "Получить из входящих данных" (на ПКС внутри ПКГС эту галку НЕ ставлю)

Проверено, работает. Может и не самый оптимальный вариант, о переопределении КоллекцииЗначении ПередОбработкой в ПКГС я как то до этого момента не задумывался. Попробую, отпишусь.
4. demon_infernal 41 18.11.13 23:34 Сейчас в теме
Странно, я попробовал, как вы написали, переопределить КоллекциюОбъектов в ПередОбработкой ПКГС и у меня все получилось, все отлично выгружается, и так гораздо нагляднее и понятнее, чем через ВходящиеДанные делать, спасибо за просветление)

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

лСумма = Источник.Сумма;

НоваяСтр = ТЗ.Добавить();
НоваяСтр.СуммаВзаиморасчетов 		  = лСумма;
НоваяСтр.СуммаПлатежа 		          = лСумма;
НоваяСтр.СчетУчетаРасчетовСКонтрагентом   = Источник.КорСчет;

КоллекцияОбъектов = ТЗ;
Показать


И все выгружается.
Как вариант, возможно, вы допустили опечатку где-нибудь в алгоритме?

UPD
Судя по всему, в тексте по ссылке выше, допущена ошибка.
3. Создаем ПКГС только с заполненным Источником "СуммыДолга" (табличная часть документа Взаимозачет).
- видимо, нужно читать так:
Создаем ПКГС только с заполненным Приемником "СуммыДолга" (табличная часть документа Взаимозачет).
Оставьте свое сообщение

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