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

1. 77Viktor77 1 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 1 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 1 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 1 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 1 18.01.22 14:54 Сейчас в теме
(9)1C:Enterprise 8.2. это промежуточная конфигурация в обычном приложении, а подключаемся и отрываем в другой конфигурации в управляемом приложении 8.2.19
10. 77Viktor77 1 18.01.22 14:43 Сейчас в теме
Вот что в отладчике не чего подозрительного я не вижу. Вот и не понятно что да почему.
Прикрепленные файлы:
12. Vladimir-R 167 18.01.22 15:02 Сейчас в теме
	Попытка

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

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

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)