Помогите пожалуйста
Внешняя обработка выполняется программно. Но необходимо не открыть форму, а выполнить процедуру в модуле объекта внешней обработки
Есть код который запускает на выполнение открытие формы

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
 Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции

&НаСервере
Функция ПодключитьВнешнийОтчет(АдресХранилища)
 Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
КонецФункции

&НаКлиенте
Процедура дзФайловВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
 СтандартнаяОбработка = Ложь; ВыбСтрока=Элемент.ТекущиеДанные;
 Если НЕ ВыбСтрока.ЭтоГруппа Тогда
  АдресХранилища = "";
  Если ВыбСтрока.Расширение = ".epf" Тогда
   Рез=ПоместитьФайл(АдресХранилища,ВыбСтрока.ПолноеИмя, ,Ложь);
   ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
   ОткрытьФорму("ВнешняяОбработка."+ИмяОбработки+".Форма");
  ИначеЕсли ВыбраннаяСтрока.Расширение = ".erf" Тогда
   Рез=ПоместитьФайл(АдресХранилища,ВыбСтрока.ПолноеИмя, ,Ложь);
   ИмяОбработки = ПодключитьВнешнийОтчет(АдресХранилища);
   ОткрытьФорму("ВнешнийОтчет."+ИмяОбработки+".Форма");
  КонецЕсли;
 КонецЕсли;
КонецПроцедуры

А как вместо ОткрытьФорму обратиться к реквизитам и выполнить процедуру

      Если НЕ ВнешнийОтчетОбработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда
       ВнешнийОтчетОбработка.ДополнительныеПараметры = ДополнительныеПараметры;
      КонецЕсли;

      ТабличныйДокументРезультат = ВнешнийОтчетОбработка.Инициализировать();
---
Работает с такой реализацией

СтрокаСпискаОтчетов содержит полный путь к файлу внешнего отчета и расширение

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

    ИначеЕсли СтрокаСпискаОтчетов.Расширение = ".erf" Тогда
    Рез=ПоместитьФайл(АдресХранилища,СтрокаСпискаОтчетов.ПолноеИмяФайлаВнешнейОбработки, ,Ложь);
    ИмяОбработки = ПодключитьВнешнийОтчет(АдресХранилища);

    КонецЕсли;
    ТабДок = ВнешняяОбработкаНаСервере(СтрокаСпискаОтчетов.Расширение,ИмяОбработки) ;

    .........

    &НаСервере
    Функция ВнешняяОбработкаНаСервере(СтрокаСпискаОтчетовРасширение,ИмяОбработки)
    ИмяТипа = "ОписаниеЗащитыОтОпасныхДействий";
    ОписаниеЗащиты = Новый(ИмяТипа);
    ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;

    Если СтрокаСпискаОтчетовРасширение = ".epf" Тогда
    ВнешнийОтчетОбработка = ВнешниеОбработки.Создать(ИмяОбработки, Ложь, ОписаниеЗащиты);

    Иначе
    ВнешнийОтчетОбработка = ВнешниеОтчеты.Создать(ИмяОбработки, Ложь, ОписаниеЗащиты);

    КонецЕсли;
    ТабличныйДокументРезультат = ВнешнийОтчетОбработка.Инициализировать();
    .........
```
---
вызови моддуль менеджера внешних обработок. И посмотри что там по имени обработки есть.
Если обработка будет, то и далее экспортный метод можно использовать. Иначе переписывать.
А вообще зачем такое извращение делать? Напишите внешнюю обработку, которая сама этот код выполнит!
---
МояВнешкаОбъект = ВнешниеОбработки.Создать(ИмяОбработки);

МояВнешкаОбъект.Реквизит1 = 1;
МояВнешкаОбъект.Реквизит2 = "абвгд";
МояВнешкаОбъект.ИмяЭкспортнойПроцедурыИлиФункцииВМодулеОбъекта();
---
Здесь мешает безопасный режим
---
Если из внешки вы пытаетесь вызвать другую внешку, то вполне себе будет мешать. Настраивайте профили безопасности или уберите галку у пользователя "Защита от опасных действий".

Либо через БСП

Либо

Синтаксис:
УстановитьБезопасныйРежим(<БезопасныйРежим>)
Параметры:
<БезопасныйРежим> (обязательный)
Тип: Булево, Строка.
Определяет, будет ли включен безопасный режим:
Строка - имя профиля безопасности. Включить режим и назначить профиль безопасности. Может быть использовано имя только того профиля, у которого свойство SafeModeProfile установлено в значение Истина. Если безопасный режим уже включен, то повторный вызов метода с именем другого профиля не изменит текущий профиль безопасности;
Истина - включить режим без указания конкретного профиля безопасности;
Ложь - выключить режим.
Строка - имя профиля безопасности. Включить режим и назначить профиль безопасности. Может быть использовано имя только того профиля, у которого свойство SafeModeProfile установлено в значение Истина. Если безопасный режим уже включен, то повторный вызов метода с именем другого профиля не изменит текущий профиль безопасности;
Истина - включить режим без указания конкретного профиля безопасности;
Ложь - выключить режим.
---
покажите вашу процедуру -
СведенияОВнешнейОбработке
---
Функция СведенияОВнешнейОбработке() Экспорт

 РегистрационныеДанные = Новый Структура;
 РегистрационныеДанные.Вставить("Наименование", "ПакетнаяВыгрузкаОтчетов");
 РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
 РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет"); //ИЛИ ДополнительнаяОбработка
 РегистрационныеДанные.Вставить("Версия", "1.0");
 РегистрационныеДанные.Вставить("Информация", "ПакетнаяВыгрузкаОтчетов");

 тзКоманд = Новый ТаблицаЗначений;
 тзКоманд.Колонки.Добавить("Идентификатор");
 тзКоманд.Колонки.Добавить("Представление");
 тзКоманд.Колонки.Добавить("Модификатор");
 тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
 тзКоманд.Колонки.Добавить("Использование");

 строкаКоманды = тзКоманд.Добавить();
 строкаКоманды.Идентификатор = "1";
 строкаКоманды.Представление = "ПакетнаяВыгрузкаОтчетов";
 строкаКоманды.ПоказыватьОповещение = Истина;
 строкаКоманды.Использование = "ОткрытиеФормы";

 РегистрационныеДанные.Вставить("Команды", тзКоманд);

 Возврат РегистрационныеДанные;

КонецФункции
---
Вот у вас только ОткрытиеФормы
Добавьте еще команду ВызовСерверногоМетода и используйте ее для скрытого запуска
Вот пример

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

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

    Об.ВыполнитьКоманду(ПараметрыОбработки); //экспортная процедура в модуле твоей обработки
```
---
А нельзя вместо 2-х обработок сделать одну? Процедуру из 2-ой скопировать в первую (можно в модуль формы серверную процедуру) и работайте нормально
---
Работает с такой реализацией

СтрокаСпискаОтчетов содержит полный путь к файлу внешнего отчета и расширение

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

    ИначеЕсли СтрокаСпискаОтчетов.Расширение = ".erf" Тогда
    Рез=ПоместитьФайл(АдресХранилища,СтрокаСпискаОтчетов.ПолноеИмяФайлаВнешнейОбработки, ,Ложь);
    ИмяОбработки = ПодключитьВнешнийОтчет(АдресХранилища);

    КонецЕсли;
    ТабДок = ВнешняяОбработкаНаСервере(СтрокаСпискаОтчетов.Расширение,ИмяОбработки) ;

    .........

    &НаСервере
    Функция ВнешняяОбработкаНаСервере(СтрокаСпискаОтчетовРасширение,ИмяОбработки)
    ИмяТипа = "ОписаниеЗащитыОтОпасныхДействий";
    ОписаниеЗащиты = Новый(ИмяТипа);
    ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;

    Если СтрокаСпискаОтчетовРасширение = ".epf" Тогда
    ВнешнийОтчетОбработка = ВнешниеОбработки.Создать(ИмяОбработки, Ложь, ОписаниеЗащиты);

    Иначе
    ВнешнийОтчетОбработка = ВнешниеОтчеты.Создать(ИмяОбработки, Ложь, ОписаниеЗащиты);

    КонецЕсли;
    ТабличныйДокументРезультат = ВнешнийОтчетОбработка.Инициализировать();
    .........
```
---
С БСП еще проще:

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

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ПутьКВнешнейОбработке = Каталог1С+"ОбработкаМодуляПродажаТовара.epf";
    Адрес = "; Имя = "ПродажаТовара";
    ВнешнийФайл = Новый Файл(ПутьКВнешнейОбработке);
    Если НЕ ВнешнийФайл.Существует() Тогда
    // ......что-то сообщаем
    Иначе
    ПоместитьФайл(Адрес,ПутьКВнешнейОбработке,,ЛОЖЬ);
    ВнешняяОбработкаФормы = ПодключитьВнешнююОбработку(Адрес,Имя);
    Форма = ВнешниеОбработки.Создать(ВнешняяОбработкаФормы);
    Форма.ПодключитьДрайверММ(); //подключаю драйвер например, вызов процедуры ВО
    КонецЕсли;
    КонецПроцедуры
```

```1c
    &НаСервере
    Функция ПодключитьВнешнююОбработку(Адрес,Имя);
    Возврат ВнешниеОбработки.Подключить(Адрес,Имя,ЛОЖЬ);
    КонецФункции
```