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