Изменение цен при выгрузке из УНФ в БП
Клиенту нужно было, чтобы при выгрузке из УНФ в БП подменялись цены реализации на цены из заказа.
Мне была предоставлена копия баз УТ и БП.
Но мне не хотелось настраивать синхронизацию УТ и БП. К тому же в БП были не совсем полные права, там не было прав на настройку синхронизации.
Поэтому я решил делать разработку на выгрузке в Enterprise Data. Я сделал настройку на выгрузку одного документа и сохранил эту настройку, чтобы быстро восстанавливать при перезапусках:

Расширил модуль МенеджерОбменаЧерезУниверсальныйФормат, код получился несложным:
&После("ПКО_Документ_РасходнаяНакладная_Отправка_ПриОтправкеДанных") Процедура доробм_ПКО_Документ_РасходнаяНакладная_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки) Если ЗначениеЗаполнено(ДанныеИБ.Заказ) Тогда СуммаВключаетНДС = ДанныеИб.СуммаВключаетНДС; ТоварыЗаказа = ДанныеИБ.Заказ.Запасы; Для Каждого Строка ИЗ ДанныеXDTO.Товары Цикл СтруктураПоиска = Новый Структура("Номенклатура, Характеристика", Строка.Номенклатура, Строка.Характеристика); ИскСтрокиЗаказа = ТоварыЗаказа.НайтиСтроки(СтруктураПоиска); Если ИскСтрокиЗаказа.Количество() > 0 Тогда ИскСтрокаЗаказа = ИскСтрокиЗаказа[0]; ЦенаЗаказа = ИскСтрокаЗаказа.Цена; СтараяЦена = Строка.Цена; Строка.Цена = ЦенаЗаказа; Строка.Сумма = Строка.Цена * Строка.Количество; Если Строка.СтавкаНДС = "БезНДС" Тогда К = 0; ИначеЕсли Строка.СтавкаНДС = "НДС20" Тогда К = 20; ИначеЕсли Строка.СтавкаНДС = "НДС22" Тогда К = 22; ИначеЕсли Строка.СтавкаНДС = "НДС18" Тогда К = 18; ИначеЕсли Строка.СтавкаНДС = "НДС10" Тогда К = 10; ИначеЕсли Строка.СтавкаНДС = "НДС5" Тогда К = 5; ИначеЕсли Строка.СтавкаНДС = "НДС7" Тогда К = 7; КонецЕсли; Если СуммаВключаетНДС Тогда Строка.СуммаНДС = Строка.Сумма * К / (100 + К); Строка.Всего = Строка.Сумма; Иначе Строка.СуммаНДС = Строка.Сумма * К / 100; Строка.Всего = Строка.Сумма + Строка.СуммаНДС; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
Выгрузил документ в ED, поменяв цены в первой и третьей строке:

Для очистки совести подгрузил выгруженный документ в БП, цены подставились из заказа:

UPD: странное дело, но при выгрузке через план обмена ставка НДС попадает не строкой, а структурой, пришлось написать отдельный код под это дело:
К = 0; Если ТипЗнч(Строка.СтавкаНДС) = Тип("Структура") И ТипЗнч(Строка.СтавкаНДС.Значение) = Тип("СправочникСсылка.СтавкиНДС") Тогда К = Строка.СтавкаНДС.Значение.Ставка; КонецЕсли;
Среда: УНФ 3.0.12.261, 1С 8.5.1.1302.
