Не могу в отладке пройти внутрь процедуры. Выполняется в фоне.

1. DrDrewAvenue 14.02.22 07:22 Сейчас в теме
Всем доброго времени суток. Стандартная обработка "КлиентБанк" в 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ФЗ
		И ЗначениеЗаполнено(КаталогВыгрузкиПодтверждающихДокументов) Тогда
		ВыгрузитьПодтверждающиеДокументы(Счет);
	КонецЕсли;
	//-- НЕ УТ
	//-- Локализация
КонецПроцедуры
Показать


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

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


Вопрос почему я не могу попасть внутрь процедуры?? Всё отрабатывается в фоне. В параметрах подключения я поставил уже все флаги какие только можно. Скрин приложил.
Прошу помощи.
Прикрепленные файлы:
Найденные решения
2. Swetlana 25 14.02.22 07:55 Сейчас в теме
(1) У вас похоже клиент - сервер
Значит для сервера не включена отладка. Попросите админа. Нужно добавить _debug в реестре Если сервер на Windows
DrDrewAvenue; +1 Ответить
5. Tommy82 65 14.02.22 11:23 Сейчас в теме
добавить -debug в реестр, перезапустить службу Агент 1С и включить отладку фоновых
DrDrewAvenue; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Swetlana 25 14.02.22 07:55 Сейчас в теме
(1) У вас похоже клиент - сервер
Значит для сервера не включена отладка. Попросите админа. Нужно добавить _debug в реестре Если сервер на Windows
DrDrewAvenue; +1 Ответить
7. DrDrewAvenue 28.02.22 04:08 Сейчас в теме
(2) Спасибо, да, вернулся к вопросу. Так и сделали на этом сервере.
3. Tommy82 65 14.02.22 11:07 Сейчас в теме
&НаСервере
Процедура ВыгрузитьНаСервере()
    
    Обработка = РеквизитФормыВЗначение("Объект");
    Обработка.ВыгрузитьПлатежи(ЭтаФорма.УникальныйИдентификатор);
    ЗначениеВРеквизитФОрмы(Обработка, "Объект");
    
КонецПроцедуры
Показать

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

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

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

отладка - подключение - автоматическое подключение - фоновые задания - ОК
4. DrDrewAvenue 14.02.22 11:20 Сейчас в теме
(3) Неа, меня сразу кидает в клиентской части на Обработчик ожидания следом за процедурой "ВыгрузитьНаСервере".
Сейчас попробуем с админом настроить отладку на сервере, как порекомендовали выше.
5. Tommy82 65 14.02.22 11:23 Сейчас в теме
добавить -debug в реестр, перезапустить службу Агент 1С и включить отладку фоновых
DrDrewAvenue; +1 Ответить
6. t.v.s. 111 14.02.22 11:30 Сейчас в теме
На выбор:
1. Включите автоматическое подключение фоновых заданий в отладку (неудобно)
2. Запустите клиент с параметром /РежимОтладки, в этом случае все фоновые процедуры будут выполняться в вызывающем потоке и сможете отлаживать как обычно
8. DrDrewAvenue 28.02.22 05:26 Сейчас в теме
Нашёл довольно много теоретического материала на тему как запустить метод из модуля внешней обработки в длительных операциях. Но пока представления как это всё воплотить в рабочий механизм нет... Есть у кого-нибудь ссылки или примеры раброчие как это делается на примере рабочем?

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот