Почему не передавалась приходная накладная из УНФ 3.0 в БП 3.0?
Настроен обмен с отбором по организации и видам документов. Все накладные поступления приходят, а эта нет.
Причина оказалась банальна — в правилах регистрации указаны строго определенные виды операций для синхронизации документа «Приходная накладная»:
А документ был с видом операции «Прием на ответственное хранение».
Ларчик просто открывался, но пришлось отлаживать.
Точку останова делал условную, по условию:
Метаданные.НайтиПоТипу(ТипЗнч(Объект)) = Метаданные.Документы.ПриходнаяНакладная
Нашел причину здесь:
Попал сюда по длинному стеку событий:
Поправил аналогично решению для контрагентов и договоров, расширение на модуль ОбменДаннымиСобытия:
&Вместо("ПриОтправкеДанныхКорреспонденту") Процедура дор_ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза, Знач Получатель, Знач Анализ) НачальнаяОтправкаЭлемента = ОтправкаЭлемента; ПродолжитьВызов(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель, Анализ); МД = Метаданные.НайтиПоТипу(ТипЗнч(ЭлементДанных)); Если НачальнаяОтправкаЭлемента = ОтправкаЭлементаДанных.Авто И ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить И (МД = Метаданные.Документы.ПриходнаяНакладная) И дор_Кэш.УзлыПолучателиСОтборомПоОрганизациям().Найти(Получатель.Ссылка) <> Неопределено Тогда Если ПроверитьПриходнуюНакладную(ЭлементДанных.Ссылка, Получатель.Ссылка) Тогда ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто; КонецЕсли; КонецЕсли; КонецПроцедуры &После("ВыполнитьПравилаРегистрацииОбъектовДляПланаОбмена") Процедура дор_ВыполнитьПравилаРегистрацииОбъектовДляПланаОбмена(МассивУзловРезультат, Объект, ИмяПланаОбмена, ДополнительныеПараметры) МД = Метаданные.НайтиПоТипу(ТипЗнч(Объект)); МассивУзловДляПроверки = дор_Кэш.УзлыПолучателиСОтборомПоОрганизациям(); Для Каждого Получатель ИЗ МассивУзловДляПроверки Цикл //Если в этот узел уже отправляем, ок Если МассивУзловРезультат.Найти(Получатель) <> Неопределено Тогда Продолжить; КонецЕсли; Если МД = Метаданные.Документы.ПриходнаяНакладная Тогда Если ПроверитьПриходнуюНакладную(Объект.Ссылка, Получатель) Тогда МассивУзловРезультат.Добавить(Получатель); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры Функция ПроверитьПриходнуюНакладную(Документ, Получатель) З = Новый Запрос( "ВЫБРАТЬ | Т.Ссылка КАК Ссылка |ИЗ | Документ.ПриходнаяНакладная КАК Т | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.Организации КАК ТО | ПО Т.Организация = ТО.Организация |ГДЕ | Т.Ссылка = &Документ | И ТО.Ссылка = &Получатель | И НЕ Т.ПометкаУдаления"); З.УстановитьПараметр("Документ", Документ); З.УстановитьПараметр("Получатель", Получатель); Выборка = З.Выполнить().Выбрать(); Возврат Выборка.Следующий(); КонецФункции
ВАЖНО! Обратите внимание в исходной статье на UPD 2023-04-05: было замечено, что новые договора не передаются, этот же нюанс касается и приходных накладных.
Но этого оказалось мало. Накладная в файл обмена не выгружалась из-за ПОД:
Пришлось написать еще небольшое расширение на модуль МенеджерОбменаЧерезУниверсальныйФормат:
&После("ПОД_Документ_ПриходнаяНакладная_Отправка_ПриОбработке") Процедура дор_ПОД_Документ_ПриходнаяНакладная_Отправка_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена) //Осипов 2024-01-04 чтобы уходили документы на ответственное хранение Если ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПриходнаяНакладная.ПриемНаОтветХранение Тогда ИспользованиеПКО.Документ_ПриходнаяНакладная_Отправка = истина; КонецЕсли; КонецПроцедуры
Правда, приходная накладная прогрузилась с видом операции «Покупка, комиссия», но тут уж ничего не поделаешь. Требуются дополнительные доработки.
Среда: 3.0.4.88 Объем: 1 час.
Свежие комментарии