Чем грозит не выгрузка организаций УНФ в БП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 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *