Самый лучший способ понять систему бизнес-процессов в битриксе — сделать самому хотя бы один, а потом эту заготовку изучить досконально и довести до нужного вида.
Зайти в процесс — Действия — Настроить бизнес-процессы.
В открывшемся окне выбрать пункт «Создать бизнес-процесс со статусами».
Выбрать название, например «Заявка в техподдержку».
по умолчанию стоит галка «При добавлении». Это означает, что заполнив поля формы сотрудник запустит бизнес процесс.
Скрыть из меню ручного запуска, удобная функция, защита от случайного запуска одного и того же процесса.
Нажать кнопку Сохранить.
Дальше идут закладки Переменные и Константы, о них уже написано раньше. Их можно настроить заранее, чтобы использовать в настройке процесса.
Вот так выглядит наш процесс-пример «Заявка в техподдержку».
Все статусы основаны на продуманной логике и ролях процесса.
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 1. С чего начать создание процесса — проработка логики
После заполнения полей процесса Сотрудник запускает первый начальный статус «Новая».
Статус «Новая»
Предварительная обработка заявки перед согласованием.
Так как схема крупная, пришлось ее отскринить в 4 картинках.
Целиком она такая
А теперь покрупнее частями.
Рассмотрим эти блоки
Блок «PHP код»
Помните мы в списке полей и в переменных упоминали департамент и телефон инициатора из штатки. Вот здесь мы активируем подгрузку данных пользователя инициатора из штатки. На самом деле там запланировано 4 поля, ну сами увидите.
$user = '{{Инициатор}}';
$list = array(
'Position' => '',
'Phone' => '',
'Email' => '',
'Department' => '',
);
if (!empty($user)) {
$id = str_replace('user_', '', $user);
$data = CUser::GetByID($id)->Fetch();
$list = array(
'Position' => $data['WORK_POSITION'],
'Phone' => $data['UF_PHONE_INNER'],
'Email' => $data['EMAIL'],
);
$list['Department'] = array();
foreach (CIntranetRestService::departmentGet(['ID' => $data['UF_DEPARTMENT']]) as $key => $item) {
if(is_int($key)){
$list['Department'][] = $item['NAME'];
}
}
$list['Department'] = implode(',', $list['Department']);
}
foreach ($list as $key => $value) {
$this->SetVariable($key, $value);
}
Блок «Условие»
В блоке прописано условие — по-разному заполнять переменную название (в переменных я про нее рассказывала!) в зависимости от типа заявки. Если это тип Инцидент, то будет сообщение об инциденте, а остальные — Заявка в техподдержку.
Идет по конструктору дальше
Блок «Изменение документа»
Заполнит поля в заявке из переменных.
Блок «Изменение переменных»
Сведем уже в переменную текст все полученные данные и заполним тип заявки из поля в переменной для того чтобы выводить ее в задании на согласование.
Блок «Уведомление пользователя»
Сообщает инициатору, что все прошло хорошо.
Блок «Выбор сотрудника»
Позволяет в рамках штатки выбрать автоматически руководителя, например, для добавления в наблюдатели в задачу.
Блок «Изменение полей документа»
Добавим этого руководителя в отдельное скрытое поле именно для служебных целей.
Обратите внимание. Все блоки в конструкторе лучше называть как-то уникально, тогда в списке будет удобно их искать.
Блок «Запись в отчет»
Позволяет на любом шаг вести лог событий и данных
Не обязательно делать все эти шаги, можно делать только то, что вам нужно!
Блок «Установка прав»
Позволяет установить права на данном статусе. Например, руководитель департамента у каждого инициатора свой и здесь ему будет выдан доступ на просмотр заявки данного сотрудника.
Если пользователь, согласовавший заявку, не видит ее, скорей всего ему не добавлен доступ на просмотр.
Собственно здесь статус новый переходил в статус «Согласование в ИТ». Но.
После запуска заявки оказалось, что нужен тип «Проработка тех. решения» с согласованием руководителем. Пришлось добавлять, как говорится заплатку. Т. к. остальные у нас без согласования руководителем, то поле делать обязательным нельзя. Но если не сделать обязательным, то могут не заполнить, поэтому используем схему по выбору начальника — непосредственного руководителя, как мы делали выше.
Получился доп. блок с тремя условиями.
Блок «Условие» 1
Первое условие, что тип заявки, требующий согласования. Если нет, то просто улетает в статус Согласование в ИТ
Блок «Условие» 2
Если выбрана Проработка тех.решения, переходим в условие 2 — выбран ли Руководитель.
Дальше идет само согласование, не запланированное, но вполне работающее.
Блок «Условие» 3
Опять условие, уже номер 3. Если инициатор и руководитель инициатора один и тот же человек, то согласование не нужно и заявка улетает на согласование в ИТ.
Если руководитель и инициатор разные сотрудники, значит нужно согласование руководителем.
Блок «Утверждение документа»
Если — ДА
Блок «Изменение полей документа»
В поле Согласовано руководителем добавляем текущее время согласования.
В поле Руководитель добавляем того, кто согласовал, загрузив данные из результатов.
Блок «Установить статус»
Если — НЕТ
Блок «Уведомление пользователя»
Комментарий при отклонении выводится через Дополнительные результаты
Блок «Установить статус»
Важная информация! Если в условии у вас в обеих ветках переход в другой статус, то надо обязательно поставить галку «Прервать выполнение текущего статуса» везде, иначе процесс будет ждать выполнения всех веток. А так первая исполненная отправит процесс дальше.
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 1. С чего начать создание процесса — проработка логики
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 2. Поля формы, создание и настройка
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 3. Создание бизнес-процесса. Константы
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 4. Создание бизнес-процесса. Переменные
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 5. Создание бизнес-процесса со статусами. Настройка статусов в БП
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 6. Создание бизнес-процесса со статусами. Настройка статусов в БП
Битрикс 24. Бизнес процессы. Заявка в техподдержку. Шаг 7. Создание бизнес-процесса со статусами. Настройка статусов в БП
#битрикс24 #администрирование #сайты #веб-разработка #бизнес-процессы