Все что нужно, добавить подписку на событие ПередЗаписью для БизнесПроцессСсылка.
Процедура РУ_ПередЗаписьюБизнесПроцессаПередЗаписью(Источник, Отказ) Экспорт
Если НЕ ЗначениеЗаполнено(Источник.Ссылка) И ЗначениеЗаполнено(Источник.Шаблон) И Источник.Предметы.Количество() > 0 Тогда
//Выполняем проверку только для процессов запущенных по шаблону и с указанным предметом
Предмет = Источник.Предметы[0].Предмет;
ВидПроцесса = Источник.Метаданные().Имя;
Запрос = Новый Запрос;
Запрос.Текст = СтрЗаменить(
"ВЫБРАТЬ
| БизнесПроцессыПоШаблону.Ссылка КАК СсылкаСсылка
|ИЗ
| КритерийОтбора.БизнесПроцессыПоШаблону(&Шаблон) КАК БизнесПроцессыПоШаблону
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.%ВИДПРОЦЕССА%.Предметы КАК КомплексныйПроцессПредметы
| ПО БизнесПроцессыПоШаблону.Ссылка = КомплексныйПроцессПредметы.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроцессыДляЗапуска КАК ПроцессыДляЗапуска
| ПО БизнесПроцессыПоШаблону.Ссылка = ПроцессыДляЗапуска.БизнесПроцесс
|ГДЕ
| НЕ БизнесПроцессыПоШаблону.Ссылка.Завершен
| И БизнесПроцессыПоШаблону.Ссылка.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
| И БизнесПроцессыПоШаблону.Ссылка <> &Ссылка
| И КомплексныйПроцессПредметы.Предмет = &Предмет
| И (ПроцессыДляЗапуска.Состояние ЕСТЬ NULL ИЛИ ПроцессыДляЗапуска.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияПроцессовДляЗапуска.СтартОтменен))", "%ВИДПРОЦЕССА%", ВидПроцесса);
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запрос.УстановитьПараметр("Предмет", Предмет);
Запрос.УстановитьПараметр("Шаблон", Источник.Шаблон);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Сообщить("Процесс уже запущен");
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры