Сделать процесс недоступным вполне можно административно - просто скрыв его из Живой ленты или, например, изменив права доступа к нему для всех сотрудников компании. Если по какой-либо причине такой вариант неприемлем, то для выполнения данной задачи можно внести изменения в стандартный бизнес-процесс.
Для начала надо создать еще одно поле бизнес-процесса, в котором будет содержаться список категорий отпусков. В дальнейшем эта категория будет указываться при уведомлении бухгалтерии.
Для того, чтобы автоматически отклонять заявление об отпуске, сначала необходимо задать периоды, в течение которых отпуск взять нельзя. Создадим константы, в которых мы будем хранить даты начала и концов этих периодов.
Итоговый список констант бизнес-процесса (включающий кроме созданных уже существующие) будет выглядеть следующим образом.
Внесем корректировки в шаблон бизнес-процесса. Добавим в начало цикл проверки введенных пользователем дат.
Проверку дат осуществим с помощью действия Условие. Для ветки условий Нет, настроим зависимость даты отпуска от запрещенных для отпуска периодов. Т.к. выбранные для отпуска даты записываются в поля, то будем использовать тип условия Поле документа. Рассматривать будем следующие варианты:
- Дата начала отпуска попадает в один из запрещенных периодов.
- Дата завершения отпуска попадает в один из запрещенных периодов.
- Сам запрещенный период целиком попадает в даты отпуска.
Добавим уведомление пользователя о том, что он выбрал некорректные даты для отпуска. Пользователю будет также предложено выбрать другие даты для своего отпуска. Используем для этого действие Запрос доп.информации (с отклонением). Если пользователь введет новые даты и сохранит их, то новые даты мы запишем в поле документа и цикл опять будет их проверять. Если пользователь не захочет по какой-либо причине вводить даты и отклонит ввод информации, то мы удалим его заявление на отпуск и прервем выполнение процесса.
Для ветки Да укажем условие выполнения Истина. Таким образом, она выполнится в том случае, если процесс не пойдет по первой ветке. В этой ветке мы настроим выход из цикла. Зададим переменную, которая будет указывать, правильно ли введены данные.
Созданный цикл будет работать пока у данной переменной будет значение Нет. Если пользователь введет правильные даты, то изменим значение переменной на Да, чтобы выйти из цикла. Если пользователь ввел подходящие для отпуска даты, то бизнес-процесс заявления на отпуск продолжит свое обычное выполнение.
Чтобы подробнее ознакомиться с шаблоном, скачайте его здесь.