Документы продажи / Длительная операция / Модуль формы

файл

#Область ОбработчикиСобытийФормы

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если Выполнено Тогда 
		Отказ = Истина;
	Иначе
		ИнтервалПроверки = 3;
		ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Отменить(Команда)
	
	ТекстВопроса = НСтр("ru = 'Документы еще не сформированы.'");
	
	Кнопки = Новый СписокЗначений;
	Кнопки.Добавить(1, НСтр("ru = 'Подождать еще'"));
	Кнопки.Добавить(КодВозвратаДиалога.Прервать);
	
	ОтключитьОбработчикОжидания("ПроверитьВыполнение");
	
	Обработчик = Новый ОписаниеОповещения("ОтменитьЗавершение", ЭтотОбъект);
	ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60,1);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ПроверитьВыполнение()
	
	ВсеДействияЗавершены = ВсеДействияЗавершены();
	
	Если Не ВсеДействияЗавершены Тогда
		ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
	Иначе
		ЗакрытиеПодтверждено = Истина;
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОтменитьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
	
	ПрерватьЕслиНеВыполнено = (Ответ = КодВозвратаДиалога.Прервать);
	Если ПрерватьЕслиНеВыполнено Тогда
		Оповестить("ОтменитьПакетноеФормирование");
		ЗакрытиеПодтверждено = Истина;
		Закрыть();
	КонецЕсли;

	ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	Если ЗавершениеРаботы Тогда
		ЗакрытиеПодтверждено = Истина;
	КонецЕсли;
	
	Если НЕ ЗакрытиеПодтверждено Тогда

		Если НЕ Выполнено Тогда
			СтандартнаяОбработка = Ложь;
			Отказ = Истина;
			Отменить(Неопределено);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия = "ДобавленоНовоеДействие" Тогда
		
		СписокДействий = Параметр.СписокДействий;
		КоличествоДействий = Параметр.КоличествоДействий;
		
		Если Не КоличествоДействий = 0 Тогда
			Индикатор = Окр(Параметр.ТекущийНомерДействия / КоличествоДействий * 100, 0);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ВсеДействияЗавершены()

	ВсеДействияЗавершены = Ложь;

	Если СписокДействий.Количество() = КоличествоДействий Тогда
		ВсеДействияЗавершены = Истина;
		Для каждого Действие Из СписокДействий Цикл
			Если Не Действие.Значение.Статус = "Выполнено" Тогда
				ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(Действие.Значение.ИдентификаторЗадания);
				Если Не ЗаданиеВыполнено Тогда
					Возврат Ложь;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Возврат ВсеДействияЗавершены;
	
КонецФункции

#КонецОбласти

Связанные материалы