Чем грозит не выгрузка организаций УНФ в БП3
При выгрузке данных из УНФ в БП3 появилась ошибка, блокирующая выгрузку:
Направление: Отправка.
ПОД: Справочник_БанковскиеСчета_Отправка.
ПКО: Справочник_БанковскиеСчета_Отправка.
Объект: Справочник объект: Банковские счета, Сбербанк () Основной (e1cib/data/Справочник.БанковскиеСчета?ref=8dc900155d32bd0611ebb32******).
Ошибка проверки данных XDTO:
Структура объекта '/КлючевыеСвойства/Владелец/ОрганизацииСсылка' не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8}КлючевыеСвойстваОрганизация
Проверка свойства 'Наименование':
форма: Элемент
имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8}Наименование
тип: {http://www.w3.org/2001/XMLSchema}string
Я поискал поиском «СсылкиОрганизации» в макетах и модулях, но нигде не нашел. Хотел было уже заняться отладкой, но вовремя вспомонил, что делал игнорирование выгрузки организации, которой нет в списке организаций в плане обмена. Чтобы лишние организации не выгружались из УНФ в БП3.
Получается, организация не выгружается, а из-за этого не выгружается расчетный счет, т.к. организация у него получается пустая.
Изначально расширение модуля ОбменДаннымиXDTOСервер выглядело так:
&Вместо("ВыгрузитьСвойство") Процедура дор_ВыгрузитьСвойство(КомпонентыОбмена, ДанныеИБ, ПолучательСвойства, ПКС, СтекВыгрузки, ЭтапВыгрузки) //Осипов 2021-07-26 - переносим сюда //Если это организация, которая не нужна в получателе, убираем... Если КомпонентыОбмена.Свойство("УзелКорреспондента") И ТипЗнч(КомпонентыОбмена.УзелКорреспондента) = Тип("ПланОбменаСсылка.СинхронизацияДанныхЧерезУниверсальныйФормат") И КомпонентыОбмена.УзелКорреспондента.ИспользоватьОтборПоОрганизациям Тогда Если ТипЗнч(ДанныеИБ) = Тип("СправочникСсылка.Организации") И КомпонентыОбмена.УзелКорреспондента.Организации.Найти(ДанныеИБ, "Организация") = Неопределено Тогда Возврат; //Не выгружаем лишние организации КонецЕсли; КонецЕсли; //Старый метод ПродолжитьВызов(КомпонентыОбмена, ДанныеИБ, ПолучательСвойства, ПКС, СтекВыгрузки, ЭтапВыгрузки); КонецПроцедуры
Доработал немного код расширения, чтобы учитывался этот момент, добавил еще один перехватчик:
&Вместо("ДанныеXDTOИзДанныхИБ") Функция дор_ДанныеXDTOИзДанныхИБ(КомпонентыОбмена, Источник, Знач ПравилоКонвертации, СтекВыгрузки) Если КомпонентыОбмена.Свойство("УзелКорреспондента") И ТипЗнч(КомпонентыОбмена.УзелКорреспондента) = Тип("ПланОбменаСсылка.СинхронизацияДанныхЧерезУниверсальныйФормат") И КомпонентыОбмена.УзелКорреспондента.ИспользоватьОтборПоОрганизациям И (ТипЗнч(Источник) = Тип("СправочникСсылка.БанковскиеСчета") ИЛИ ТипЗнч(Источник) = Тип("СправочникОбъект.БанковскиеСчета")) И ТипЗнч(Источник.Владелец) = Тип("СправочникСсылка.Организации") И КомпонентыОбмена.УзелКорреспондента.Организации.Найти(Источник.Владелец, "Организация") = Неопределено Тогда Возврат Неопределено; //Не выгружаем банковские счета по лишним организациям КонецЕсли; //Старый метод Результат = ПродолжитьВызов(КомпонентыОбмена, Источник, ПравилоКонвертации, СтекВыгрузки); Возврат Результат; КонецФункции
Пришлось повозиться, потому что туда попадала не ссылка на банковский счет, а сам объект банковского счета, без отладчика с этим разобраться не удалось.
В целом, нужно было сразу использовать переопределение метода ДанныеXDTOИзДанныхИБ модуля ОбменДаннымиXDTOСервер, контролировать выгрузку объекта надежнее, чем выгрузку свойства. Хотя иногда нужно и свойство контролировать.
Среда: УНФ 1.6.25.152 Объем: 1 час.
Свежие комментарии