Добрый день! Есть внешняя обработка, которая хранится в хранилище внешних обработок. Мне необходимо вызывать эту обработку при помощи регламентного задания.
В процедуре регламентного задания я пишу:
ИмяФайла = КаталогВременныхФайлов()+"SendSpam.tmp";
 ДвоичныеДанные = Справочники.ВнешниеОбработки.НайтиПоКоду("УС0000023").ХранилищеВнешнейОбработки.Получить();
 ДвоичныеДанные.Записать(ИмяФайла);
 Обр = ВнешниеОбработки.Создать(ИмяФайла);
 Обр.КаталогВыгрузки = "\\mars2\Обмен РБ\Выгрузка\";
 Обр.КаталогЗагрузки = "\\mars2\Обмен РБ\Загрузка\";
 Обр.КаталогАрхива = "\\mars2\Обмен РБ\Загрузка\Архив\";
 Обр.ДелаемВыгрузку();
 Обр.ЗагрузкаНов();
 УдалитьФайлы(ИмяФайла);
Ругается на ВнешниеОбработки.Создать(ИмяФайла);
После долгих поисков гугл ответил, что на 8,1 таким образом на сервере невозможно вызвать внешнюю обработку. Других вариантов найти не могу. Подскажите, пожалуйста, как можно реализовать данную задачу?
---
Petrovichka, проверил (серверная база, в клиенте) - запускается, отрабатывает как модуль объекта, так и модуль формы (ПриОткрытии) и выходит из системы.

Раз вход осуществился, значит с параметрами запуска всё ОК.
Не понял про запуск обработки - если она запускается (открывается форма), но не отрабатывает - смотрите саму обработку, что будет если её открыть вручную, отработает ли она?
Если она не открывается, попробуйте взять имя в кавычки:

```1c
    Рез = "" + ИсполняемыйФайлКлиентаНаСервере + "" ENTERPRISE " + ПутьКБД +" /N"" + ЛогинАдминистратораИБ + "" /P" + ПарольАдминистратораИБ + " /WA- /Execute "" + ИмяФайла + "" /DisableStartupMessages";
```

и правильно ли заполнена ПутьКБД ?
Там должно быть "/S ""<servername>\<basename>""";
---
Подскажите, пожалуйста, как можно реализовать данную задачу?
В 8.0 и 8.1 никак. В 8.2, судя по документации, можно:
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Создать (Create)
...
Доступность:

Сервер, толстый клиент, внешнее соединение.
Сам натыкался на эти грабли. Хотел сделать работу обработки через регламентное задание, еще когда была 8.1. Если потребность такая же, то я вышел из положения созданием задачи Windows, в которой вызывался батничек, в котором прописан запуск внешней обработки через ключ запуска приложения 1С.
---
Kom-off, А можно примерчик, как это реализовать?
---
Создаешь *.bat файл с примерно таким содержимым:
"c:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /S<Имя сервера>\<Имя базы> /N<Имя пользователя> /P<Пароль пользователя> /Execute"<Полный путь и имя обработки с расширением>"

И вот этот *.bat файлик используешь в задании Windows.

Кстати, по ссылке все это дело описано.
И еще, настоятельно рекомендую создать пользователя под это дело специального. Во-первых, не показывать его в списке выбора, а во-вторых, дать ему только необходимые для выполнения обработки права (это уже смотреть по базе надо).
---
Kom-off, Отдельный пользователь есть. До графы Execute все понятно, непонятно какой путь прописывать ведь обработка лежит в хранилище внешних обработок в 1С. Нужно чтобы обработка лежала где-то помимо 1С? И самый важный непонятный вопрос, как при всем этом в обработку передать и заполнить реквизиты, которые участвуют в работе самой обработки?
---
Petrovichka, так вон же у вас есть в тексте
```1c
    ИмяФайла = КаталогВременныхФайлов()+"SendSpam.tmp"
```

перед запуском батника выгружайте обработку туда. А саму обработку можно переделать на поиск там же какого-нибудь "SendSpam.ini", где и указать нужные реквизиты.
---
Нужно внешнее событие!
---
У меня так получилось

```1c
    ///выполнение обработки в фоновом задании с помощью ПроизвольнаяОбработка
    Процедура ВыполнитьВнешнююОбработку(НашаОбработка) Экспорт

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

PS упс не дочиал :( ссори
---
Ну допустим, как запустить 1с я опишу, на примере этой статьи http://manual1c.ru/osnovnyie-parametryi-klyuchi-zapuska-1s/
Но я не пойму куда и как мне прописать какую обработку вызывать и еще и параметры этой обработки нужно заполнить. Подскажите, пожалуйста!
---
Параметры про которые я говорю, это реквизиты самой обработки. Просто без них обработка работать не будет.
---
И к тому же мне нужно вызвать у этой обработки поочереди две экспортные процедуры.
---
И к тому же мне нужно вызвать у этой обработки поочереди две экспортные процедуры.
Как я понимаю "хранилище внешних обработок" - это справочник "Внешние обработки". Коли так, то пиши свою обработку, которая будет кодом получать файл нужной обработки, сохранять его на диск, создавать объект внешней обработки, заполнять параметры и запускать экспортные требуемые функции.

Похоже, ситуация у тебя, аккурат, как у меня. Сначала написал внешнюю обработку со сложной настройкой параметров, а потом возникла потребность запускать ее автоматом периодически. Я сделал как описал в этом посте выше.

Получилось слегка сложновато, но работает.
---
Делаю так: в процедуре регламентного задания прописываю:
ИмяФайла = КаталогВременныхФайлов()+"SendSpam.tmp";
 ДвоичныеДанные = Справочники.ВнешниеОбработки.НайтиПоКоду("УС0000023").ХранилищеВнешнейОбработки.Получить();
 ДвоичныеДанные.Записать(ИмяФайла);

 Рез = """" + ИсполняемыйФайлКлиентаНаСервере + """ ENTERPRISE " + ПутьКБД +" /N""" + ЛогинАдминистратораИБ + """ /P" + ПарольАдминистратораИБ + " /WA- /Execute " + ИмяФайла + " /DisableStartupMessages";

 Если Рез <>Неопределено Тогда
  Ком = Новый COMObject("wScript.Shell");
  Ком.Run(Рез, 5, Истина);
 КонецЕсли;

В самой внешней обработке ПриОткрытии() указала необходимые мне параметры и запуск экспортных процедур. Но ничего не отрабатывает. 1с запускается под указанным пользователем и не выключается, регламент работает и не завершается, хотя в обработке я указала ЗавершитьРаботуСистемы(Ложь), обработка не запускается. Подвкажите, что не так?
---
Petrovichka, проверил (серверная база, в клиенте) - запускается, отрабатывает как модуль объекта, так и модуль формы (ПриОткрытии) и выходит из системы.

Раз вход осуществился, значит с параметрами запуска всё ОК.
Не понял про запуск обработки - если она запускается (открывается форма), но не отрабатывает - смотрите саму обработку, что будет если её открыть вручную, отработает ли она?
Если она не открывается, попробуйте взять имя в кавычки:

```1c
    Рез = "" + ИсполняемыйФайлКлиентаНаСервере + "" ENTERPRISE " + ПутьКБД +" /N"" + ЛогинАдминистратораИБ + "" /P" + ПарольАдминистратораИБ + " /WA- /Execute "" + ИмяФайла + "" /DisableStartupMessages";
```

и правильно ли заполнена ПутьКБД ?
Там должно быть "/S ""<servername>\<basename>""";
---
taiba, Все заработало. Я все правильно прописала, просто при начале работы системы стояло некое ограничение, я просто его обошла если вход от данного пользователя. Вопрос решен.
---
```1c
    Процедура ВыполнитьВнешнийОтчет(ИмяВременногоФайла) Экспорт

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

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

Помогла ваша ветка. Спасибо, моя работа.
---
в Бух 2.0 подсмотрел
---
```1c
    ВыбраннаяСтрока= Справочники.ВнешниеОбработки.НайтиПоКоду("0000000001");

    ЭтоОбработка = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь);

    ЭтоОтчет = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь);

    Если НЕ (ЭтоОбработка ИЛИ ЭтоОтчет) Тогда
    Возврат;
    КонецЕсли;

    Попытка

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

    Если ЭтоОбработка Тогда

    Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);

    Иначе

    Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);

    КонецЕсли;

    Если Форма <> Неопределено Тогда

    Форма.Открыть();

    Иначе

    Если ЭтоОбработка Тогда
    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
    Иначе
    ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайла);
    Форма = ВнешнийОтчет.ПолучитьФорму();
    Если Форма <> Неопределено Тогда
    Форма.Открыть();
    КонецЕсли;
    КонецЕсли;

    КонецЕсли;

    УдалитьФайлы(ИмяФайла);

    Исключение

    Если ЭтоОбработка Тогда

    Предупреждение("Выбранный файл не является внешней обработкой.
    |Либо, данная обработка не предназначена для
    |запуска в этой конфигурации.");
    Иначе
    Предупреждение("Выбранный файл не является внешним отчетом.
    |Либо, данный отчет не предназначена для
    |запуска в этой конфигурации.");
    КонецЕсли;

    КонецПопытки;
```
---
http://www.forum.mista.ru/topic.php?id=683650