Вопрос по Конвертации данных. Обмен бп 2.0 - ут 10.3. При загрузке ошибка.
Здравствуйте! Поступила задача, с КД к сожалению никогда не работал...выгружаются данные из УТ, но в бп не загружаются. Появляются ошибки:
Начало загрузки: 16.07.2018 12:56:06
Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54
Ошибка при загрузке данных: {Обработка.ОбменДаннымиXML.МодульОбъекта(1596)}: Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54
Окончание загрузки: 16.07.2018 12:56:06
Подскажите куда копать?
Начало загрузки: 16.07.2018 12:56:06
Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54
Ошибка при загрузке данных: {Обработка.ОбменДаннымиXML.МодульОбъекта(1596)}: Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54
Окончание загрузки: 16.07.2018 12:56:06
Подскажите куда копать?
Найденные решения
(10)Скорее всего это не контрагент, а контактные данные этого контрагента, т.е. регистр сведений Контактная информация, а в качестве объекта выступает Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация (судя по ошибке), а у менеджера записи РС нет метода Метаданные(), соответственно ошибка у вас и возникает.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В самом обработчике ПослеЗагрузкиОбъекта код смотрели? Скорее всего там какие-то проверки и вызывается метод Метаданные. Попробуйте отладкой проверить этот обработчик или в правилах выведите сообщения. Правила как я понимаю типовые?
(4)
не совсем, есть нюансы.
В самом обработчике ПослеЗагрузкиОбъекта код смотрели? Скорее всего там какие-то проверки и вызывается метод Метаданные. Попробуйте отладкой проверить этот обработчик или в правилах выведите сообщения. Правила как я понимаю типовые?
не совсем, есть нюансы.
(4) проверил Обработчик. Вот его код:
/
Видимо с Объектом не все в порядке
/
/подставляет обязательные значения
МетаданныеДокумента = Объект.Объект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеДокумента) Тогда
ОбъектСодержитРеквизитОрганизация = ОбщегоНазначения.ЕстьРеквизитДокумента("Организация",МетаданныеДокумента);
ОбъектСодержитРеквизитСклад = ОбщегоНазначения.ЕстьРеквизитДокумента("Склад",МетаданныеДокумента);
ОбъектСодержитПодразделениеОрганизации = ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеОрганизации",МетаданныеДокумента);
Если ОбъектСодержитРеквизитОрганизация И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Параметры.ОсновнаяОрганизация;
КонецЕсли;
Если ОбъектСодержитРеквизитСклад Тогда
Если (НЕ ЗначениеЗаполнено(Объект.Склад)) Тогда
Объект.Склад = Параметры.СкладДляОбменаДаннымиСУТ;
КонецЕсли;
КонецЕсли;
// Заполнение реквизита ПодразделениеОрганизации
Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
ОсновноеПодразделение = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
Если ОбъектСодержитПодразделениеОрганизации Тогда
Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
Иначе
Объект.ПодразделениеОрганизации = Неопределено;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета") Тогда
Если Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ВозвратПокупателю
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеПодотчетномуЛицу
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.РасчетыПоКредитамИЗаймам
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПрочиеРасчетыСКонтрагентами
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеЗП Тогда
Объект.ПодразделениеДт = Неопределено;
// {ОбособленныеПодразделения
Иначе
Объект.ПодразделениеДт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
// }ОбособленныеПодразделения
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет") Тогда
Если Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами Тогда
Объект.ПодразделениеКт = Неопределено;
// {ОбособленныеПодразделения
Иначе
Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
// }ОбособленныеПодразделения
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
Если Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ВозвратОтПоставщика
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ВозвратОтПодотчетногоЛица
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ПолучениеНаличныхВБанке
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.РасчетыПоКредитамИЗаймам
Тогда
Объект.ПодразделениеКт = Неопределено;
// {ОбособленныеПодразделения
Иначе
Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
// }ОбособленныеПодразделения
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
Если Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ОплатаПоставщику
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВозвратПокупателю
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.РасчетыПоКредитамИЗаймам
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВзносНаличнымиВБанк
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаДепонентов
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям
ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыРаботнику
Тогда
Объект.ПодразделениеДт = Неопределено;
// {ОбособленныеПодразделения
Иначе
Объект.ПодразделениеДт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
// }ОбособленныеПодразделения
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.АвансовыйОтчет")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомиссионераОПродажах")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомитентуОПродажах")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КорректировкаДолга") Тогда
//Выполнить процедуру ЗаполнениеДокументов.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"));
Если ОбъектСодержитРеквизитОрганизация И ОбъектСодержитПодразделениеОрганизации
И ЗначениеЗаполнено(Объект.Организация) Тогда
ПодразделениеПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
// Если ПодразделениеОрганизации не заполнено.
Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
КонецЕсли;
Иначе // Если ПодразделениеОрганизации заполнено.
// Если ПодразделениеОрганизации не соответствует выбранной организации.
Если НЕ Объект.ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
Иначе // Выбрана не основная организация. ПодразделениеОрганизации нужно очистить.
Объект.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ГТДИмпорт") Тогда
// Выполнить процедуру ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект);
Если ОбъектСодержитРеквизитОрганизация
И ЗначениеЗаполнено(Объект.Организация)
И ОбъектСодержитПодразделениеОрганизации
И (НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации)) Тогда
ПодразделениеОрганизации = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
Если ЗначениеЗаполнено(ПодразделениеОрганизации) И ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
Объект.ПодразделениеОрганизации = ПодразделениеОрганизации;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровПоставщику")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОприходованиеТоваров")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеТоваров")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ТребованиеНакладная")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КомплектацияНоменклатуры")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
Если ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеОтправитель",МетаданныеДокумента) Тогда
Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладОтправитель <> Объект.СкладОтправитель Тогда
ПодразделениеВозврат = Неопределено;
ПараметрСклад = Объект.СкладОтправитель;
ПараметрОрганизация = Объект.Организация;
Выполнить(Алгоритмы.ПолучитьПодразделение);
Объект.ПодразделениеОтправитель = ПодразделениеВозврат;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеПолучатель",МетаданныеДокумента) Тогда
Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладПолучатель <> Объект.СкладПолучатель Тогда
ПодразделениеВозврат = Неопределено;
ПараметрСклад = Объект.СкладПолучатель;
ПараметрОрганизация = Объект.Организация;
Выполнить(Алгоритмы.ПолучитьПодразделение);
Объект.ПодразделениеПолучатель = ПодразделениеВозврат;
КонецЕсли;
КонецЕсли;
Иначе
Если ОбъектСодержитРеквизитОрганизация
И ОбъектСодержитРеквизитСклад
И ОбъектСодержитПодразделениеОрганизации Тогда
Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.Склад <> Объект.Склад Тогда
ПодразделениеВозврат = Неопределено;
ПараметрСклад = Объект.Склад;
ПараметрОрганизация = Объект.Организация;
Выполнить(Алгоритмы.ПолучитьПодразделение);
Объект.ПодразделениеОрганизации = ПодразделениеВозврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьВидимо с Объектом не все в порядке
(6) Проверьте, что у вас на узле. возможно там правда битая ссылка после непосредственного удаления объекта, а чтобы обмен не тормозил на ошибке - можете поставить в этот обработчик попытку. Вот эта строка выглядит довольно странно: . В данном обработчике доступен Объект, т.е должно быть так:
МетаданныеДокумента = Объект.Объект.Метаданные();
МетаданныеДокумента =Объект.Метаданные();
(10)Скорее всего это не контрагент, а контактные данные этого контрагента, т.е. регистр сведений Контактная информация, а в качестве объекта выступает Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация (судя по ошибке), а у менеджера записи РС нет метода Метаданные(), соответственно ошибка у вас и возникает.
(14) просто, если в попытку завернуть весь этот обработчик , то в случае ошибки в другой части кода эта ошибка также проигнорируется и соответственно вы о ней не будете знать, пока кто-то из пользователей не заметит. Можно завернуть в попытку только получение метаданных и сделать чтото типа такого:
пДанныеКорректны = Истина;
Попытка МетаданныеДокумента = Объект.Метаданные();
Исключение
пДанныеКорректны = Ложь;
КонецПопытки;
Если пДанныеКорректны Тогда
//далее основной код обработчика
КонецЕсли;
(15)
понял, спасибо большое.
в случае ошибки в другой части кода эта ошибка также проигнорируется и соответственно вы о ней не будете знать, пока кто-то из пользователей не заметит. Можно завернуть в попытку только получение метаданных и сделать чтото типа такого:
понял, спасибо большое.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот