Вывод статуса фонового задания Длительная операция

1. Ujine1313 9 20.09.22 18:42 Сейчас в теме
Коллеги, может я чего не понимаю. Есть внешний отчет находящийся в расширении, формирующий табличный документ. Табличный документ формируется в модуле менеджера.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	отчет.Период.ДатаНачала = НачалоМесяца(ТекущаяДата());
	отчет.Период.ДатаОкончания = КонецМесяца(ТекущаяДата());
	отчет.ВыводитьПоДням=истина;
КонецПроцедуры


&НаКлиенте
Процедура Сформировать(Команда)
	НастроитьПараметрыПодключенияАвтоматически();
КонецПроцедуры



&НаКлиенте
Процедура НастроитьПараметрыПодключенияАвтоматически()
	// 1. Запуск фонового задания на сервере.
	ДлительнаяОперацияНачатьВыполнениеОчета = НачатьВыполнениеОчета();
	
	// 2. Подключение обработчика завершения фонового задания.
	
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);                                  
	
//	* ОповещениеОПрогрессеВыполнения - ОписаниеОповещения - оповещение, которое периодически вызывается при 
//                                      проверке готовности фонового задания. Параметры процедуры-обработчика оповещения:
//      # Прогресс - Структура, Неопределено - структура со свойствами или Неопределено, если задание было отменено. Свойства: 
//	     ## Статус               - Строка - "Выполняется", если задание еще не завершилось;
//                                           "Выполнено", если задание было успешно выполнено;
//	                                         "Ошибка", если задание завершено с ошибкой;
//                                           "Отменено", если задание отменено пользователем или администратором.
//	     ## ИдентификаторЗадания - УникальныйИдентификатор - идентификатор запущенного фонового задания.
//	     ## Прогресс             - Структура, Неопределено - результат функции ДлительныеОперации.ПрочитатьПрогресс, 
//                                                            если ВыводитьПрогрессВыполнения = Истина.
//	     ## Сообщения            - ФиксированныйМассив, Неопределено - если ВыводитьСообщения = Истина, массив объектов СообщениеПользователю, 
//                                  очередная порция сообщений, сформированных в процедуре-обработчике длительной операции.
//      # ДополнительныеПараметры - Произвольный - произвольные данные, переданные в описании оповещения. 
	ПараметрыОжидания.ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("ПрогрессВыполнения", ЭтотОбъект);
	ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;  
	ПараметрыОжидания.ВыводитьСообщения = Истина; 
	ПараметрыОжидания.ВыводитьОкноОжидания=Ложь;
		
	ОповещениеПриЗавершенииВыпоненияОтчета = Новый ОписаниеОповещения("ПриЗавершенииВыпоненияОтчета", ЭтотОбъект);
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперацияНачатьВыполнениеОчета, ОповещениеПриЗавершенииВыпоненияОтчета, ПараметрыОжидания);
КонецПроцедуры

&НаСервере
Функция НачатьВыполнениеОчета()
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Расчет себестоимости проектов'");
	Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Отчеты.ПрибыльОтПроекта.ФормированиеОтчета",
	отчет.Период.ДатаНачала, отчет.Период.ДатаОкончания);
КонецФункции                                                 

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



Все сделано по инструкции из БСП, но форма не выводится с процентами выполнения и текстом пояснения.
Сами проценты и пояснялка считаются в
Менеджере отчета
ДлительныеОперации.СообщитьПрогресс(Процент100 , ТекСотрудник.Сотрудник.наименование);
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 70 21.09.22 12:39 Сейчас в теме
(1)
Можно так
Отслеживание выполнения фонового задания
https://infostart.ru/1c/articles/1106171/
3. Ujine1313 9 21.09.22 14:02 Сейчас в теме
Вопрос снимается. Нельзя из внешней обработки вызывать стандартные методы отображения. Надо перехватывать процесс выполнения и выводить их в свою форму.
Оставьте свое сообщение

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