В заказ клиента необходимо добавить поле ГИТ_ЭДО_НомерПоДаннымКонтрагента. Можете придумать свое название или хранить как-то иначе...
Добавляем строковое доп поле BUYER_DATA со значениями:
- EXT_EBELN - номер заказа по данным клиента
- EXT_EBELP - номер строки заказа клиента
- EXT_BEDAT - Дата заказа по данным клиента в формате yyyyMMdd
&После("УПД_5_02_ИнформацияПродавца_ДобавитьДополнительныеДанные")
Процедура ГИТ_ЭДО_УПД_5_02_ИнформацияПродавца_ДобавитьДополнительныеДанные(Данные)
ТекстоваяИнформация = Новый ТаблицаЗначений;
ТекстоваяИнформация.Колонки.Добавить("Идентификатор");
ТекстоваяИнформация.Колонки.Добавить("Значение");
ДокументыОснования = Данные.Строки.Найти("ДокументыОснованияСчетаФактуры", "ПолныйПуть").Значение;
НомерЗаказаКл = "";
Если ЗначениеЗаполнено(ДокументыОснования) Тогда
Если ТипЗнч(ДокументыОснования) = Тип("Массив")
И ДокументыОснования.Количество() =1
И ТипЗнч(ДокументыОснования[0]) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ЗаказКл = Общегоназначения.ЗначениеРеквизитаОбъекта(ДокументыОснования[0], "ЗаказКлиента");
ДанныеЗаказаКлиента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗаказКл, "Номер,Дата,НомерПоДаннымКлиента,ДатаПоДаннымКлиента,Контрагент.ИНН");
НомерЗаказаКл = ?(ДанныеЗаказаКлиента.КонтрагентИНН = "5040048921", ДанныеЗаказаКлиента.НомерПоДаннымКлиента,"");
Если Не ПустаяСтрока(НомерЗаказаКл) Тогда
ДатаЗаказаКл = Формат(ДанныеЗаказаКлиента.ДатаПоДаннымКлиента, "ДФ=yyyyMMdd");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(ЗаказКлиентаТовары.Номенклатура.Артикул) КАК Артикул,
| ЗаказКлиентаТовары.Номенклатура.Код КАК Код,
| МИНИМУМ(ЗаказКлиентаТовары.ГИТ_ЭДО_НомерПоДаннымКонтрагента) КАК НомерСтроки,
| МАКСИМУМ(НоменклатураКонтрагентов.Код) КАК КодН,
| МАКСИМУМ(НоменклатураКонтрагентов.Артикул) КАК АртикулН
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО ЗаказКлиентаТовары.Номенклатура = НоменклатураКонтрагентов.Номенклатура
| И ЗаказКлиентаТовары.Ссылка.Партнер = НоменклатураКонтрагентов.Владелец
|ГДЕ
| ЗаказКлиентаТовары.Ссылка = &ЗаказКл
| И ЗаказКлиентаТовары.Отменено = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
| ЗаказКлиентаТовары.Номенклатура.Код";
Запрос.УстановитьПараметр("ЗаказКл", ЗаказКл);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СоотвСтрокЗаказа = Новый Соответствие;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Стр = Новый Структура("НомерСтроки,КодН,АртикулН");
ЗаполнитьЗначенияСвойств(Стр, ВыборкаДетальныеЗаписи);
СоотвСтрокЗаказа.Вставить(ВыборкаДетальныеЗаписи.Код, Стр);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ПустаяСтрока(НомерЗаказаКл) Тогда
Возврат;
КонецЕсли;
Путь = "ИнформационноеПолеФХЖ.ТекстоваяИнформация";
ИнформационноеПолеФХЖ1 = "СведенияОСчетеФактуре." + Путь;
ИнформационноеПолеФХЖ2 = "ТаблицаСчетаФактуры.СведенияОбОтгруженныхПозициях.НомерСтроки.ИнформационноеПолеФХЖ";
Путь = "ТаблицаСчетаФактуры.СведенияОбОтгруженныхПозициях";
СтрокаТаблицаТоваров = Данные.Строки.Найти(Путь, "ПолныйПуть", Истина);
Для Каждого Товар Из СтрокаТаблицаТоваров.Строки Цикл
Код = Товар.Строки.Найти("Код","").Значение;
Если ЗначениеЗаполнено(Код) Тогда
ДанныеНом = СоотвСтрокЗаказа.Получить(Код);
Если Не ДанныеНом = Неопределено Тогда
Если ЗначениеЗаполнено(ДанныеНом.КодН) Тогда
НоваяСтрока = ТекстоваяИнформация.Добавить();
НоваяСтрока.Идентификатор = "Код товара клиента";
НоваяСтрока.Значение = ДанныеНом.КодН;
ДеревоЭлектронногоДокументаБЭД.ДобавитьЗаписьВТаблицуДерева(Товар, НоваяСтрока, ИнформационноеПолеФХЖ2);
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеНом.АртикулН) Тогда
НоваяСтрока = ТекстоваяИнформация.Добавить();
НоваяСтрока.Идентификатор = "Артикул_товара_клиента";
НоваяСтрока.Значение = ДанныеНом.АртикулН;
ДеревоЭлектронногоДокументаБЭД.ДобавитьЗаписьВТаблицуДерева(Товар, НоваяСтрока, ИнформационноеПолеФХЖ2);
КонецЕсли;
КонецЕсли;
КонецЕсли;
BUYER_DATA = СтрШаблон("EXT_EBELN=%1##EXT_EBELP=%2##EXT_BEDAT=%3",
НомерЗаказаКл,
ДанныеНом.НомерСтроки,
ДатаЗаказаКл);
НоваяСтрока = ТекстоваяИнформация.Добавить();
НоваяСтрока.Идентификатор = "BUYER_DATA";
НоваяСтрока.Значение = BUYER_DATA;
ДеревоЭлектронногоДокументаБЭД.ДобавитьЗаписьВТаблицуДерева(Товар, НоваяСтрока, ИнформационноеПолеФХЖ2);
КонецЦикла;
КонецПроцедуры
Совместимо с БиблиотекаЭлектронныхДокументов 1.9.13.44.
Тестировалось на 1С:ERP и 1С:Управление торговлей.