Можно ли на одной кофигурации через COM-соединение в сторонней базе запустить ВНЕШНЮЮ ОБРАБОТКУ

1. 77Viktor77 6 18.01.22 13:54 Сейчас в теме
Здравствуйте Уважаемые Знатоки. Бьюсь уже не один день. Может кто подскажет почему не работает.
На стороне клиента в Промежуточной конфигурации запускаю команду в ней создаю подключение COM и соединяюсь с рабочей Конфигурацией там создаю и подключаю внешнюю обработку из файла но при получитьформу не важно какую выдает ошибку. Сама обработка открывается в рабочей конфигурацией без проблем. В ....ВнешниеОбработки.Подключить получаю строку с нужной обработкой то-есть все подключает.

//Подключает внешнюю обработку в подключенную базу
Функция ПодключитьВнешнююОбработку(ПутьКФайлуВнешнейОбработки,ТекстОшибки) Экспорт
	
	Попытка	
		стрАдрес = "";
		Если НЕ мСоединениеА.ПоместитьФайл(стрАдрес,ПутьКФайлуВнешнейОбработки, ,Ложь) Тогда  //++ФМ:,ВикторК,18.01.2022 локализация для Управление Тоговлей для Беларусии ред 3 
			УниверсальныеМеханизмы.Ошибка("#Ошибка выполнения операции",ТекстОшибки,"ПодключитьВнешнююОбработку");
			Сообщить(ТекстОшибки,СтатусСообщения.Важное);
			Выполнить("Предупреждение(ТекстОшибки)");
			Возврат ложь;
		КонецЕсли; 		
		мСоединениеА.ВнешниеОбработки.Подключить(стрАдрес);//++ФМ:,ВикторК,18.01.2022 локализация для Управление Тоговлей для Беларусии ред 3 
		Возврат истина;
	Исключение
		УниверсальныеМеханизмы.Ошибка("#Ошибка выполнения операции",ТекстОшибки,"ПодключитьВнешнююОбработку");
		Сообщить(ТекстОшибки,СтатусСообщения.Важное);
		Возврат Ложь;
	КонецПопытки;
	
КонецФункции
Показать


Если не УниверсальныеМеханизмы.ПодключитьВнешнююОбработку(ПутьКОбработке,"Не удалось поместить обработку ""Форма просмотра заполнения документа (УФ)"" во временное хранилище!") Тогда
			Возврат
		КонецЕсли;  
		ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
		ЗаголовокОбработки = ФормаОбработки.Заголовок;
		мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
		мСоединениеА.ОткрытьФормуМодально(ФормаОбработки,,ЭтаФорма);  
	Иначе
		ФормаОбработки = Обработка.ПолучитьФорму("Форма"); 
		ЗаголовокОбработки = ФормаОбработки.Заголовок;
		мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
		ФормаОбработки.ОткрытьМодально(); 
	КонецЕсли;
Показать


И на ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);

ошибка {Обработка.МодульАдресногоХранения.Форма.Форма(265)}: Ошибка при вызове метода контекста (ПолучитьФорму)
ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.116): Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки"
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 18.01.22 13:59 Сейчас в теме
(1)Вдумайтесь в то что Вы хотите сделать.... Вдумались, а теперь объясните какую и где Вы хотите открыть форму... Вот то то и оно. По ком Вы можете получить данные из базы или из обработки и передать их туда откуда вызвали, и уже потом открыть форму...Или просто откройте форму без подключения к базе по ком. ;)
3. 77Viktor77 6 18.01.22 14:05 Сейчас в теме
Вот как выглядит все Процедура на стороне промежуточной конфигурации. Хочу открыть на стороне другой конфигурации внешнюю обработку. Если что не понятно пишите поясню
(2)
Процедура НадписьНастройкиРучнойВыгрузкиДокументовНажатие(Элемент)
	
	//когда изменяются настройки из базы драйвера или из основной базы, нужно закрывать 1С предприятие чтобы настройки сохранились
	
	мСоединениеА = УниверсальныеМеханизмы.СоздатьПодключениеApplication();
	
	Если мСоединениеА = Неопределено Тогда
		Предупреждение("Не удалось создать подключение к базе 1С. Повторите попытку.");
		Возврат;
	КонецЕсли;
	
	//Получить путь к обработке
	НазваниеПапкиСОбработками = "Управление торговлей 10.3";
	Если глУправляемоеПриложение тогда
		НазваниеПапкиСОбработками = "Управление торговлей 11"
	КонецЕсли;
	
	//++ФМ:,ВикторК,17.01.2022 локализация для Управление Тоговлей для Беларусии ред 3 
	ПутьКОбработке = "C:\ProgramData\Cleverence\Базы Mobile SMARTS\1С Драйвер ТСД Wi-Fi ПРОФ 4\" + "Обработки для 1С\("+?(глВерсияПлатформы >= 82,"8.2, 8.3","8.1")+") "+НазваниеПапкиСОбработками+"\Выгрузка документов.epf";
	//--ФМ 
	
	Если глВерсияПлатформы > 81 Тогда
		Обработка    = мСоединениеА.ВнешниеОбработки.Создать(ПутьКОбработке,Ложь); 
	Иначе
		Обработка    = мСоединениеА.ВнешниеОбработки.Создать(ПутьКОбработке); 		
	КонецЕсли;
	
	Если глУправляемоеПриложение Тогда
		//+MAV. 11.09.2014 №213 Ошибка модальности в Розница 2.1 	
		// Если режим использования модальности выключен, тогда используется процедура "ПриПодключенииОбработкиМодуль" в модуле обработки
		ЕстьМодальность = ЕстьМодальность(мСоединениеА);
		Если глВерсияПлатформы > 81 И не ЕстьМодальность Тогда	       		
			мПараметры = Новый Структура; 
			мПараметры.Вставить("ПутьКОбработке", ПутьКОбработке);
			мПараметры.Вставить("ЕстьМодальность", ЕстьМодальность);  			
			Оповещение = мСоединениеА.NewObject("ОписаниеОповещения", "ПриПодключенииОбработкиМодуль", Обработка.ЭтотОбъект, мПараметры);
			мСоединениеА.НачатьПомещениеФайла(Оповещение, "", ПутьКОбработке, Ложь);				
			Возврат; 		
		КонецЕсли;
		//-MAV. 11.09.2014 №213 Ошибка модальности в Розница 2.1
		
	Если не УниверсальныеМеханизмы.ПодключитьВнешнююОбработку(ПутьКОбработке,"Не удалось поместить обработку ""Форма просмотра заполнения документа (УФ)"" во временное хранилище!") Тогда
			Возврат
		КонецЕсли;  
		ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
		ЗаголовокОбработки = ФормаОбработки.Заголовок;
		мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
		мСоединениеА.ОткрытьФормуМодально(ФормаОбработки,,ЭтаФорма);  
	Иначе
		ФормаОбработки = Обработка.ПолучитьФорму("Форма"); 
		ЗаголовокОбработки = ФормаОбработки.Заголовок;
		мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
		ФормаОбработки.ОткрытьМодально(); 
	КонецЕсли;
	
	УниверсальныеМеханизмы.ЗавершитьПодключениеApplication(мСоединениеА);
	
КонецПроцедуры. 
Показать
4. lefthander 18.01.22 14:08 Сейчас в теме
(3)
УниверсальныеМеханизмы.СоздатьПодключениеApplication();
Вот на это еще бы взглянуть... ;)
5. 77Viktor77 6 18.01.22 14:12 Сейчас в теме
(4)
Функция СоздатьПодключениеApplication() Экспорт
	
	#Если не ВнешнееСоединение  тогда
		Если не ПараметрыСеанса.ОткрыватьФормыПодключеннойБазы ИЛИ (Найти(глНазваниеКонфигурации, "штрихм") > 0 
			или Найти(глНазваниеКонфигурации, "далионуправлениемагазином") > 0) Тогда
			Предупреждение("Для базы с конфигурацией """+ глМетаданные.синоним+""" данная операция не доступна!" );
			возврат Неопределено;
		КонецЕсли;
	#КонецЕсли
	
	мСоединение = Неопределено;
	 
	Если мСоединениеА <> Неопределено Тогда
		мСоединение = мСоединениеА;
		Возврат мСоединениеА;
	КонецЕсли;
	
	ПутьКБазе    = Константы.ПутьКОсновнойБД.Получить();
	Сервер       = Константы.СерверОсновнойБД.Получить();
	БазаДанных   = Константы.ИмяОсновнойБД.Получить();
	Пользователь = Константы.ПользовательОсновнойБД.Получить();
	Пароль       = Константы.ПарольПользователяОсновнойБД.Получить();    
	
	СтрокаПодключения = "";
	Если не Константы.ТипОсновнойБД.Получить() Тогда
		СтрокаПодключения = "Srvr=""" + Сервер + """;Ref=""" + БазаДанных + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
	Иначе	
		СтрокаПодключения = "File=""" + ПутьКБазе + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
	КонецЕсли;
 
	мСоединениеА = Новый COMОбъект("v"+глВерсияПлатформы+".Application");
	
	Попытка
		Результат = мСоединениеА.Connect(СтрокаПодключения); 
	Исключение
		Выполнить("Предупреждение(ОписаниеОшибки())");
		Возврат Неопределено;
	КонецПопытки;
	
	// +ZHKN. 03.10.2014. №149 Альфа-Авто ошибки при настройке адресного хранения
	Попытка
		мМетаданные = мСоединениеА.Метаданные;  
	Исключение
		ЗавершитьПодключениеApplication(мСоединениеА);
	КонецПопытки;
	
	Если мСоединениеА = Неопределено И Найти(глНазваниеКонфигурации, "автосалон5") > 0 Тогда
		
		ОтключениеРаботыСОборудованием();	
		
		мСоединениеА = Новый COMОбъект("v"+глВерсияПлатформы+".Application");
		
		Попытка
			Результат = мСоединениеА.Connect(СтрокаПодключения); 
		Исключение
			Выполнить("Предупреждение(ОписаниеОшибки())");
			Возврат Неопределено;
		КонецПопытки;
	
		Попытка
			мМетаданные = мСоединениеА.Метаданные;  
		Исключение
			ЗавершитьПодключениеApplication(мСоединениеА);
			Возврат Неопределено;
		КонецПопытки;
		
		мСоединение = Неопределено;
	КонецЕсли;
	// -ZHKN. 03.10.2014.
	
	мСоединение = мСоединениеА;
	
	ИнициализацияГлобальныхПеременных();//повторная инициализация переменных
	
	Возврат  мСоединениеА; 
	
КонецФункции
Показать
6. lefthander 18.01.22 14:18 Сейчас в теме
(5)мСоединениеА.ОткрытьФормуМодально(ФормаОбработки,,ЭтаФорма); Откуда у ком соединения возьмется функция ОткрытьФормуМодально? Это функция глобального контекста.... но никак не сом объекта.
7. 77Viktor77 6 18.01.22 14:24 Сейчас в теме
(6) До этого еще дойти надо, а ошибка раньше !)
8. lefthander 18.01.22 14:30 Сейчас в теме
(7)ВнешниеОбработки.Подключить получаю строку с нужной обработкой то-есть все подключает. - Ни о чем не говорит? Ни каких мыслей нет? ;)
9. SlavaKron 18.01.22 14:40 Сейчас в теме
(1) Если внешняя обработка точно подключилась, то ее форму можно открыть по полному имени. Попробуйте:
ФормаОбработки = мСоединениеА.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
Смущает, 1C:Enterprise 8.2.19.116. Это обычное приложение? Вроде бы в обычном приложении нельзя подключить внешнюю обработку по адресу временного хранилища.
11. 77Viktor77 6 18.01.22 14:54 Сейчас в теме
(9)1C:Enterprise 8.2. это промежуточная конфигурация в обычном приложении, а подключаемся и отрываем в другой конфигурации в управляемом приложении 8.2.19
10. 77Viktor77 6 18.01.22 14:43 Сейчас в теме
Вот что в отладчике не чего подозрительного я не вижу. Вот и не понятно что да почему.
Прикрепленные файлы:
12. Vladimir-R 167 18.01.22 15:02 Сейчас в теме
	Попытка

		мСоединение = Подключение();
		СправочникВнешнийДопОтчет = мСоединение.Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","Синхронизация");
		ДвоичныеДанные = СправочникВнешнийДопОтчет.ХранилищеОбработки.Получить();
		ИмяФайла = мСоединение.ПолучитьИмяВременногоФайла("epf");
		ДвоичныеДанные.Записать(ИмяФайла);
		ОписаниеЗащиты = мСоединение.NewObject("UnsafeOperationProtectionDescription");
		ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
		ВнешняяОбработка = мСоединение.ВнешниеОбработки.Создать(ИмяФайла, Ложь, ОписаниеЗащиты);
		МассивФизЛицУИД = Параметры.МассивФизЛицУИД;
		ВнешняяОбработка.СделатьВсе(МассивФизЛицУИД);

		
		
	Исключение
Показать
13. 77Viktor77 6 18.01.22 15:10 Сейчас в теме
(12)поясните пожалуйста не совсем понятно что куда и к чему?
14. 77Viktor77 6 19.01.22 09:22 Сейчас в теме
Не ужели не кто не может сказать причину по которой всё-таки не работает данная модель!
Оставьте свое сообщение

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