#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокДействий = Параметры.СписокДействий;
КоличествоДействий = Параметры.КоличествоДействий;
СопровождающийТекст = НСтр("ru = 'Пожалуйста, подождите...'");
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Выполнено Тогда
Отказ = Истина;
Иначе
ИнтервалПроверки = 3;
ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Отменить(Команда)
ТекстВопроса = НСтр("ru = 'Документы еще не сформированы.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(1, НСтр("ru = 'Подождать еще'"));
Кнопки.Добавить(КодВозвратаДиалога.Прервать);
ОтключитьОбработчикОжидания("ПроверитьВыполнение");
Обработчик = Новый ОписаниеОповещения("ОтменитьЗавершение", ЭтотОбъект);
ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60,1);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПроверитьВыполнение()
ВсеДействияЗавершены = ВсеДействияЗавершены();
Если Не ВсеДействияЗавершены Тогда
ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
Иначе
ЗакрытиеПодтверждено = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьЗавершение(Ответ, ДополнительныеПараметры) Экспорт
ПрерватьЕслиНеВыполнено = (Ответ = КодВозвратаДиалога.Прервать);
Если ПрерватьЕслиНеВыполнено Тогда
Оповестить("ОтменитьПакетноеФормирование");
ЗакрытиеПодтверждено = Истина;
Закрыть();
КонецЕсли;
ПодключитьОбработчикОжидания("ПроверитьВыполнение", ИнтервалПроверки, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
ЗакрытиеПодтверждено = Истина;
КонецЕсли;
Если НЕ ЗакрытиеПодтверждено Тогда
Если НЕ Выполнено Тогда
СтандартнаяОбработка = Ложь;
Отказ = Истина;
Отменить(Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ДобавленоНовоеДействие" Тогда
СписокДействий = Параметр.СписокДействий;
КоличествоДействий = Параметр.КоличествоДействий;
Если Не КоличествоДействий = 0 Тогда
Индикатор = Окр(Параметр.ТекущийНомерДействия / КоличествоДействий * 100, 0);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВсеДействияЗавершены()
ВсеДействияЗавершены = Ложь;
Если СписокДействий.Количество() = КоличествоДействий Тогда
ВсеДействияЗавершены = Истина;
Для каждого Действие Из СписокДействий Цикл
Если Не Действие.Значение.Статус = "Выполнено" Тогда
ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(Действие.Значение.ИдентификаторЗадания);
Если Не ЗаданиеВыполнено Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ВсеДействияЗавершены;
КонецФункции
#КонецОбласти