Всем доброго времени суток. Стандартная обработка "КлиентБанк" в 1С:ERP Управление Холдингом 3.1.4.38

Хочу сохранить как внешнюю и переделать немного под свои нужды, а именно интересует условие заполнения поля ИНН в выходном файле в зависимости от выбранного банка. Но суть не в этом пока.

У обработки есть команда на форме "Выгрузить" Код следующий:

```1c
    &НаКлиенте
    Процедура Выгрузить(Команда)

    МассивДокументовПрямойОбмен = Новый Массив;

    Для каждого Счет Из Объект.БанковскиеСчета Цикл

    Если Не Счет.Пометка Тогда
    Продолжить;
    КонецЕсли;

    //++ Локализация
    Если Счет.ПрямойОбмен Тогда
    Если Не ЗначениеЗаполнено(Счет.НастройкаОбмена) Тогда

    ТекстСоощения = СтрШаблон(
    НСтр("ru = 'Для банковского счета %1 не настроен ЭДО. Выполните настройку ЭДО, или воспользуйтесь выгрузкой в файл.';
    |en = 'EDI is not configured for bank account %1. Configure EDI or use export to file.'"),
    Счет.Ссылка);
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
    ТекстСоощения,,
    Элементы.БанковскиеСчетаНастройкаОбмена.Имя);
    Иначе

    Отбор = Новый Структура;
    Отбор.Вставить("Выгружать", Истина);
    Отбор.Вставить("БанковскийСчет", Счет.Ссылка);

    СтрокиКВыгрузке = Объект.ДокументыКВыгрузке.НайтиСтроки(Отбор);
    Для каждого СтрокаКВыгрузке Из СтрокиКВыгрузке Цикл
    МассивДокументовПрямойОбмен.Добавить(СтрокаКВыгрузке["Ссылка"]);
    КонецЦикла;
    КонецЕсли;
    Иначе
    //-- Локализация
    Если Не ЗначениеЗаполнено(Счет.НастройкаОбмена) Тогда

    Если ВозможностьВыбораФайлов Тогда
    ВыборФайлаПриВыгрузке(Счет);
    Иначе
    ПодключитьРасширениеРаботыСФайламиИВыбратьФайлПриВыгрузке(Счет);
    КонецЕсли;
    КонецЕсли;
    //++ Локализация
    КонецЕсли;
    //-- Локализация
    КонецЦикла;

    //++ Локализация
    Если МассивДокументовПрямойОбмен.Количество() Тогда
    Обработчик = Новый ОписаниеОповещения("СформироватьПодписатьОтправитьЭДПродолжение", ЭтотОбъект, Новый Структура);
    ЭлектронноеВзаимодействиеКлиентПереопределяемый.ВыполнитьПроверкуПроведенияДокументов(
    МассивДокументовПрямойОбмен, Обработчик, ЭтаФорма);
    КонецЕсли;
    //-- Локализация

    ВыгрузитьНаСервере();

    ПодключитьОбработчикОжидания("ОбработатьЗавершениеВыгрузки", 1, Истина);

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

Далее идёт серверный вызов "ВыгрузитьНаСервере()", код следующий:

```1c
    &НаСервере
    Процедура ВыгрузитьНаСервере()

    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.ВыгрузитьПлатежи(ЭтаФорма.УникальныйИдентификатор);
    ЗначениеВРеквизитФОрмы(Обработка, "Объект");

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

В модуле объекта обработки есть процедура:

```1c
    // Выполняет выгрузку платежей в файл по всем выбранным счетам
    //
    // Параметры:
    // ИдФормы - УникальныйИдентификатор - идентификатор вызывающей метод формы.
    //
    Процедура ВыгрузитьПлатежи(ИдФормы = ") Экспорт

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

    Если ИнформацияОбОбъединенииФайлов.СчетаБезПравил.Количество() <> 0 Тогда
    // Типовой алгоритм выгрузки по счетам
    Для каждого Счет Из ИнформацияОбОбъединенииФайлов.СчетаБезПравил Цикл
    Если Не Счет.Пометка
    Или Не ЗначениеЗаполнено(Счет.НастройкаОбмена)
    Или Счет.Выгружается
    //++ Локализация
    Или Счет.ПрямойОбмен
    //-- Локализация
    Тогда
    Продолжить;
    КонецЕсли;

    ВыгрузитьПлатежиПоСчету(Счет, ИдФормы);
    КонецЦикла;
    КонецЕсли;

    Если ИнформацияОбОбъединенииФайлов.КоличествоСчетовВПравиле.Количество() <> 0 Тогда
    // Выгрузка порциями, с объединением по правилам
    ВыгрузитьПлатежиПорциямиПоПравилам(ИнформацияОбОбъединенииФайлов, ИдФормы);
    КонецЕсли;

    ОбновитьИнформациюОВыгруженныхФайлах(ИнформацияОбОбъединенииФайлов);

    //++ Локализация
    //++ НЕ УТ
    Если ПоддержкаПлатежейВСоответствииС275ФЗ
    И ЗначениеЗаполнено(КаталогВыгрузкиПодтверждающихДокументов) Тогда
    ВыгрузитьПодтверждающиеДокументы();
    КонецЕсли;
    //-- НЕ УТ
    //-- Локализация

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

Далее тут есть процедуры, которые кидают уже в модуль менеджера обработки - "ВыгрузитьПлатежиПоСчету(Счет, ИдФормы)":

```1c
    // Выполняет выгрузку платежей в файл по указанному счету
    //
    // Параметры:
    // Счет - ДанныеФормыЭлементКоллекции - Строка списка банковских счетов
    // ИдФормы - УникальныйИдентификатор - идентификатор вызывающей метод формы.
    //
    Процедура ВыгрузитьПлатежиПоСчету(Счет, ИдФормы = ") Экспорт

    Счет.Выгружен = Ложь;

    СтрокиКВыгрузке = ДокументыКВыгрузкеПоСчету(Счет);
    Если СтрокиКВыгрузке.Количество() Тогда
    ПараметрыВыгрузки = Новый Структура;
    ПараметрыВыгрузки.Вставить("БанковскийСчет", Счет["Ссылка"]);
    ПараметрыВыгрузки.Вставить("НастройкаОбмена", Счет.НастройкаОбмена);
    ПараметрыВыгрузки.Вставить("Кодировка", Счет.Кодировка);
    ПараметрыВыгрузки.Вставить("Программа", Счет.Программа);

    ТаблицаДокументов = ДокументыКВыгрузке.Выгрузить(СтрокиКВыгрузке);
    ПараметрыВыгрузки.Вставить("ТаблицаДокументов", ТаблицаДокументов);

    Счет.АдресХранилищаДокументов = ПоместитьВоВременноеХранилище(ТаблицаДокументов, ИдФормы);

    Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
    ИдФормы,
    "Обработки.КлиентБанк.Выгрузить",
    ПараметрыВыгрузки,
    НСтр("ru = 'Выгрузка платежей в банк';
    |en = 'Export payments to bank'")
    );

    Счет.АдресХранилищаФайла = Результат.АдресХранилища;

    Если Результат.ЗаданиеВыполнено Тогда
    Счет.СохранитьФайл = Истина;
    Иначе
    Счет.Выгружается = Истина;
    Счет.ИдентификаторВыгрузки = Результат.ИдентификаторЗадания;
    КонецЕсли;
    КонецЕсли;

    //++ Локализация
    //++ НЕ УТ
    Если ПоддержкаПлатежейВСоответствииС275ФЗ
    И ЗначениеЗаполнено(КаталогВыгрузкиПодтверждающихДокументов) Тогда
    ВыгрузитьПодтверждающиеДокументы(Счет);
    КонецЕсли;
    //-- НЕ УТ
    //-- Локализация
    КонецПроцедуры
```

Жирным шрифтом подкрасил как раз место где идём в модуль менеджера: Результат =ДлительныеОперации.ЗапуститьВыполнениеВФоне... Вот тут скорее всего где-то ответ почему меня не пускает.

Далее в модуле менеджера есть процедура, которая как раз и формирует файлы выгрузки:

```1c
    // Выгружает платежи в файл
    //
    // Параметры:
    // ПараметрыВыгрузки - Структура - Параметры выгрузки платежей
    // АдресХранилища - УникальныйИдентификатор - адрес временного хранилища, куда будут помещены данные выгрузки.
    //
    Процедура Выгрузить(ПараметрыВыгрузки, АдресХранилища) Экспорт

    КлиентБанкЛокализация.ВыгрузитьПлатежи(ПараметрыВыгрузки, АдресХранилища);

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

Вопрос почему я не могу попасть внутрь процедуры?? Всё отрабатывается в фоне. В параметрах подключения я поставил уже все флаги какие только можно. Скрин приложил.
Прошу помощи.
---
У вас похоже клиент - сервер
Значит для сервера не включена отладка. Попросите админа. Нужно добавить _debug в реестре Если сервер на Windows
---
добавить -debug в реестр, перезапустить службу Агент 1С и включить отладку фоновых
---
У вас похоже клиент - сервер
Значит для сервера не включена отладка. Попросите админа. Нужно добавить _debug в реестре Если сервер на Windows
---
Спасибо, да, вернулся к вопросу. Так и сделали на этом сервере.
---
```1c
    &НаСервере
    Процедура ВыгрузитьНаСервере()

    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.ВыгрузитьПлатежи(ЭтаФорма.УникальныйИдентификатор);
    ЗначениеВРеквизитФОрмы(Обработка, "Объект");

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

сюда проваливаетесь?

если нет - тогда через -debug и потом

если проваливаетесь - тогда включить отладку фоновых

отладка - подключение - автоматическое подключение - фоновые задания - ОК
---
Неа, меня сразу кидает в клиентской части на Обработчик ожидания следом за процедурой "ВыгрузитьНаСервере".
Сейчас попробуем с админом настроить отладку на сервере, как порекомендовали выше.
---
добавить -debug в реестр, перезапустить службу Агент 1С и включить отладку фоновых
---
На выбор:
1. Включите автоматическое подключение фоновых заданий в отладку (неудобно)
2. Запустите клиент с параметром /РежимОтладки, в этом случае все фоновые процедуры будут выполняться в вызывающем потоке и сможете отлаживать как обычно
---
Нашёл довольно много теоретического материала на тему как запустить метод из модуля внешней обработки в длительных операциях. Но пока представления как это всё воплотить в рабочий механизм нет... Есть у кого-нибудь ссылки или примеры раброчие как это делается на примере рабочем?

Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
            ИдФормы,
            "Обработки.КлиентБанк.Выгрузить",
            ПараметрыВыгрузки,
            НСтр("ru = 'Выгрузка платежей в банк';
                |en = 'Export payments to bank'")
        );

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