Заместители в бизнес-процессах Битрикс24

Все сотрудники бывают в командировках, отпуске и на больничном, а в это время им падают задания по согласованию различных документов и все это нужно как-то делегировать, желательно без участия этого самого сотрудника. В Битрикс24 нет стандартного функционала замещения, но мы сами можем частично воспроизвести его хотя бы в бизнес-процессах.
СОЗДАНИЕ ЗАМЕСТИТЕЛЯ В ПРОФИЛЕ ПОЛЬЗОВАТЕЛЯ
Заходим в любого пользователя, открываем вкладку "Дополнительно" и нажимаем "Добавить пользовательское свойство".


Тип данных устанавливаем "Привязка к сотруднику", заполняем код поля, XML_ID и название поля на русском и английском.
Вывод Заместителя в профиле пользователя
Для вывода заместителя в профиле пользователя в блоке "Контактная информация" внизу выберите поля, которые хотите отобразить.
Теперь любой пользователь сможет указать заместителя, который будет согласовывать за него документы в бизнес-процессах. Назначение заместителей происходит с помощью редактирования поля "Заместитель" в личном профиле. Нажмите кнопку "изменить" вверху справа и найдите поле "Заместитель", найдите нужного сотрудника и сохраните.


В этом примере простое утверждение документа, это может быть договор или заявление на отпуск. Создаем процесс в Живой ленте, формируем поля документа, а затем создаем непосредственно сам процесс.
ПЕРЕМЕННЫЕ В БИЗНЕС-ПРОЦЕССЕ
Нам необходимо создать три переменные:
- Руководитель (или любой другой сотрудник, которого необходимо заменять в данном процессе) - тип переменной "Привязка к сотруднику"
- Статус руководителя - тип переменной "Строка"
- Зам руководителя - тип переменной "Привязка к сотруднику"


Определение руководителя
Для определения руководителя используем действие "Выбор сотрудника".
- Заголовок - Определение руководителя
- Тип - начальник
- Для пользователя - выбираем поле документа с сотрудником, для которого нужно определить руководителя для согласования документа.
- Уровень начальника - 1 (непосредственный начальник)
- Резервные пользователи - на всякий случай укажем Администратора
- Пропускать отсутствующих - Нет, убираем галочку
- Пропускать с завершенным рабочим днём - Нет, убираем галочку
руководитель
Это действие покажет нам кто же определился в качестве Руководителя в предыдущем действии. Такие отчеты помогают в отладке бизнес-процессов. Рекомендую вставлять подобное логирование после каждого ключевого действия и при разветвлении.
- Заголовок - Руководитель


- Текст - вставляем из предыдущего действия (для этого нужно нажать кнопку "...", выбрать раздел "Дополнительные результаты" и найти нужное действие). После вставки значения в конце нужно добавить параметр ">friendly", он нужен чтобы имя отображалось в обычном виде, а не в виде ID
- Загрузить отчет для доступа из бизнес-процесса - устанавливаем галочку
Обновление Руководителя
В этом действии мы запишем определенного Руководителя в переменную. Возьмем действие "Изменение переменных".
- Заголовок - Обновление Руководителя
- Переменная - Руководитель
- Значение - вставляем из действия "Определение руководителя" (для этого нужно нажать кнопку "...")



- Заголовок - Проверка отсутствия Руководителя
- PHP код:
global $DB;
$USER_ID = {=Variable:Ruk};
if (is_array($USER_ID))
$USER_ID = $USER_ID[0];
$USER_ID = preg_replace("/[^0-9]/", '', $USER_ID);
if (CIntranetUtils::IsUserAbsent($USER_ID))
{
$this->SetVariable('RukState', 'absent');
}
else
{
$this->SetVariable('RukState', 'be_present');
}
return CBPActivityExecutionStatus::Closed;
- {=Variable:Ruk} - переменная "Руководитель"
- 'RukState' - переменная "Статус руководителя"
- 'absent' и 'be_present' - значения, которые будут записаны в переменную "Статус руководителя" в зависимости от результата

- Заголовок - По умолчанию
- Сотрудник - указываем сотрудника, отсутствие которого нас интересует

- Заголовок - Статус руководителя
- Переменная - выбираем переменную "Статус руководителя" и вставляем в него значение Дополнительные результаты --> Информация о сотруднике --> Отсутствует (по графику отсутствий)


Статус руководителя
Логируем полученный статус.
- Заголовок - Статус Руководителя
- Текст - вставляем переменную "Статус Руководителя", так как мы записали в неё значение в предыдущем действии (для этого нужно нажать кнопку "..." , выбрать раздел "Переменные" и найти нужную).
- Загрузить отчет для доступа из бизнес-процесса - устанавливаем галочку

Условие "Да"
- Заголовок - Да
- Тип условия - Значение переменной
- Свойство или переменная - Статус руководителя
- Условие - равно
- Значение - be present (мы прописали его в PHP коде в случае присутствия)


Условие "Нет"
- Заголовок - Нет
- Тип условия - Значение переменной
- Свойство или переменная - Статус руководителя
- Условие - равно
- Значение - absent (мы прописали его в PHP коде в случае отсутствия)
Руководитель На месте
- Заголовок - Разветвление
- Текст - Руководитель на месте
- Загрузить отчет для доступа из бизнес-процесса - устанавливаем галочку


Руководитель отсутствует
- Заголовок - Разветвление
- Текст - Руководитель отсутствует
- Загрузить отчет для доступа из бизнес-процесса - устанавливаем галочку

- Заголовок - Определение Заместителя
- PHP код:
global $DB;
$USER_ID = {=Variable:Ruk};
if (is_array($USER_ID))
$USER_ID = $USER_ID[0];
if (substr($USER_ID,0,5)=='user_')
$USER_ID = substr($USER_ID,5);
$PROPERTY_CODE = "UF_ZAM";
$rsUsers = CUser::GetList(($by="login"), ($order="asc"), array("ID"=>$USER_ID), array("SELECT"=>array($PROPERTY_CODE)));
if ($arUser = $rsUsers->GetNext())
{
$this->SetVariable('RukZam', 'user_'.$arUser[$PROPERTY_CODE]);
}
else
{
$this->SetVariable('RukZam', '');
}
return CBPActivityExecutionStatus::Closed;
- {=Variable:Ruk} - переменная "Руководитель"
- UF_ZAM - пользовательское поле, которое мы добавили в карточку пользователя в самом начале
- 'RukZam' - переменная "Зам руководителя". В переменную вносится Заместитель, если он есть, если же нет, то записывается пустое значение.
Зам Руководителя
- Заголовок - Зам Руководителя
- Текст - вставляем переменную "Зам Руководителя", так как мы записали в неё значение в предыдущем действии (для этого нужно нажать кнопку "..." , выбрать раздел "Переменные" и найти нужную).
- Загрузить отчет для доступа из бизнес-процесса - устанавливаем галочку


Уведомление Руководителя
- Заголовок - Уведомление Руководителя
- Отправитель уведомления - выбираем сотрудника, который направляет документ на утверждение
- Получатель уведомления - выбираем переменную "Руководитель" и "Зам руководителя"
- Текст уведомления для сайта - пишем что предстоит согласовать или утвердить, при необходимости добавляем характеристики документа
- Тип уведомления - Персонализированное

- Заголовок - Утверждение документа
- Утверждают сотрудники - выбираем переменную "Руководитель" и "Зам руководителя"
- Тип утверждения - Любой сотрудник (если руководитель в командировке или на встрече, то сам сможет утвердить документ, если же нет, то это может сделать и заместитель)
- Название задания - Укажите в названии наименование документа, который нужно утвердить
- Описание задания - Укажите что нужно утвердить, добавьте ссылку на документ, укажите его параметры, которые влияют на решение. Полезно указывать дату и время в начале описания.
- Устанавливать текст статуса - Нет (т.к. мы выбрали, что утверждает любой сотрудник, то нам неинтересен процент согласования, он всегда будет 100)
- Текст статуса - установлен по умолчанию, можно изменить по желанию
- Текст кнопки подтверждения в задании - можно оставить по умолчанию, либо изменить на более подходящее выражение
- Текст кнопки отказа в задании - можно оставить по умолчанию, либо изменить на более подходящее выражение
- Показывать поле ввода комментария - по Вашему усмотрению
- Обязательность комментария - по Вашему усмотрению
- Метка для поля комментария - можно оставить по умолчанию
- Период утверждения - по умолчанию неограниченный период, но можно задать срок, по истечению которого процесс пойдет дальше
- Ограничить доступ - Нет
- Тип делегирования - Всем сотрудникам (нет смысла запрещать делегирование вышестоящим сотрудникам)
Лайфхак


Краткий чек-лист по внедрению Корпоративного портала Битрикс24. Он поможет действовать поэтапно, ничего не упустив. Битрикс это просто! А пока сохраняем план действий для дальнейшей фиксации проделанной работы и вспоминаем все свои бизнес-процессы, которые нужно автоматизировать. Они нам пригодятся уже в первом пункте.

ФИКСАЦИЯ СОГЛАСОВАНИЙ И СОБЫТИЙ ИЗ БИЗНЕС-ПРОЦЕССА В СДЕЛКЕ
Когда руководитель, директор, бухгалтер согласовывают те или иные параметры Сделки или происходят важные моменты в ходе процесса, их необходимо зафиксировать в карточке Сделки. Фиксировать согласования и события можно в специально созданном поле, в виде комментариев в ленте Сделки, либо в списке.

Сопоставление полей типа "Список" в бизнес-процессах
На днях мне понадобилось настроить автозаполнение полей сделки на основе полей Компании. Я создала процесс при создании Сделки, настроила проверку заполненности полей и при пустом значении заполнила их из Компании. Поля типа "Список" заполняться отказались :( Пришлось искать варианты. Что же я сделала?

Ведение клиентской базы и фиксация всех взаимодействий с заказчиками основа для дальнейшего развития и аналитики. Какие же инструменты для контроля заполнения данных предоставляет Битрикс 24?
Оставьте заявку на бесплатную консультацию
© 2020 All rights reserved.