Предположим, что к нам поступил заказ реализовать бизнес-процесс заказа товара и получения последующей оплаты по следующей схеме:
При старте бизнес-процесса способ оплаты (через банк или кассу) должен быть известен, чтобы в процессе выполнения произошел переход на соответствующее действие.
И так, начнем. Мы имеем пустую конфигурацию, поэтому необходимо будет добавить все используемые в дальнейшем объекты самостоятельно. Все действия проделаем в несколько этапов:
1) На первом этапе добавим в конфигурацию необходимые справочники с соответствующими предопределенными элементами.
Заполнение предопределенных элементов мы осуществили в соответствии со значениями адресации задач на карте маршрута (см. выше).
2) На втором этапе нужно реализовать механизм, который будет хранить в системе текущего пользователя, а именно ссылку на элемент справочника "Пользователи" связанного с пользователем информационной базы.
Чтобы не усложнять пример, соответствие между элементом справочника "Пользователи" и пользователем информационной базы будем осуществлять по наименованию. При запуске программы система должна сохранить ссылку на текущего пользователя (элемент справочника "Пользователи") в параметр сеанса "ТекущийПользователь". Тип данного параметра - "СправочникСсылка.Пользователи".
На скриншоте выше показан программный код для инициализации значения параметра сеанса "ТекущийПользователь" для текущего пользователя информационной базы. Поиск в справочнике осуществляется по наименованию. Если элемент не найден, то создается новый. В конце стандартной процедуры "УстановитьПараметрыСенаса", в модуле сеанса конфигурации, полученная ссылка на элемент справочника "Пользователи" записывается в соответствующий параметр сеанса.
3) На третьем шаге создадим объект конфигурации "Задача", чтобы в дальнейшем бизнес-процесс адресовал задачи установленным пользователям. Для этого добавим объект конфигурации в ветке "Задачи" и дадим ему такое же имя.
Прежде чем настраивать свойства добавленного объекта, нам необходимо создать регистр адресации задач, по содержимому которого система будет определять конечного исполнителя для задачи (пользователя). Для этого добавим регистр сведений "РолиИсполнителейЗадач" с тремя измерениями. Тип измерений понятен по их именам.
Теперь необходимо в свойстве объекта задач выполнить следующие настройки:
Описанные настройки на вкладке "Адресация" влияют на поведение системы при присвоении исполнителя задачам, создаваемым бизнес-процессом. Немного подробнее:
Процедура ОплатаНаличнымиПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) // Если параметр "Результат" равен ИСТИНА, то процесс подет по ветке "ДА", и наоборот. Результат = ОплатаИзКассы; // "ОплатаИзКассы" - реквизит бизнес-процесса (см. выше) КонецПроцедуры
И последний штрих для объекта бизнес-процесса. Добавим собственную основную форму объекта. На ней будем отображать текущее состояние карты маршрута для бизнес-процесса. Для этого добавим новый реквизит формы "Карта" с типом "ГрафическаяСхема" и поместим для него элемент на форму с типом "Поле графической схемы". Для отображения текущего состояния карты маршрута на форму добавим команду "ОбновитьКарту" и соответствующую ей кнопку.
При нажатии на кнопку "Обновить карту" будет выполнен следующий программный код:
&НаКлиенте Процедура ОбновитьКарту(Команда) // Обработчик команды формы ОбновитьКартуСервер(); КонецПроцедуры &НаСервере Процедура ОбновитьКартуСервер() // Серверная контекстная процедура получения карты маршрута // Конвертируем объект формы в объект бизнес-процесса ОбъектБП = РеквизитФормыВЗначение("Объект"); // Вызываем метод получения карты маршрута текущего бизнес-процесса Карта = ОбъектБП.ПолучитьКартуМаршрута(); КонецПроцедуры
Примечание: конвертировать обеъкт формы в объект бизнес-процесса необходимо для вызова метода "ПолучитьКартуМаршрута()", поскольку объект формы не поддерживает его.
5) На этом этапе выведем на панель рабочего стола список задач для текущего пользователя. Для этого будем использовать виртуальную таблицу объекта задач - "ПоИсполнителю". Создадим новую форму списка "РабочийСтол", при этом не будем устанавливать ее основной. Откроем ее в редакторе форм и в качестве основной таблицы для динамического списка (реквизит формы "Список") изменим основную таблицу.
После этого добавим созданную форму в рабочую область рабочего стола.
Теперь перейдем к последнему этапу - настройки регистра адресации задач в режиме 1С:Предприятие.
6) Настройка регистра адресации задач - очень важный этап. Запустим программу в режиме предприятия и перейдем в таблицу регистра адресации задач. Создадим там следующие записи:
А теперь подробнее. Первая запись с заполненным измерением "Пользователь" говорит системе, что если для точки действия на карте маршрута в качестве исполнителя установлен пользователь "Сидоров", то задача адресуется непосредственно ему. Если бы мы заполнили измерение "Должность" или "Бизнес-процесс", то задача бы пришла к пользователю только в том случае, если адресация точки маршрута была настроена аналогичным образом.
Если рассмотрим шестую запись из таблицы, где заполнены все измерения, то мы можем заключить следующее: задача пользователю "Бухгалтер" придет только в том случае, если для точки действия установлены в параметрах адресации подразделение - "Бухгалтерия" и должность - "Кассир". В текущем примере для этого условия удовлетворяет одна точка действия:
Обратите внимание, что поле "Пользователь" не заполнено, поскольку мы точно не знаем какому конкретно пользователю нам необходимо адресовать задачу. В соответствии с данной настройкой, задача придет для пользователей, для которых настроены подобные записи в регистре адресации:
Таким образом, основной принцип работы механизма адресации платформы заключается в следующем: задача адресуется пользователю в соответствии со значением основного реквизита адресации в объекте конфигурации "Задача", если совпадают значения остальных измерений регистра адресации (кроме связанного с основным реквизитом адресации) и значений адресации на точке маршрута бизнес-процесса.
На этом задача решена. Проведем небольшое тестирование.
В режиме предприятия выполним старт нового бизнес-процесса.
В соответствии с правилами адресации точки маршрута "Заказ товара", задача должна придти пользователям, для которых в регистре адресации создана запись с подразделением "Бухгалтерия" и пустым измерением "Должность". В нашем примере это пользователь "Бухгалтер" и "Кассир". Запустим программу от пользователя "Бухгалтер" и на рабочем столе видим новую задачу.
Тест завершен, все работает.
Механизм бизнес-процессов теперь используется во многих типовых конфигурациях. Даже в задачах для сертификации "1С:Специалист" по платформе 8.2 имеется отдельный блок задач по бизнес-процессам. Но несмотря на привлекательность данного механизма, во многом он остается неудобным с точки зрения разработки в таких моментах, как программное формирование карты маршрута и связь объекта бизнес-процесса с другими объектами конфигурации.