Можно ли на одной кофигурации через COM-соединение в сторонней базе запустить ВНЕШНЮЮ ОБРАБОТКУ
1С:Управление торговлей 11
Платформа 1C v8.2
Windows
Беларусь
Россия
Программист
Внешняя обработка (ert,epf)
Здравствуйте Уважаемые Знатоки. Бьюсь уже не один день. Может кто подскажет почему не работает.
На стороне клиента в Промежуточной конфигурации запускаю команду в ней создаю подключение COM и соединяюсь с рабочей Конфигурацией там создаю и подключаю внешнюю обработку из файла но при получитьформу не важно какую выдает ошибку. Сама обработка открывается в рабочей конфигурацией без проблем. В ....ВнешниеОбработки.Подключить получаю строку с нужной обработкой то-есть все подключает.
И на ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
ошибка {Обработка.МодульАдресногоХранения.Форма.Форма(265)}: Ошибка при вызове метода контекста (ПолучитьФорму)
ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.116): Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки"
На стороне клиента в Промежуточной конфигурации запускаю команду в ней создаю подключение COM и соединяюсь с рабочей Конфигурацией там создаю и подключаю внешнюю обработку из файла но при получитьформу не важно какую выдает ошибку. Сама обработка открывается в рабочей конфигурацией без проблем. В ....ВнешниеОбработки.Подключить получаю строку с нужной обработкой то-есть все подключает.
//Подключает внешнюю обработку в подключенную базу
Функция ПодключитьВнешнююОбработку(ПутьКФайлуВнешнейОбработки,ТекстОшибки) Экспорт
Попытка
стрАдрес = "";
Если НЕ мСоединениеА.ПоместитьФайл(стрАдрес,ПутьКФайлуВнешнейОбработки, ,Ложь) Тогда //++ФМ:,ВикторК,18.01.2022 локализация для Управление Тоговлей для Беларусии ред 3
УниверсальныеМеханизмы.Ошибка("#Ошибка выполнения операции",ТекстОшибки,"ПодключитьВнешнююОбработку");
Сообщить(ТекстОшибки,СтатусСообщения.Важное);
Выполнить("Предупреждение(ТекстОшибки)");
Возврат ложь;
КонецЕсли;
мСоединениеА.ВнешниеОбработки.Подключить(стрАдрес);//++ФМ:,ВикторК,18.01.2022 локализация для Управление Тоговлей для Беларусии ред 3
Возврат истина;
Исключение
УниверсальныеМеханизмы.Ошибка("#Ошибка выполнения операции",ТекстОшибки,"ПодключитьВнешнююОбработку");
Сообщить(ТекстОшибки,СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
КонецФункции
ПоказатьЕсли не УниверсальныеМеханизмы.ПодключитьВнешнююОбработку(ПутьКОбработке,"Не удалось поместить обработку ""Форма просмотра заполнения документа (УФ)"" во временное хранилище!") Тогда
Возврат
КонецЕсли;
ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
ЗаголовокОбработки = ФормаОбработки.Заголовок;
мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
мСоединениеА.ОткрытьФормуМодально(ФормаОбработки,,ЭтаФорма);
Иначе
ФормаОбработки = Обработка.ПолучитьФорму("Форма");
ЗаголовокОбработки = ФормаОбработки.Заголовок;
мstorageConnector.BringWindowToTop(ЗаголовокОбработки, Истина);
ФормаОбработки.ОткрытьМодально();
КонецЕсли;
ПоказатьИ на ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
ошибка {Обработка.МодульАдресногоХранения.Форма.Форма(265)}: Ошибка при вызове метода контекста (ПолучитьФорму)
ФормаОбработки = Обработка.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.116): Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Вдумайтесь в то что Вы хотите сделать.... Вдумались, а теперь объясните какую и где Вы хотите открыть форму... Вот то то и оно. По ком Вы можете получить данные из базы или из обработки и передать их туда откуда вызвали, и уже потом открыть форму...Или просто откройте форму без подключения к базе по ком. ;)
Вот как выглядит все Процедура на стороне промежуточной конфигурации. Хочу открыть на стороне другой конфигурации внешнюю обработку. Если что не понятно пишите поясню
(2)
(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)
Функция СоздатьПодключение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.
мСоединение = мСоединениеА;
ИнициализацияГлобальныхПеременных();//повторная инициализация переменных
Возврат мСоединениеА;
КонецФункции
Показать
(1) Если внешняя обработка точно подключилась, то ее форму можно открыть по полному имени. Попробуйте:
Смущает, 1C:Enterprise 8.2.19.116. Это обычное приложение? Вроде бы в обычном приложении нельзя подключить внешнюю обработку по адресу временного хранилища.
ФормаОбработки = мСоединениеА.ПолучитьФорму("ВнешняяОбработка.ВыгрузкаДокументов.Форма.ФормаВыгрузки",,,Истина,);
Попытка
мСоединение = Подключение();
СправочникВнешнийДопОтчет = мСоединение.Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","Синхронизация");
ДвоичныеДанные = СправочникВнешнийДопОтчет.ХранилищеОбработки.Получить();
ИмяФайла = мСоединение.ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные.Записать(ИмяФайла);
ОписаниеЗащиты = мСоединение.NewObject("UnsafeOperationProtectionDescription");
ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;
ВнешняяОбработка = мСоединение.ВнешниеОбработки.Создать(ИмяФайла, Ложь, ОписаниеЗащиты);
МассивФизЛицУИД = Параметры.МассивФизЛицУИД;
ВнешняяОбработка.СделатьВсе(МассивФизЛицУИД);
Исключение
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот