На днях от одного из заказчиков с 2 ДО прилетает заявка. Нет рекомендуемого варианта шаблона процесса при отправке документа от определенной организации. Для упрощения пусть будет организация «Альфа» К слову, в ДО числится несколько организаций. Полез разбираться и действительно, если в документе стоит организация «Альфа», то варианта нет, а при других организациях все работает как надо. В первую очередь проверил условие для назначения. Там все в порядке, условие завязано на реквизит типа булево для запуска либо одного процесса, либо другого. Вообще для данного вида документа, пусть будет «Заявка на закупку», существует 3 вида шаблона. Один настроен для запуска для всех организаций, если реквизит типа булево сразу в оплату не включен, и два процесса со включенным реквизитом, один для всех организаций, второй только для определенных.
Вот эти три процесса
А вот так выглядит их назначение по порядку как в списке
Как мы видим, у второго шаблона процессов есть назначения только на определенные организации. Попробовав различные варианты, понял, что если добавить в вариант нужную мне организацию, то последний, да и первый шаблоны процессов становятся доступными для выбора. На этом можно было бы и закончить, но мне стало интересно, а в чем же дело. Так как база сильно перепилена всеми, кому не лень, я подумал сначала, что проблема в доработках, и полез разбираться. После относительно недолгих поисков наткнулся на функцию ШаблоныПоОбъектам в общем модуле ШаблоныБизнесПроцессов. В этой функции получают шаблоны, у которых есть назначение на наш объект. После выполнения запроса результат перебирается по переданным объектам (он же наш документ) и по типам шаблонов бизнес процессов. И вот когда начинаются перебираться Комплексные бизнес-процессы, появляется выборка как раз из этих трех шаблонов.
Выборка в отладке выглядит вот так:
А дальше самое интересное. Зачем-то система начинает деление полученных шаблонов бизнес-процессов по условию «ПоОрганизации», где соответственно она помещает в разные массивы выбранные шаблоны процессов. И получается следующее: в массив ШаблоныПоОрганизации у нас попадает наш процесс, где указана организация, которая указана у нас в документе, а в массив ШаблоныБезОрганизации другие два. А дальше система проверяет, включена ли опция «ВестиУчетПоОрганизациям» и есть ли в массиве ШаблоныПоОрганизации записи и если есть, то выкидывает массив ШаблоныБезОрганизации в трубу. А дальше идет проверка на выполнение условия маршрутизации и соответственно если он не выполняется, то и рекомендуемых шаблонов для запуска нет.
Увидев подобное в типовом коде, решил посмотреть в последней демке, где, собственно, то же самое. И вот тут вопрос: баг это или фича? Ответа я не нашел, как и информации о решении данного вопроса на официальных ресурсах.
Решение же достаточно простое: если у нас есть шаблон с указанием конкретных организаций для определенного вида документа и помимо первого есть еще шаблоны, в которых не указаны организации, нужно в этих шаблонах сделать назначения для всех организаций. Т.е. если у вас 5 организаций и шаблон должен быть доступен для всех пяти, то в назначении вам нужно сделать для каждой организации, т.е. будет пять строк.
В моем же случае для первого шаблона из 7 организаций мне пришлось добавить 5, для последнего все 7.
Спасибо за прочтение статьи, надеюсь, кому-нибудь она понадобится.