Как программно остановить процессы и задачи?

1. ilstar 22.05.23 08:34 Сейчас в теме
Всем привет!
Как программно остановить процессы и задачи?
или почему не работает метод "ВыполнитьЗавершениеБизнесПроцесса()" в данном случае? пишет метод объекта не обнаружен
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
11. ilstar 06.12.23 08:10 Сейчас в теме
Может кому пригодится

&После("ПриЗаписи")
Процедура Расш1_ПриЗаписиПосле(Отказ)      

	УдалениеПроцессовДокументов();
	
КонецПроцедуры  

Процедура УдалениеПроцессовДокументов()

	//Удаление процессов при пометке документа на удаление  
	//Запрос в цикле потому что много видов БП. Но так точно все процессы пометятся на удаление и прервутся
	Если ЭтотОбъект.ПометкаУдаления Тогда
		Если Расш1_ДопМодульСервер.ЗначениеДопКонстанты("АвтоматическаяОстановкаИУдалениеБП") Тогда 
            УстановитьПривилегированныйРежим(Истина);

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

			УстановитьПривилегированныйРежим(Ложь);
		КонецЕсли;
	КонецЕсли;
	

КонецПроцедуры

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. petleon 7 22.05.23 09:14 Сейчас в теме
(1) Процедура "ВыполнитьЗавершениеБизнесПроцесса()" должна быть в модуле объекта или менеджера бизнес-процесса со словом "Экспорт"
3. ilstar 22.05.23 09:53 Сейчас в теме
(2)
ВыполнитьЗавершениеБизнесПроцесса

в модуле объекта этот код находится
Прикрепленные файлы:
4. пользователь 22.05.23 10:47
Сообщение было скрыто модератором.
...
5. пользователь 22.05.23 11:07
Сообщение было скрыто модератором.
...
8. пользователь 22.05.23 11:48
Сообщение было скрыто модератором.
...
10. пользователь 22.05.23 11:50
Сообщение было скрыто модератором.
...
7. пользователь 22.05.23 11:44
Сообщение было скрыто модератором.
...
9. nomad_irk 72 22.05.23 11:49 Сейчас в теме
(7)может стоит сперва поучиться на более простых задачах: это позволит понять, что и когда выполняется, смысл текста ошибки,.....не?
11. ilstar 06.12.23 08:10 Сейчас в теме
Может кому пригодится

&После("ПриЗаписи")
Процедура Расш1_ПриЗаписиПосле(Отказ)      

	УдалениеПроцессовДокументов();
	
КонецПроцедуры  

Процедура УдалениеПроцессовДокументов()

	//Удаление процессов при пометке документа на удаление  
	//Запрос в цикле потому что много видов БП. Но так точно все процессы пометятся на удаление и прервутся
	Если ЭтотОбъект.ПометкаУдаления Тогда
		Если Расш1_ДопМодульСервер.ЗначениеДопКонстанты("АвтоматическаяОстановкаИУдалениеБП") Тогда 
            УстановитьПривилегированныйРежим(Истина);

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

			УстановитьПривилегированныйРежим(Ложь);
		КонецЕсли;
	КонецЕсли;
	

КонецПроцедуры

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот