GoncharovNN
12/28/2018 - 12:55 AM

Завершить бизнес процесс #БП

Завершить бизнес процесс #БП

Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	Задача.Ссылка
	               |ИЗ
	               |	Задача.Задача КАК Задача
	               |ГДЕ
	               |	Задача.БизнесПроцесс = &БизнесПроцесс
	               |	И (НЕ Задача.Выполнена)";
	
	Запрос.УстановитьПараметр("БизнесПроцесс",БП);
	
	Результат = Запрос.Выполнить();
	
	Выборка = Результат.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ЗадачаОбъект = Выборка.Ссылка.ПолучитьОбъект();
		
		Если ЗадачаОбъект.ТочкаМаршрута.Вид = ВидТочкиМаршрутаБизнесПроцесса.ВложенныйБизнесПроцесс Тогда
			
			НазваниеБизнесПроцесса = ЗадачаОбъект.ТочкаМаршрута.ВложенныйПроцесс.ПустаяСсылка().Метаданные().Имя;
			
			Запрос = Новый Запрос;
			Запрос.Текст = "ВЫБРАТЬ
			|	Вложенный.Ссылка
			|ИЗ
			|	БизнесПроцесс."+НазваниеБизнесПроцесса+" КАК Вложенный
			|ГДЕ
			|	Вложенный.ВедущаяЗадача = &ВедущаяЗадача";
			
			Запрос.УстановитьПараметр("ВедущаяЗадача",Выборка.Ссылка);
			
			Результат = Запрос.Выполнить();
			
			ВыборкаПоВложенномуБизнесПроцессу = Результат.Выбрать();
			
			Пока ВыборкаПоВложенномуБизнесПроцессу.Следующий() Цикл
				
			    ЗавершитьБизнесПроцесс(ВыборкаПоВложенномуБизнесПроцессу.Ссылка);
				
			КонецЦикла;
			
		КонецЕсли;
		
		ЗадачаОбъект.Выполнена = Истина;
		ЗадачаОбъект.Записать();
		
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = "Выполнена задача: " + Выборка.Ссылка;	
		Сообщение.Сообщить();
		
	КонецЦикла;
	
	БизнесПроцессОбъект = БП.ПолучитьОбъект();
	БизнесПроцессОбъект.Завершен = Истина;
	БизнесПроцессОбъект.Записать();
	
	Сообщение = Новый СообщениеПользователю();
	Сообщение.Текст = "Завершен бизнес-процесс: " + БизнесПроцессОбъект;	
	Сообщение.Сообщить();