Выгрузка зарегистрированных цен через обмен ED. Розница 3
У клиента была задача — выгружать на точки УРМК только те цены, по которым есть остатки.
При этом в центре могли создавать документ установки цен, но он не регистрировал бы цены, если не стоит галочка «Отправляем цены».
Настроил регистрацию цен точки в плане обмена через Enterprise Data (универсальный формат) при проведении перемещения на точку. Соответственно, регистрацию цен при проведении установки цен убрал, если не стоит галочка «Отправляем цены».
Но оказалось, что записи регистра цен не отправляются по обмену УРМК, а если зарегистрирован документ установки цен, то все цены по нему отправляются в обмене.
В модуле синхронизации через универсальный формат сделал некоторые изменения:
&Вместо("ПОД_Документ_УстановкаЦенНоменклатурыРегистр_Отправка_ПриОбработке") Процедура РС_ПОД_Документ_УстановкаЦенНоменклатурыРегистр_Отправка_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена) //Для плана обмена УРМК тоже выполняем выгрузку регистра цен Если ДанныеИБ.Количество() <> 0 И ЗначениеЗаполнено(ДанныеИБ[0].ДокументУстановки) // выгружается документ установки цен И КомпонентыОбмена.ПараметрыКонвертации.ВариантНастройки = "ОбменУРМК" Тогда МассивВидовЦен = КомпонентыОбмена.ПараметрыКонвертации.МассивВидовЦен; ИспользованиеПКО.Документ_УстановкаЦенНоменклатурыРегистр_Отправка = МассивВидовЦен.Найти(ДанныеИБ[0].ВидЦен) <> Неопределено; Возврат; КонецЕсли; ПродолжитьВызов(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена); КонецПроцедуры
И в модуле ОбменДаннымиXDTOСервер отключил регистрацию документа установки цен без галочки:
&Вместо("ВыгрузкаОбъектаВыборки") Процедура РС_ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Объект, ПравилоОбработки) Если ТипЗнч(Объект) = Тип("ДокументОбъект.УстановкаЦенНоменклатуры") И ТипЗнч(КомпонентыОбмена.УзелКорреспондента) = Тип("ПланОбменаСсылка.ОбменСУРМК") И Объект.ОтправляемЦены = ложь Тогда Возврат; //4 октября 2026 - выходим, чтобы цены по документу автоматом не ушли в розницу... КонецЕсли; ПродолжитьВызов(КомпонентыОбмена, Объект, ПравилоОбработки); КонецПроцедуры
Не знал, сработает или нет, но сработало, записи регистра цен выгружались отдельными записями в файле обмена и точка их приняла. Все получилось!


Среда: Розница 3.0.12.237 Объем: 1.5 час



ОбменДаннымиXDTOСервер ничего не знает о прикладном коде. Вот и не надо в него нести конкретные типы данных
Если ТипЗнч(Объект) = Тип(«ДокументОбъект.УстановкаЦенНоменклатуры»)
это начало спагетти-кода
не понят суть замечания. у меня код работает.
Код работает, но с запашком