битые ссылки при переносе данных (конвертация данных 2.0)

1. user659168_xec8787 3 20.09.17 13:23 Сейчас в теме
День добрый! Подскажите пожалуйста!
Переношу данные из не типовой УТ10.3 в типовую БП3.0.
В УТ имеется масса "битых ссылок" в спр. ДоговорыКонтрагентов, спр. ВидыКонтактнойИнформации и проч.
Как можно организовать проверку на "битые ссылки" в КД2.0?
При обмене через Универсал. обмен данными XML в ПКО ДоговорыКонтрагентов в Обработчике ПередВыгрузкой делал условие:
Если Источник.ПолучитьОбъект() = Неопределено Тогда
	Сообщить("Контрагент: " + ВходящиеДанные);
	Сообщить("Договор: " + Источник + "имеется битая ссылка!!!");
	Отказ = Истина; //объект ДоговорыКонтрагентов выгружаться не будет
КонецЕсли;

Все работало, НО при использовании ПланаОбмена и соответ. обработки Обмена данными, выскакивает ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3769)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
ПКО = ДоговорыКонтрагентов (Справочник: Договоры контрагентов)
Объект = 33333333333333 (Справочник объект: Договоры контрагентов)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Метод объекта не обнаружен (ПолучитьОбъект)
ПозицияМодуля = (1)
КСообщенияОбОшибках = 41
ВызватьИсключение СтрокаСообщенияОбОшибке;


Может кто предложить иной вариант настройки фильтра на битые ссылки?
По теме из базы знаний
Найденные решения
2. maks_20 164 20.09.17 13:35 Сейчас в теме
(1) Метод не обнаружен, потому что у вас уже в Источнике будет объект, а не ссылка насколько помню, поэтому либо добавить условие на проверку типа (примерно так Если типЗнч(Источник) = Тип("СправочникОбъект.Договоры") Тогда проверяем объект, ИначеЕсли типЗнч(Источник) = Тип("СправочникСсылка.Договоры") тогда получаем объект и проверяем, либо запросом проверять Где Договоры.Ссылка ЕСТЬ NULL.
user659168_xec8787; +1 Ответить
3. Nik_novosib 20.09.17 13:38 Сейчас в теме
(1) Пока писал уже накатали сообщение. В (2) верно сказано. Либо у вас там не ссылка либо метод недоступен из контекста исполнения кода.

Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
user659168_xec8787; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. maks_20 164 20.09.17 13:35 Сейчас в теме
(1) Метод не обнаружен, потому что у вас уже в Источнике будет объект, а не ссылка насколько помню, поэтому либо добавить условие на проверку типа (примерно так Если типЗнч(Источник) = Тип("СправочникОбъект.Договоры") Тогда проверяем объект, ИначеЕсли типЗнч(Источник) = Тип("СправочникСсылка.Договоры") тогда получаем объект и проверяем, либо запросом проверять Где Договоры.Ссылка ЕСТЬ NULL.
user659168_xec8787; +1 Ответить
3. Nik_novosib 20.09.17 13:38 Сейчас в теме
(1) Пока писал уже накатали сообщение. В (2) верно сказано. Либо у вас там не ссылка либо метод недоступен из контекста исполнения кода.

Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
user659168_xec8787; +1 Ответить
4. user659168_xec8787 3 20.09.17 15:00 Сейчас в теме
Ребята, большое спасибо - очень выручили!
Получилось как-то так:
Если ТипЗнч(Источник) = Тип("СправочникОбъект.ДоговорыКонтрагентов") Тогда
	Отказ = Ложь;
ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Источник)) И ОбщегоНазначения.СсылкаСуществует(Источник)  Тогда
	Отказ = Ложь;
Иначе
	Сообщить("Договор не выгружен!!! У Контрагента: " + ВходящиеДанные + " имеется битая ссылка на договор!");
	Отказ = Истина;
КонецЕсли;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот