УниверсальныйОбменДаннымиXML + COM подключение к базе

1. Angel_19 6 05.05.17 10:57 Сейчас в теме
Обмен между базами с использованием обработки: УниверсальныйОбменДаннымиXML.
В базе срабатывает событие, по которому нужно произвести выгрузку и соответственно загрузку.
Выгрузка происходит штатно.
При загрузке через COM подключаюсь к нужной базе, там создаю обработку, заполняю реквизиты, и при попытке вызвать метод: ВыполнитьЗагрузку() , получаю ошибку, что такого метода нет. Хотя он на самом деле в обработке есть и имеет директиву Экспорт.
При этом если пробовать вызывать процедуру из модуля приложения (из подключенной базы), то все происходит штатно.

Вариант кода:
Попытка
	База = Новый COMОбъект("V83.Application");
	База.connect(СтрокаПодключения); 
	База.visible = false;
Исключение
	Сообщить("Ошибка соединения с базой : " + ОписаниеОшибки());
	База = Неопределено;
КонецПопытки;

Обработка = База.Обработки.УниверсальныйОбменДаннымиXML.Создать();

Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
Обработка.РежимОбмена = "Загрузка";
Обработка.ВыводВОкноСообщенийИнформационныхСообщений 			= Истина;
Обработка.НеВыводитьНикакихИнформационныхСообщенийПользователю 	= Истина;
Обработка.ЗагружатьДанныеВРежимеОбмена 							= Истина;
Обработка.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты 	= Истина;
Обработка.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления 			= Истина;
Обработка.ОптимизированнаяЗаписьОбъектов 						= Истина;
Обработка.ЗаписыватьРегистрыНаборамиЗаписей 					= Истина;

Обработка.ВыполнитьЗагрузку();
Показать


В чем может быть проблема?
По теме из базы знаний
Найденные решения
6. Angel_19 6 17.05.17 08:13 Сейчас в теме
Сделал так:

V82 = Новый COMобъект("V83.COMConnector");
	
	СтрокаПодключения =  "srvr='" + СокрЛП(Сервер)
	+ "'; ref='" + СокрЛП(БазаДанных)
	+ "'; usr='" + СокрЛП(Пользователь)
	+ "'; pwd='" + СокрЛП(Пароль) + "';";

	База = V82.Connect(СтрокаПодключения);
	Обработка = База.Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
	Обработка.РежимОбмена = "Загрузка";
	Обработка.ВыполнитьЗагрузку();
Показать


В итоге все работает.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. bmk74 243 05.05.17 13:36 Сейчас в теме
Посмотрите в начале модуля обработки есть ли директива препроцессора
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Если там нет внешнего соединения то может выдать такую ошибку
3. Angel_19 6 05.05.17 16:38 Сейчас в теме
(2)
Если там нет внешнего соединения то может выдать такую ошибку

Есть.
4. alex_bitti 98 05.05.17 17:28 Сейчас в теме
Сейчас в отладчике смотрю, сделал аналогичный код, создал обработку, там доступны только стандартные методы. Все правильно он будет ругаться, ему модуль походу через ком недоступен.
Судя по коду это не управляемые формы.
Получи в начале модуль объекта
5. Angel_19 6 06.05.17 07:52 Сейчас в теме
(4)
Сейчас в отладчике смотрю, сделал аналогичный код, создал обработку, там доступны только стандартные методы. Все правильно он будет ругаться, ему модуль походу через ком недоступен.
Судя по коду это не управляемые формы.
Получи в начале модуль объекта

А есть разница управляемые формы или нет? По факту там как раз управляемые формы, но обмен планируется делать с разными базами с управляемыми и обычными формами.

А как получить модуль объекта?
6. Angel_19 6 17.05.17 08:13 Сейчас в теме
Сделал так:

V82 = Новый COMобъект("V83.COMConnector");
	
	СтрокаПодключения =  "srvr='" + СокрЛП(Сервер)
	+ "'; ref='" + СокрЛП(БазаДанных)
	+ "'; usr='" + СокрЛП(Пользователь)
	+ "'; pwd='" + СокрЛП(Пароль) + "';";

	База = V82.Connect(СтрокаПодключения);
	Обработка = База.Обработки.УниверсальныйОбменДаннымиXML.Создать();
	Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
	Обработка.РежимОбмена = "Загрузка";
	Обработка.ВыполнитьЗагрузку();
Показать


В итоге все работает.
Оставьте свое сообщение

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