Обращение к общему модулю внешней обработки (управляемые формы) из другой внешеней обработки (обычное приложение)

1. fitr 15.03.19 14:01 Сейчас в теме
Здравствуйте коллеги, ситуация такая:

УПП 1.3, платформа 8.3
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура, к которой надо обратиться из другой внешней обработки на обычных формах.
Раньше для подобного обращения между внешними обработками на обычных формах использовал такой код:

Функция ОткрытиеОбработкиПоКоду(Код) Экспорт 
	
	ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду(Код);

	ИмяФайла = ПолучитьИмяВременногоФайла();
	ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
	ДвоичныеДанные.Записать(ИмяФайла);
	Возврат ВнешниеОбработки.Создать(ИмяФайла);
	
КонецФункции

Процедура ВызватьПроцедуруВнешнейОбработки() Экспорт

       ОбщийМодуль = ОткрытиеОбработкиПоКоду(Код);
       ОбщийМодуль.НужнаяПроцедура();

Конецпроцедуры
Показать

Но при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена. Кто подскажет, как корректно обратиться в этом случае?
Вознаграждение за ответ
Показать полностью
Найденные решения
23. spacecraft 17.03.19 16:06 Сейчас в теме +0.5 $m
(22)
Сейчас у меня вызываемая процедура с директивой &НаСервере

Чего?! В модуле объекта? Убрать директиву!
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. mrcamomile 80 15.03.19 14:19 Сейчас в теме
(1)
Кто подскажет, как корректно обратиться в этом случае?

Чтобы вызов был корректным:
- либо сделать функцию / процедуру экспортной в модуле объекта вызываемой обработки
- либо вообще унести ее себе в обработку - так будет защита от изменений в другой обработке
11. fitr 15.03.19 14:30 Сейчас в теме
(6) по первому пункту, экспортная процедура модуля объекта вызывается из экспортной процедуры модуля формы и не работает. Из интереса вызывал ее так же из экспортной процедуры модуля объекта, но тоже не сработало. Второй вариант к сожалению не подходит.
12. independ 1520 15.03.19 14:35 Сейчас в теме
(1) Если внешняя обработка находится в справочнике Дополнительные отчеты и обработки, и в конфигурации используется БСП, то можно получить объект внешней обработки через
ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(Ссылка) 

или
ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Ссылка);

а саму ссылку
Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;

а далее обратиться к нужной процедуре модуля
16. spacecraft 15.03.19 19:01 Сейчас в теме
(1)
Но при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена.

Само по себе это должно отрабатывать точно так же. Модуль обработки ничего не знает про УФ и ОФ, он одинаковый. Отличия только в форме.
Единственно что может быть, это ограничение в коде препроцессора, типа
#Если Сервер Тогда

// тут процедуры и методы

#КонецЕсли
22. fitr 17.03.19 15:56 Сейчас в теме
(16)вот мне тоже кажется, что я что-то не дочитал про директивы препроцессора) Сейчас у меня вызываемая процедура с директивой &НаСервере, возможно надо еще что-то указать?
23. spacecraft 17.03.19 16:06 Сейчас в теме +0.5 $m
(22)
Сейчас у меня вызываемая процедура с директивой &НаСервере

Чего?! В модуле объекта? Убрать директиву!
24. fitr 17.03.19 16:41 Сейчас в теме
(23) вот я дурак! действительно, в этом было дело, спасибо!
25. uno-c 235 17.03.19 20:17 Сейчас в теме
(24)Если бы в текст вопроса скопировали - гораздо быстрее бы ответ получили )
17. Petrosyanc 7 15.03.19 19:51 Сейчас в теме
(1)

Вместо ИмяФайла = ПолучитьИмяВременногоФайла();
Укажи ИмяФайла = ПолучитьИмяВременногоФайла("epf");

и все будет ...)
2. SedovSU@mail.ru 297 15.03.19 14:10 Сейчас в теме
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура


В модуле формы находится экспортная процедура? правильно? или в модуле объекта обработки есть процедура?
3. SedovSU@mail.ru 297 15.03.19 14:12 Сейчас в теме
Так не работает??
    ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду(Код);

    ИмяФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяФайла);
    Обработка = ВнешниеОбработки.Создать(ИмяФайла);
    Форма = Обработка.ПолучитьФорму("ИмяФормы");
    Форма.КакаяТоЭкспортнаяПроцедура();
4. fitr 15.03.19 14:17 Сейчас в теме
(3) Процедура находится в модуле объекта, поэтому обращаться к форме не хотелось бы, хотя из спортивного интереса перенесу ее в форму и попробую этот код, но как основной вариант такой способ не подходит.
5. SedovSU@mail.ru 297 15.03.19 14:18 Сейчас в теме
(4) Правильно ли я понимаю, когда создали обработку и запускаете экспортную процедуру выдает ошибку??

Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.КакаяТоЭкспортнаяПроцедура(); - // ВОТ ТУТ ОШИБКА???
8. fitr 15.03.19 14:22 Сейчас в теме
(5)Да, все так, ошибка на второй строке, сама обработка создается. Хотя при использовании такого же кода в обработке обычного приложения, ошибки нет.
9. SedovSU@mail.ru 297 15.03.19 14:23 Сейчас в теме
(8) вот так пробуйте

Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)

Может вот так сработает

Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
7. SedovSU@mail.ru 297 15.03.19 14:20 Сейчас в теме
Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)

Может вот так сработает

Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
10. fitr 15.03.19 14:26 Сейчас в теме
13. Petrosyanc 7 15.03.19 17:31 Сейчас в теме
Перенесите в модуль менеджера экспортную процедуру.
14. Petrosyanc 7 15.03.19 17:32 Сейчас в теме
Извиняюсь, не посмотрел - отчет то внешний.
15. Petrosyanc 7 15.03.19 17:37 Сейчас в теме
ИмяФайла = ПолучитьИмяВременногоФайла("epf");

Вот так должно заработать
21. fitr 17.03.19 15:51 Сейчас в теме
(15)попробовал так, не помогло, хотя, если честно, не очень понимаю, как это должно было помочь)
18. uno-c 235 16.03.19 04:11 Сейчас в теме
В модуле объекта вызываемой обработки, в разделе основной программы (в самом низу, под всеми процедурами и функциями) напишите, например
сообщить("это модуль объекта вызываемой обработки")
Данное соощение должно выводиться уже на Вашей строке
Возврат ВнешниеОбработки.Создать(ИмяФайла);
Сделайте вызов по Вашей методе и убедитесь, что что-то не так. Уверен, что сообщения не будет, значит Ваши попытки неудачны поскольку создается какая-то другая внешняя обработка, из кэша или откуда еще.
20. fitr 17.03.19 15:51 Сейчас в теме
(18) Сделал так, сообщение "это модуль объекта вызываемой обработки" выводится, далее моя ошибка "Метод объекта не обнаружен (СоздатьЗаявку)"
19. meriferi 17.03.19 13:45 Сейчас в теме
Передавай параметры, принимай обработкойвыбора
Оставьте свое сообщение

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