Конвертация одного документа в 2

1. malir 19.10.18 11:59 Сейчас в теме
Доброго времени суток!
Обмениваю документ "ЗаявкаНаРасходованиеСредств" из ЕРП в УПП. В ТЧ РасшифровкаПлатежа в ЕРП есть реквизит "заказ" он конвертируется в "ДокументРасчетов" в УПП. Типами "Заказа" в ЕРП могут быть "Приобретение товаров и услуг" и "Приобретение услуг и прочих активов". В УПП "Поступление товаров и услуг". Сами документы в УПП не обмениваются, следовательно в "ДокументРасчетов" приходят только битые ссылки.

Затем в УПП происходит согласование документа "ЗаявкаНаРасходованиеСредств" и прочие операции.. в итоге создается документ "ПлатежноеПоручениеИсходящее".

После обмениваю документ "ПлатежноеПоручениеИсходящее" из УПП в ЕРП. Вот тут проблема с "ДокументомРасчетов" из ТЧ "РасшифровкаПлатежа". Как, зная только битые ссылки документов, распознать чем он является в ЕРП "Приобретение товаров и услуг" и "Приобретение услуг и прочих активов"? Анализировать УИДы и пытаться восстанавить ссылки в ЕРП? только не пойму как это сделать, когда они в ТЧ?

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

и в ПКО после загрузки:
СписокДокРасчетов = Новый СписокЗначений;
СписокДокРасчетов.Добавить("ПриобретениеУслугПрочихАктивов");
СписокДокРасчетов.Добавить("ПриобретениеТоваровУслуг");

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

Вроде заработало... Может есть варианты попроще?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. echo77 1885 19.10.18 12:13 Сейчас в теме
(1) По-моему, у битой ссылки есть тип, т.е. ТипЗнч(Ссылка) укажет на тип.
5. malir 19.10.18 12:17 Сейчас в теме
(4)Тип то есть, только в УПП он равен "Поступление товаров и услуг"
7. malir 19.10.18 15:21 Сейчас в теме
(1) Получилось так в ПКС создал параметр УИДДокРасчетов и перед выгрузкой написал так:
Если  ТипЗНЧ(ОбъектКоллекции.ДокументРасчетовСКонтрагентом) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг")Тогда
	Значение = (ОбъектКоллекции.ДокументРасчетовСКонтрагентом.УникальныйИдентификатор());	
Иначе
	Отказ = Истина;
КонецЕсли

и в ПКО после загрузки:
СписокДокРасчетов = Новый СписокЗначений;
СписокДокРасчетов.Добавить("ПриобретениеУслугПрочихАктивов");
СписокДокРасчетов.Добавить("ПриобретениеТоваровУслуг");

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

Вроде заработало... Может есть варианты попроще?
2. user633533_encantado 11 19.10.18 12:02 Сейчас в теме
Из заявки доставайте их и все. Связь же с заявкой осталась.
3. malir 19.10.18 12:09 Сейчас в теме
(2) забыл написать, может быть частичная оплата, т.е. часть "ДокументыРасчетов" могут попасть в одно "ПлатежноеПоручениеИсходящее" , а часть в другую.
6. user633533_encantado 11 19.10.18 14:19 Сейчас в теме
(3) В документ расчетов в упп передавайте номер и дату, при обратном обмене в заявке ищите по номеру и дате этот документ.
8. malir 19.10.18 15:25 Сейчас в теме
(6) а если есть документы "Приобретение товаров и услуг" и "Приобретение услуг и прочих активов" с одинаковыми номерами и датами
9. user633533_encantado 11 19.10.18 15:26 Сейчас в теме
(8) Одинаковый номер и одинаковая дата , конечно мало вероятно.
Может передавать в расчетный документ дополнительный признак, скажем в комментарий.
10. malir 19.10.18 15:27 Сейчас в теме
(9) в (7) я через УИД сделал... может есть проще вариант?
11. user633533_encantado 11 19.10.18 15:32 Сейчас в теме
Оставьте свое сообщение

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