Обращение к общему модулю внешней обработки (управляемые формы) из другой внешеней обработки (обычное приложение)
Здравствуйте коллеги, ситуация такая:
УПП 1.3, платформа 8.3
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура, к которой надо обратиться из другой внешней обработки на обычных формах.
Раньше для подобного обращения между внешними обработками на обычных формах использовал такой код:
Но при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена. Кто подскажет, как корректно обратиться в этом случае?
УПП 1.3, платформа 8.3
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура, к которой надо обратиться из другой внешней обработки на обычных формах.
Раньше для подобного обращения между внешними обработками на обычных формах использовал такой код:
Функция ОткрытиеОбработкиПоКоду(Код) Экспорт
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду(Код);
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Возврат ВнешниеОбработки.Создать(ИмяФайла);
КонецФункции
Процедура ВызватьПроцедуруВнешнейОбработки() Экспорт
ОбщийМодуль = ОткрытиеОбработкиПоКоду(Код);
ОбщийМодуль.НужнаяПроцедура();
Конецпроцедуры
ПоказатьНо при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена. Кто подскажет, как корректно обратиться в этом случае?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Чтобы вызов был корректным:
- либо сделать функцию / процедуру экспортной в модуле объекта вызываемой обработки
- либо вообще унести ее себе в обработку - так будет защита от изменений в другой обработке
Кто подскажет, как корректно обратиться в этом случае?
Чтобы вызов был корректным:
- либо сделать функцию / процедуру экспортной в модуле объекта вызываемой обработки
- либо вообще унести ее себе в обработку - так будет защита от изменений в другой обработке
(6) по первому пункту, экспортная процедура модуля объекта вызывается из экспортной процедуры модуля формы и не работает. Из интереса вызывал ее так же из экспортной процедуры модуля объекта, но тоже не сработало. Второй вариант к сожалению не подходит.
(1) Если внешняя обработка находится в справочнике Дополнительные отчеты и обработки, и в конфигурации используется БСП, то можно получить объект внешней обработки через
или
а саму ссылку
а далее обратиться к нужной процедуре модуля
ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(Ссылка)
или
ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Ссылка);
а саму ссылку
Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
а далее обратиться к нужной процедуре модуля
(1)
Само по себе это должно отрабатывать точно так же. Модуль обработки ничего не знает про УФ и ОФ, он одинаковый. Отличия только в форме.
Единственно что может быть, это ограничение в коде препроцессора, типа
#Если Сервер Тогда
// тут процедуры и методы
#КонецЕсли
Но при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена.
Само по себе это должно отрабатывать точно так же. Модуль обработки ничего не знает про УФ и ОФ, он одинаковый. Отличия только в форме.
Единственно что может быть, это ограничение в коде препроцессора, типа
#Если Сервер Тогда
// тут процедуры и методы
#КонецЕсли
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура
В модуле формы находится экспортная процедура? правильно? или в модуле объекта обработки есть процедура?
Так не работает??
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду(Код);
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Форма = Обработка.ПолучитьФорму("ИмяФормы");
Форма.КакаяТоЭкспортнаяПроцедура();
(8) вот так пробуйте
Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
Может вот так сработает
Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
Может вот так сработает
Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
Может вот так сработает
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
Может вот так сработает
Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
В модуле объекта вызываемой обработки, в разделе основной программы (в самом низу, под всеми процедурами и функциями) напишите, например Данное соощение должно выводиться уже на Вашей строке Сделайте вызов по Вашей методе и убедитесь, что что-то не так. Уверен, что сообщения не будет, значит Ваши попытки неудачны поскольку создается какая-то другая внешняя обработка, из кэша или откуда еще.
сообщить("это модуль объекта вызываемой обработки")
Возврат ВнешниеОбработки.Создать(ИмяФайла);
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот