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