битые ссылки при переносе данных (конвертация данных 2.0)
День добрый! Подскажите пожалуйста!
Переношу данные из не типовой УТ10.3 в типовую БП3.0.
В УТ имеется масса "битых ссылок" в спр. ДоговорыКонтрагентов, спр. ВидыКонтактнойИнформации и проч.
Как можно организовать проверку на "битые ссылки" в КД2.0?
При обмене через Универсал. обмен данными XML в ПКО ДоговорыКонтрагентов в Обработчике ПередВыгрузкой делал условие:
Все работало, НО при использовании ПланаОбмена и соответ. обработки Обмена данными, выскакивает ошибка:
Может кто предложить иной вариант настройки фильтра на битые ссылки?
Переношу данные из не типовой УТ10.3 в типовую БП3.0.
В УТ имеется масса "битых ссылок" в спр. ДоговорыКонтрагентов, спр. ВидыКонтактнойИнформации и проч.
Как можно организовать проверку на "битые ссылки" в КД2.0?
При обмене через Универсал. обмен данными XML в ПКО ДоговорыКонтрагентов в Обработчике ПередВыгрузкой делал условие:
Если Источник.ПолучитьОбъект() = Неопределено Тогда
Сообщить("Контрагент: " + ВходящиеДанные);
Сообщить("Договор: " + Источник + "имеется битая ссылка!!!");
Отказ = Истина; //объект ДоговорыКонтрагентов выгружаться не будет
КонецЕсли;
Все работало, НО при использовании ПланаОбмена и соответ. обработки Обмена данными, выскакивает ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3769)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
ПКО = ДоговорыКонтрагентов (Справочник: Договоры контрагентов)
Объект = 33333333333333 (Справочник объект: Договоры контрагентов)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Метод объекта не обнаружен (ПолучитьОбъект)
ПозицияМодуля = (1)
КСообщенияОбОшибках = 41
ВызватьИсключение СтрокаСообщенияОбОшибке;
ПКО = ДоговорыКонтрагентов (Справочник: Договоры контрагентов)
Объект = 33333333333333 (Справочник объект: Договоры контрагентов)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Метод объекта не обнаружен (ПолучитьОбъект)
ПозицияМодуля = (1)
КСообщенияОбОшибках = 41
ВызватьИсключение СтрокаСообщенияОбОшибке;
Может кто предложить иной вариант настройки фильтра на битые ссылки?
По теме из базы знаний
Найденные решения
(1) Метод не обнаружен, потому что у вас уже в Источнике будет объект, а не ссылка насколько помню, поэтому либо добавить условие на проверку типа (примерно так Если типЗнч(Источник) = Тип("СправочникОбъект.Договоры") Тогда проверяем объект, ИначеЕсли типЗнч(Источник) = Тип("СправочникСсылка.Договоры") тогда получаем объект и проверяем, либо запросом проверять Где Договоры.Ссылка ЕСТЬ NULL.
(1) Пока писал уже накатали сообщение. В (2) верно сказано. Либо у вас там не ссылка либо метод недоступен из контекста исполнения кода.
Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Метод не обнаружен, потому что у вас уже в Источнике будет объект, а не ссылка насколько помню, поэтому либо добавить условие на проверку типа (примерно так Если типЗнч(Источник) = Тип("СправочникОбъект.Договоры") Тогда проверяем объект, ИначеЕсли типЗнч(Источник) = Тип("СправочникСсылка.Договоры") тогда получаем объект и проверяем, либо запросом проверять Где Договоры.Ссылка ЕСТЬ NULL.
(1) Пока писал уже накатали сообщение. В (2) верно сказано. Либо у вас там не ссылка либо метод недоступен из контекста исполнения кода.
Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
Проверить как вариант можно так: ОбщегоНазначения.ЭтоСсылка(ТипЗнч(ВашеЗначение)) И ОбщегоНазначения.СсылкаСуществует(ВашеЗначение).
Ребята, большое спасибо - очень выручили!
Получилось как-то так:
Получилось как-то так:
Если ТипЗнч(Источник) = Тип("СправочникОбъект.ДоговорыКонтрагентов") Тогда
Отказ = Ложь;
ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Источник)) И ОбщегоНазначения.СсылкаСуществует(Источник) Тогда
Отказ = Ложь;
Иначе
Сообщить("Договор не выгружен!!! У Контрагента: " + ВходящиеДанные + " имеется битая ссылка на договор!");
Отказ = Истина;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот