1. fitr 15.03.19 14:01 Сейчас в теме

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

Здравствуйте коллеги, ситуация такая:

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

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

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

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

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

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

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

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

Чтобы вызов был корректным:
- либо сделать функцию / процедуру экспортной в модуле объекта вызываемой обработки
- либо вообще унести ее себе в обработку - так будет защита от изменений в другой обработке
11. fitr 15.03.19 14:30 Сейчас в теме
(6) по первому пункту, экспортная процедура модуля объекта вызывается из экспортной процедуры модуля формы и не работает. Из интереса вызывал ее так же из экспортной процедуры модуля объекта, но тоже не сработало. Второй вариант к сожалению не подходит.
12. independ 305 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 39 17.03.19 20:17 Сейчас в теме
(24)Если бы в текст вопроса скопировали - гораздо быстрее бы ответ получили )
17. Petrosyanc 5 15.03.19 19:51 Сейчас в теме
(1)

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

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


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

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

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

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

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

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

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

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

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

Вакансии

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

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)