Вопрос по Конвертации данных. Обмен бп 2.0 - ут 10.3. При загрузке ошибка.

1. 1c_uZer 16.07.18 09:27 Сейчас в теме
Здравствуйте! Поступила задача, с КД к сожалению никогда не работал...выгружаются данные из УТ, но в бп не загружаются. Появляются ошибки:

Начало загрузки: 16.07.2018 12:56:06

Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54

Ошибка при загрузке данных: {Обработка.ОбменДаннымиXML.МодульОбъекта(1596)}: Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = КонтактнаяИнформация
ТипОбъекта = Регистр сведений запись: Контактная информация
Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Метод объекта не обнаружен (Метаданные)
ПозицияМодуля = (2)
КодСообщения = 54

Окончание загрузки: 16.07.2018 12:56:06

Подскажите куда копать?
Вознаграждение за ответ
Показать полностью
Найденные решения
11. maks_20 164 16.07.18 12:47 Сейчас в теме +0.4 $m
(10)Скорее всего это не контрагент, а контактные данные этого контрагента, т.е. регистр сведений Контактная информация, а в качестве объекта выступает Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация (судя по ошибке), а у менеджера записи РС нет метода Метаданные(), соответственно ошибка у вас и возникает.
mifka186; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Поручик 4674 16.07.18 09:35 Сейчас в теме
Где-то битая ссылка передаётся.
3. 1c_uZer 16.07.18 09:41 Сейчас в теме
(2) а какое решение? ТИИ сделать?
4. maks_20 164 16.07.18 12:06 Сейчас в теме
В самом обработчике ПослеЗагрузкиОбъекта код смотрели? Скорее всего там какие-то проверки и вызывается метод Метаданные. Попробуйте отладкой проверить этот обработчик или в правилах выведите сообщения. Правила как я понимаю типовые?
5. 1c_uZer 16.07.18 12:11 Сейчас в теме
(4)
В самом обработчике ПослеЗагрузкиОбъекта код смотрели? Скорее всего там какие-то проверки и вызывается метод Метаданные. Попробуйте отладкой проверить этот обработчик или в правилах выведите сообщения. Правила как я понимаю типовые?


не совсем, есть нюансы.
6. 1c_uZer 16.07.18 12:14 Сейчас в теме
(4) проверил Обработчик. Вот его код:
/
/подставляет обязательные значения
МетаданныеДокумента = Объект.Объект.Метаданные();


Если Метаданные.Документы.Содержит(МетаданныеДокумента) Тогда
	ОбъектСодержитРеквизитОрганизация = ОбщегоНазначения.ЕстьРеквизитДокумента("Организация",МетаданныеДокумента);
	ОбъектСодержитРеквизитСклад       = ОбщегоНазначения.ЕстьРеквизитДокумента("Склад",МетаданныеДокумента);
	ОбъектСодержитПодразделениеОрганизации = ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеОрганизации",МетаданныеДокумента);
	
	Если ОбъектСодержитРеквизитОрганизация И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
		
		Объект.Организация = Параметры.ОсновнаяОрганизация;
		
	КонецЕсли;
	
	Если ОбъектСодержитРеквизитСклад Тогда
		
		Если (НЕ ЗначениеЗаполнено(Объект.Склад)) Тогда
		
			
			Объект.Склад = Параметры.СкладДляОбменаДаннымиСУТ;
			
		КонецЕсли;
		
	КонецЕсли;

	// Заполнение реквизита ПодразделениеОрганизации
	Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
		Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
		
			ОсновноеПодразделение = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
			Если ОбъектСодержитПодразделениеОрганизации Тогда
				Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
					Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
				Иначе
					Объект.ПодразделениеОрганизации = Неопределено;
				КонецЕсли;
			КонецЕсли;
			
			Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета") Тогда
				Если Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ВозвратПокупателю
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеПодотчетномуЛицу
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.РасчетыПоКредитамИЗаймам
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПрочиеРасчетыСКонтрагентами
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийСписаниеДенежныхСредств.ПеречислениеЗП Тогда
					Объект.ПодразделениеДт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеДт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет") Тогда
				Если Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами Тогда
					Объект.ПодразделениеКт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
				Если Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ВозвратОтПоставщика
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ВозвратОтПодотчетногоЛица
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ПолучениеНаличныхВБанке
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийПКО.РасчетыПоКредитамИЗаймам
					Тогда
					Объект.ПодразделениеКт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
				Если Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ОплатаПоставщику
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВозвратПокупателю
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.РасчетыПоКредитамИЗаймам
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВзносНаличнымиВБанк
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаДепонентов
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям
					ИЛИ Объект.ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаЗаработнойПлатыРаботнику
					Тогда
					Объект.ПодразделениеДт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеДт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
				// }ОбособленныеПодразделения
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.АвансовыйОтчет")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомиссионераОПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомитентуОПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КорректировкаДолга") Тогда
		//Выполнить процедуру ЗаполнениеДокументов.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"));
		Если ОбъектСодержитРеквизитОрганизация И ОбъектСодержитПодразделениеОрганизации
			И ЗначениеЗаполнено(Объект.Организация) Тогда
			ПодразделениеПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
			// Если ПодразделениеОрганизации не заполнено.
			Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
				Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
					// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
					Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
						Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
					КонецЕсли;
				Иначе // Если ПодразделениеОрганизации заполнено.
					// Если ПодразделениеОрганизации не соответствует выбранной организации.
					Если НЕ Объект.ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
						// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
						Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
							Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
						Иначе // Выбрана не основная организация. ПодразделениеОрганизации нужно очистить.
							Объект.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ГТДИмпорт") Тогда
		// Выполнить процедуру ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект);
		Если ОбъектСодержитРеквизитОрганизация
			И ЗначениеЗаполнено(Объект.Организация)
			И ОбъектСодержитПодразделениеОрганизации
			И (НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации)) Тогда
			
			ПодразделениеОрганизации = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделениеОрганизации");
			
			Если ЗначениеЗаполнено(ПодразделениеОрганизации) И ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
				Объект.ПодразделениеОрганизации = ПодразделениеОрганизации;
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровПоставщику")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОприходованиеТоваров")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеТоваров")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ТребованиеНакладная")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КомплектацияНоменклатуры")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
		
		Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
			Если ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеОтправитель",МетаданныеДокумента) Тогда
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладОтправитель <> Объект.СкладОтправитель Тогда
					ПодразделениеВозврат = Неопределено;
					ПараметрСклад = Объект.СкладОтправитель;
					ПараметрОрганизация = Объект.Организация;
					Выполнить(Алгоритмы.ПолучитьПодразделение);
					Объект.ПодразделениеОтправитель = ПодразделениеВозврат;
				КонецЕсли;
			КонецЕсли;
			Если ОбщегоНазначения.ЕстьРеквизитДокумента("ПодразделениеПолучатель",МетаданныеДокумента) Тогда
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладПолучатель <> Объект.СкладПолучатель Тогда
					ПодразделениеВозврат = Неопределено;
					ПараметрСклад = Объект.СкладПолучатель;
					ПараметрОрганизация = Объект.Организация;
					Выполнить(Алгоритмы.ПолучитьПодразделение);
					Объект.ПодразделениеПолучатель = ПодразделениеВозврат;
				КонецЕсли;
			КонецЕсли;
		Иначе
			Если ОбъектСодержитРеквизитОрганизация
				И ОбъектСодержитРеквизитСклад
				И ОбъектСодержитПодразделениеОрганизации Тогда
				
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.Склад <> Объект.Склад Тогда
					ПодразделениеВозврат = Неопределено;
					ПараметрСклад = Объект.Склад;
					ПараметрОрганизация = Объект.Организация;
					Выполнить(Алгоритмы.ПолучитьПодразделение);
					Объект.ПодразделениеОрганизации = ПодразделениеВозврат;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецЕсли;
Показать

Видимо с Объектом не все в порядке
7. maks_20 164 16.07.18 12:31 Сейчас в теме
(6) Проверьте, что у вас на узле. возможно там правда битая ссылка после непосредственного удаления объекта, а чтобы обмен не тормозил на ошибке - можете поставить в этот обработчик попытку. Вот эта строка выглядит довольно странно:
МетаданныеДокумента = Объект.Объект.Метаданные();
. В данном обработчике доступен Объект, т.е должно быть так:
МетаданныеДокумента =Объект.Метаданные();
8. 1c_uZer 16.07.18 12:34 Сейчас в теме
(7)
чике доступен Объект, т.е должно


Вот я так и поставил....12 объектов он выгружает.

На одном валится ошибка.
9. maks_20 164 16.07.18 12:37 Сейчас в теме
(8)сам объект, на котором ошибка проявляется проверяли? что он из себя представляет?
10. 1c_uZer 16.07.18 12:40 Сейчас в теме
(9) элемент Справочника контрагенты....вроде ничего необычного....
11. maks_20 164 16.07.18 12:47 Сейчас в теме +0.4 $m
(10)Скорее всего это не контрагент, а контактные данные этого контрагента, т.е. регистр сведений Контактная информация, а в качестве объекта выступает Объект = РегистрСведенийМенеджерЗаписи.КонтактнаяИнформация (судя по ошибке), а у менеджера записи РС нет метода Метаданные(), соответственно ошибка у вас и возникает.
mifka186; +1 Ответить
12. 1c_uZer 16.07.18 12:55 Сейчас в теме
(11) да, проверил...именно так...вы правы...буду смотреть как обойти...
13. maks_20 164 16.07.18 12:58 Сейчас в теме
(12) как вариант в обработчике проверять тип у объекта перед получением метаданных, попытка -исключение тоже поможет решить проблему, но лучше не использовать ее.
14. 1c_uZer 16.07.18 13:02 Сейчас в теме
(13)
ем метаданных, попытка -исключение тоже поможет решить проблему, но лучше не использовать ее.


а почему не использовать? так для справки мне.
15. maks_20 164 16.07.18 13:08 Сейчас в теме
(14) просто, если в попытку завернуть весь этот обработчик , то в случае ошибки в другой части кода эта ошибка также проигнорируется и соответственно вы о ней не будете знать, пока кто-то из пользователей не заметит. Можно завернуть в попытку только получение метаданных и сделать чтото типа такого:
пДанныеКорректны = Истина; 
Попытка МетаданныеДокумента = Объект.Метаданные(); 
Исключение 
пДанныеКорректны = Ложь; 
КонецПопытки; 
Если пДанныеКорректны  Тогда 
//далее основной код обработчика 
КонецЕсли;
16. 1c_uZer 16.07.18 13:18 Сейчас в теме
(15)
в случае ошибки в другой части кода эта ошибка также проигнорируется и соответственно вы о ней не будете знать, пока кто-то из пользователей не заметит. Можно завернуть в попытку только получение метаданных и сделать чтото типа такого:


понял, спасибо большое.
Оставьте свое сообщение

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