ОжидатьЗавершение (БСП)

Автор: 1С
ОбщийМодуль.ДлительныеОперацииКлиент
БСП

Ожидать завершение. Ожидать завершения выполнения процедуры в фоновом задании и открыть форму ожидания длительной операции.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОжидатьЗавершенияВыполненияВФоне (БСП)

ОжидаемыеТипыСвойствПараметровПроверки (БСП)

ОжидаемыеТипыСвойствОписанияПроблемы (БСП)

ОжидаемыеТипыСвойствВидовПроверок (БСП)

ПроверитьТипПараметраКоманды (БСП)

ЗадатьВопросПриЗавершенииРаботыЗавершение (БСП)

ОстановитьЗавершение (БСП)

СделатьАктивнымЗавершение (БСП)

ПеренаправитьЗадачиЗавершение (БСП)

TurboConf ИР адаптер 1.78