В документообороте часто встречаю ситуации когда программисты решают задачу внося изменения в конфигурацию, хотя есть возможность обойтись штатными средствами. Одной из таки задач является "Запрет повторного запуска комплексных процессов"
Типовое решение:
1. Создаем новое условие маршрутизации
2. Вставляем в него необходимый нам код
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КомплексныйПроцессПредметы.Ссылка КАК Ссылка,
| КомплексныйПроцессПредметы.Ссылка.Завершен КАК Завершен,
| КомплексныйПроцессПредметы.Ссылка.Стартован КАК Стартован,
| КомплексныйПроцессПредметы.Ссылка.Состояние КАК Состояние,
| КомплексныйПроцессПредметы.Ссылка.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| БизнесПроцесс.КомплексныйПроцесс.Предметы КАК КомплексныйПроцессПредметы
|ГДЕ
| КомплексныйПроцессПредметы.Ссылка.ПометкаУдаления = ЛОЖЬ
| И КомплексныйПроцессПредметы.Ссылка.Завершен = ЛОЖЬ
| И КомплексныйПроцессПредметы.Предмет = &Предмет
| И КомплексныйПроцессПредметы.Ссылка.Состояние <> &Состояние
| И КомплексныйПроцессПредметы.Ссылка.Стартован = ИСТИНА";
Запрос.УстановитьПараметр("Предмет", Предмет.Ссылка);
Запрос.УстановитьПараметр("Состояние",Перечисления.СостоянияБизнесПроцессов.Прерван);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество()>=2 Тогда
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
3. Размешаем наше условие в комплексном процессе
4. Готово