Как программно остановить процессы и задачи?
По теме из базы знаний
- Внедрение программного продукта. Особенности работы бизнес-консультанта. Часть I
- Как продать проект в 3 раза дороже и нанести клиенту пользу, выполнив не внедрение...
- 1С СППР, как инструмент по внедрению, разработке и сопровождению информационных систем
- Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок
- Интервью по опыту перехода с SAP на 1С: «Процессы тяжело переводить, а персонал хорошо переходит»
Найденные решения
Может кому пригодится
&После("ПриЗаписи")
Процедура Расш1_ПриЗаписиПосле(Отказ)
УдалениеПроцессовДокументов();
КонецПроцедуры
Процедура УдалениеПроцессовДокументов()
//Удаление процессов при пометке документа на удаление
//Запрос в цикле потому что много видов БП. Но так точно все процессы пометятся на удаление и прервутся
Если ЭтотОбъект.ПометкаУдаления Тогда
Если Расш1_ДопМодульСервер.ЗначениеДопКонстанты("АвтоматическаяОстановкаИУдалениеБП") Тогда
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
ТекстЗапроса = "";
Запрос.УстановитьПараметр("ПредметПроцесса",ЭтотОбъект.Ссылка);
Для каждого МетаданныеБизнесПроцесса Из Метаданные.БизнесПроцессы Цикл
ТекстЗапроса = "ВЫБРАТЬ
| КомплексныйПроцесс.Ссылка
|ИЗ
| БизнесПроцесс.КомплексныйПроцесс КАК КомплексныйПроцесс
|ГДЕ
| КомплексныйПроцесс.ПометкаУдаления = ЛОЖЬ
| И КомплексныйПроцесс.Предметы.Предмет = &ПредметПроцесса";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "БизнесПроцесс.КомплексныйПроцесс","БизнесПроцесс." + МетаданныеБизнесПроцесса.Имя);
Запрос.Текст = ТекстЗапроса;
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
РСБП = Выборка.Ссылка.ПолучитьОбъект();
РСБП.ПометкаУдаления = Истина;
РСБП.ПричинаПрерывания = "Прервано автоматически при пометке на удаление документа";
РСБП.Состояние = Перечисления.СостоянияБизнесПроцессов.Прерван;
РСБП.Записать();
КонецЦикла;
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Может кому пригодится
&После("ПриЗаписи")
Процедура Расш1_ПриЗаписиПосле(Отказ)
УдалениеПроцессовДокументов();
КонецПроцедуры
Процедура УдалениеПроцессовДокументов()
//Удаление процессов при пометке документа на удаление
//Запрос в цикле потому что много видов БП. Но так точно все процессы пометятся на удаление и прервутся
Если ЭтотОбъект.ПометкаУдаления Тогда
Если Расш1_ДопМодульСервер.ЗначениеДопКонстанты("АвтоматическаяОстановкаИУдалениеБП") Тогда
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
ТекстЗапроса = "";
Запрос.УстановитьПараметр("ПредметПроцесса",ЭтотОбъект.Ссылка);
Для каждого МетаданныеБизнесПроцесса Из Метаданные.БизнесПроцессы Цикл
ТекстЗапроса = "ВЫБРАТЬ
| КомплексныйПроцесс.Ссылка
|ИЗ
| БизнесПроцесс.КомплексныйПроцесс КАК КомплексныйПроцесс
|ГДЕ
| КомплексныйПроцесс.ПометкаУдаления = ЛОЖЬ
| И КомплексныйПроцесс.Предметы.Предмет = &ПредметПроцесса";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "БизнесПроцесс.КомплексныйПроцесс","БизнесПроцесс." + МетаданныеБизнесПроцесса.Имя);
Запрос.Текст = ТекстЗапроса;
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
РСБП = Выборка.Ссылка.ПолучитьОбъект();
РСБП.ПометкаУдаления = Истина;
РСБП.ПричинаПрерывания = "Прервано автоматически при пометке на удаление документа";
РСБП.Состояние = Перечисления.СостоянияБизнесПроцессов.Прерван;
РСБП.Записать();
КонецЦикла;
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот