Не могу в отладке пройти внутрь процедуры. Выполняется в фоне.
Всем доброго времени суток. Стандартная обработка "КлиентБанк" в 1С:ERP Управление Холдингом 3.1.4.38
Хочу сохранить как внешнюю и переделать немного под свои нужды, а именно интересует условие заполнения поля ИНН в выходном файле в зависимости от выбранного банка. Но суть не в этом пока.
У обработки есть команда на форме "Выгрузить" Код следующий:
Далее идёт серверный вызов "ВыгрузитьНаСервере()", код следующий:
В модуле объекта обработки есть процедура:
Далее тут есть процедуры, которые кидают уже в модуль менеджера обработки - "ВыгрузитьПлатежиПоСчету(Счет, ИдФормы)":
Жирным шрифтом подкрасил как раз место где идём в модуль менеджера: Результат =ДлительныеОперации.ЗапуститьВыполнениеВФоне... Вот тут скорее всего где-то ответ почему меня не пускает.
Далее в модуле менеджера есть процедура, которая как раз и формирует файлы выгрузки:
Вопрос почему я не могу попасть внутрь процедуры?? Всё отрабатывается в фоне. В параметрах подключения я поставил уже все флаги какие только можно. Скрин приложил.
Прошу помощи.
Хочу сохранить как внешнюю и переделать немного под свои нужды, а именно интересует условие заполнения поля ИНН в выходном файле в зависимости от выбранного банка. Но суть не в этом пока.
У обработки есть команда на форме "Выгрузить" Код следующий:
&НаКлиенте
Процедура Выгрузить(Команда)
МассивДокументовПрямойОбмен = Новый Массив;
Для каждого Счет Из Объект.БанковскиеСчета Цикл
Если Не Счет.Пометка Тогда
Продолжить;
КонецЕсли;
//++ Локализация
Если Счет.ПрямойОбмен Тогда
Если Не ЗначениеЗаполнено(Счет.НастройкаОбмена) Тогда
ТекстСоощения = СтрШаблон(
НСтр("ru = 'Для банковского счета %1 не настроен ЭДО. Выполните настройку ЭДО, или воспользуйтесь выгрузкой в файл.';
|en = 'EDI is not configured for bank account %1. Configure EDI or use export to file.'"),
Счет.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстСоощения,,
Элементы.БанковскиеСчетаНастройкаОбмена.Имя);
Иначе
Отбор = Новый Структура;
Отбор.Вставить("Выгружать", Истина);
Отбор.Вставить("БанковскийСчет", Счет.Ссылка);
СтрокиКВыгрузке = Объект.ДокументыКВыгрузке.НайтиСтроки(Отбор);
Для каждого СтрокаКВыгрузке Из СтрокиКВыгрузке Цикл
МассивДокументовПрямойОбмен.Добавить(СтрокаКВыгрузке["Ссылка"]);
КонецЦикла;
КонецЕсли;
Иначе
//-- Локализация
Если Не ЗначениеЗаполнено(Счет.НастройкаОбмена) Тогда
Если ВозможностьВыбораФайлов Тогда
ВыборФайлаПриВыгрузке(Счет);
Иначе
ПодключитьРасширениеРаботыСФайламиИВыбратьФайлПриВыгрузке(Счет);
КонецЕсли;
КонецЕсли;
//++ Локализация
КонецЕсли;
//-- Локализация
КонецЦикла;
//++ Локализация
Если МассивДокументовПрямойОбмен.Количество() Тогда
Обработчик = Новый ОписаниеОповещения("СформироватьПодписатьОтправитьЭДПродолжение", ЭтотОбъект, Новый Структура);
ЭлектронноеВзаимодействиеКлиентПереопределяемый.ВыполнитьПроверкуПроведенияДокументов(
МассивДокументовПрямойОбмен, Обработчик, ЭтаФорма);
КонецЕсли;
//-- Локализация
ВыгрузитьНаСервере();
ПодключитьОбработчикОжидания("ОбработатьЗавершениеВыгрузки", 1, Истина);
КонецПроцедуры
ПоказатьДалее идёт серверный вызов "ВыгрузитьНаСервере()", код следующий:
&НаСервере
Процедура ВыгрузитьНаСервере()
Обработка = РеквизитФормыВЗначение("Объект");
Обработка.ВыгрузитьПлатежи(ЭтаФорма.УникальныйИдентификатор);
ЗначениеВРеквизитФОрмы(Обработка, "Объект");
КонецПроцедуры
ПоказатьВ модуле объекта обработки есть процедура:
// Выполняет выгрузку платежей в файл по всем выбранным счетам
//
// Параметры:
// ИдФормы - УникальныйИдентификатор - идентификатор вызывающей метод формы.
//
Процедура ВыгрузитьПлатежи(ИдФормы = "") Экспорт
Отбор = Новый Структура("Пометка", Истина);
ВыгружаемыеБанковскиеСчета = БанковскиеСчета.Выгрузить(БанковскиеСчета.НайтиСтроки(Отбор));
ИнформацияОбОбъединенииФайлов = ИнформацияОбОбъединенииФайлов(ВыгружаемыеБанковскиеСчета);
Если ИнформацияОбОбъединенииФайлов.СчетаБезПравил.Количество() <> 0 Тогда
// Типовой алгоритм выгрузки по счетам
Для каждого Счет Из ИнформацияОбОбъединенииФайлов.СчетаБезПравил Цикл
Если Не Счет.Пометка
Или Не ЗначениеЗаполнено(Счет.НастройкаОбмена)
Или Счет.Выгружается
//++ Локализация
Или Счет.ПрямойОбмен
//-- Локализация
Тогда
Продолжить;
КонецЕсли;
ВыгрузитьПлатежиПоСчету(Счет, ИдФормы);
КонецЦикла;
КонецЕсли;
Если ИнформацияОбОбъединенииФайлов.КоличествоСчетовВПравиле.Количество() <> 0 Тогда
// Выгрузка порциями, с объединением по правилам
ВыгрузитьПлатежиПорциямиПоПравилам(ИнформацияОбОбъединенииФайлов, ИдФормы);
КонецЕсли;
ОбновитьИнформациюОВыгруженныхФайлах(ИнформацияОбОбъединенииФайлов);
//++ Локализация
//++ НЕ УТ
Если ПоддержкаПлатежейВСоответствииС275ФЗ
И ЗначениеЗаполнено(КаталогВыгрузкиПодтверждающихДокументов) Тогда
ВыгрузитьПодтверждающиеДокументы();
КонецЕсли;
//-- НЕ УТ
//-- Локализация
КонецПроцедуры
ПоказатьДалее тут есть процедуры, которые кидают уже в модуль менеджера обработки - "ВыгрузитьПлатежиПоСчету(Счет, ИдФормы)":
// Выполняет выгрузку платежей в файл по указанному счету
//
// Параметры:
// Счет - ДанныеФормыЭлементКоллекции - Строка списка банковских счетов
// ИдФормы - УникальныйИдентификатор - идентификатор вызывающей метод формы.
//
Процедура ВыгрузитьПлатежиПоСчету(Счет, ИдФормы = "") Экспорт
Счет.Выгружен = Ложь;
СтрокиКВыгрузке = ДокументыКВыгрузкеПоСчету(Счет);
Если СтрокиКВыгрузке.Количество() Тогда
ПараметрыВыгрузки = Новый Структура;
ПараметрыВыгрузки.Вставить("БанковскийСчет", Счет["Ссылка"]);
ПараметрыВыгрузки.Вставить("НастройкаОбмена", Счет.НастройкаОбмена);
ПараметрыВыгрузки.Вставить("Кодировка", Счет.Кодировка);
ПараметрыВыгрузки.Вставить("Программа", Счет.Программа);
ТаблицаДокументов = ДокументыКВыгрузке.Выгрузить(СтрокиКВыгрузке);
ПараметрыВыгрузки.Вставить("ТаблицаДокументов", ТаблицаДокументов);
Счет.АдресХранилищаДокументов = ПоместитьВоВременноеХранилище(ТаблицаДокументов, ИдФормы);
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
ИдФормы,
"Обработки.КлиентБанк.Выгрузить",
ПараметрыВыгрузки,
НСтр("ru = 'Выгрузка платежей в банк';
|en = 'Export payments to bank'")
);
Счет.АдресХранилищаФайла = Результат.АдресХранилища;
Если Результат.ЗаданиеВыполнено Тогда
Счет.СохранитьФайл = Истина;
Иначе
Счет.Выгружается = Истина;
Счет.ИдентификаторВыгрузки = Результат.ИдентификаторЗадания;
КонецЕсли;
КонецЕсли;
//++ Локализация
//++ НЕ УТ
Если ПоддержкаПлатежейВСоответствииС275ФЗ
И ЗначениеЗаполнено(КаталогВыгрузкиПодтверждающихДокументов) Тогда
ВыгрузитьПодтверждающиеДокументы(Счет);
КонецЕсли;
//-- НЕ УТ
//-- Локализация
КонецПроцедуры
ПоказатьЖирным шрифтом подкрасил как раз место где идём в модуль менеджера: Результат =ДлительныеОперации.ЗапуститьВыполнениеВФоне... Вот тут скорее всего где-то ответ почему меня не пускает.
Далее в модуле менеджера есть процедура, которая как раз и формирует файлы выгрузки:
// Выгружает платежи в файл
//
// Параметры:
// ПараметрыВыгрузки - Структура - Параметры выгрузки платежей
// АдресХранилища - УникальныйИдентификатор - адрес временного хранилища, куда будут помещены данные выгрузки.
//
Процедура Выгрузить(ПараметрыВыгрузки, АдресХранилища) Экспорт
КлиентБанкЛокализация.ВыгрузитьПлатежи(ПараметрыВыгрузки, АдресХранилища);
КонецПроцедуры
ПоказатьВопрос почему я не могу попасть внутрь процедуры?? Всё отрабатывается в фоне. В параметрах подключения я поставил уже все флаги какие только можно. Скрин приложил.
Прошу помощи.
Прикрепленные файлы:
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
&НаСервере
Процедура ВыгрузитьНаСервере()
Обработка = РеквизитФормыВЗначение("Объект");
Обработка.ВыгрузитьПлатежи(ЭтаФорма.УникальныйИдентификатор);
ЗначениеВРеквизитФОрмы(Обработка, "Объект");
КонецПроцедуры
Показатьсюда проваливаетесь?
если нет - тогда через -debug и потом
если проваливаетесь - тогда включить отладку фоновых
отладка - подключение - автоматическое подключение - фоновые задания - ОК
На выбор:
1. Включите автоматическое подключение фоновых заданий в отладку (неудобно)
2. Запустите клиент с параметром /РежимОтладки, в этом случае все фоновые процедуры будут выполняться в вызывающем потоке и сможете отлаживать как обычно
1. Включите автоматическое подключение фоновых заданий в отладку (неудобно)
2. Запустите клиент с параметром /РежимОтладки, в этом случае все фоновые процедуры будут выполняться в вызывающем потоке и сможете отлаживать как обычно
Нашёл довольно много теоретического материала на тему как запустить метод из модуля внешней обработки в длительных операциях. Но пока представления как это всё воплотить в рабочий механизм нет... Есть у кого-нибудь ссылки или примеры раброчие как это делается на примере рабочем?
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
ИдФормы,
"Обработки.КлиентБанк.Выгрузить",
ПараметрыВыгрузки,
НСтр("ru = 'Выгрузка платежей в банк';
|en = 'Export payments to bank'")
);
По сути метод из модуля менеджера скопирован в модуль объекта внешней обработки. И его нужно запустить теперь в фоне, чтобы не ломать и не переписывать весь механизм работы исходной обработки.
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
ИдФормы,
"Обработки.КлиентБанк.Выгрузить",
ПараметрыВыгрузки,
НСтр("ru = 'Выгрузка платежей в банк';
|en = 'Export payments to bank'")
);
По сути метод из модуля менеджера скопирован в модуль объекта внешней обработки. И его нужно запустить теперь в фоне, чтобы не ломать и не переписывать весь механизм работы исходной обработки.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот