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

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

```1c
    Функция ОткрытиеОбработкиПоКоду(Код) Экспорт

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

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

    КонецФункции

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

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

    Конецпроцедуры
```

Но при обращении таким же способом к общему модулю обработки управляемого приложения получаю сообщения о том, что НужнаяПроцедура() не найдена. Кто подскажет, как корректно обратиться в этом случае?
---
Сейчас у меня вызываемая процедура с директивой &НаСервере
Чего?! В модуле объекта? Убрать директиву!
---
Кто подскажет, как корректно обратиться в этом случае?
Чтобы вызов был корректным:
 - либо сделать функцию / процедуру экспортной в модуле объекта вызываемой обработки
 - либо вообще унести ее себе в обработку - так будет защита от изменений в другой обработке
---
по первому пункту, экспортная процедура модуля объекта вызывается из экспортной процедуры модуля формы и не работает. Из интереса вызывал ее так же из экспортной процедуры модуля объекта, но тоже не сработало. Второй вариант к сожалению не подходит.
---
Если внешняя обработка находится в справочнике Дополнительные отчеты и обработки, и в конфигурации используется БСП, то можно получить объект внешней обработки через

```1c
    ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(Ссылка)
```

или

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

а саму ссылку

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

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

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

#КонецЕсли
---
вот мне тоже кажется, что я что-то не дочитал про директивы препроцессора) Сейчас у меня вызываемая процедура с директивой &НаСервере, возможно надо еще что-то указать?
---
Сейчас у меня вызываемая процедура с директивой &НаСервере
Чего?! В модуле объекта? Убрать директиву!
---
вот я дурак! действительно, в этом было дело, спасибо!
---
Если бы в текст вопроса скопировали - гораздо быстрее бы ответ получили )
---
Вместо ИмяФайла = ПолучитьИмяВременногоФайла();
Укажи ИмяФайла = ПолучитьИмяВременногоФайла("epf");

и все будет ...)
---
Есть внешняя обработка на управляемых формах, в общем модуле которой есть экспортная процедура

В модуле формы находится экспортная процедура? правильно? или в модуле объекта обработки есть процедура?
---
Так не работает??

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

    ИмяФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
    ДвоичныеДанные.Записать(ИмяФайла);
    Обработка = ВнешниеОбработки.Создать(ИмяФайла);
    Форма = Обработка.ПолучитьФорму("ИмяФормы");
    Форма.КакаяТоЭкспортнаяПроцедура();
```
---
Процедура находится в модуле объекта, поэтому обращаться к форме не хотелось бы, хотя из спортивного интереса перенесу ее в форму и попробую этот код, но как основной вариант такой способ не подходит.
---
Правильно ли я понимаю, когда создали обработку и запускаете экспортную процедуру выдает ошибку??

```1c
    Обработка = ВнешниеОбработки.Создать(ИмяФайла);
    Обработка.КакаяТоЭкспортнаяПроцедура(); - // ВОТ ТУТ ОШИБКА???
```
---
Да, все так, ошибка на второй строке, сама обработка создается. Хотя при использовании такого же кода в обработке обычного приложения, ошибки нет.
---
вот так пробуйте

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

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

Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
Обработка.КакаяТоЭкспортнаяПроцедура();
---
Попробуйте еще по играть с параметром безопасный режим!
Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)

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

```1c
    Обработка = ВнешниеОбработки.Создать(ИмяФайла, Ложь);
    Обработка.КакаяТоЭкспортнаяПроцедура();
```
---
не помогло
---
Перенесите в модуль менеджера экспортную процедуру.
---
Извиняюсь, не посмотрел - отчет то внешний.
---
ИмяФайла = ПолучитьИмяВременногоФайла("epf");

Вот так должно заработать
---
попробовал так, не помогло, хотя, если честно, не очень понимаю, как это должно было помочь)
---
В модуле объекта вызываемой обработки, в разделе основной программы (в самом низу, под всеми процедурами и функциями) напишите, например
```1c
    сообщить("это модуль объекта вызываемой обработки")
```
Данное соощение должно выводиться уже на Вашей строке
```1c
    Возврат ВнешниеОбработки.Создать(ИмяФайла);
```
Сделайте вызов по Вашей методе и убедитесь, что что-то не так. Уверен, что сообщения не будет, значит Ваши попытки неудачны поскольку создается какая-то другая внешняя обработка, из кэша или откуда еще.
---
Сделал так, сообщение "это модуль объекта вызываемой обработки" выводится, далее моя ошибка "Метод объекта не обнаружен (СоздатьЗаявку)"
---
Передавай параметры, принимай обработкойвыбора