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

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

  1. Создание Заместителя в профиле пользователя
  2. Вывод Заместителя в профиле пользователя
  3. Блок схема бизнес процесса. Пример с заместителем в Битрикс24
    1. Переменные в бизнес-процессе
    2. Действия бизнес-процесса
      1. Определение руководителя
      2. Руководитель
      3. Обновление Руководителя
      4. Проверка отсутствия
      5. Статус руководителя
      6. Руководитель на месте?
      7. Разветвление
      8. Определение Заместителя
      9. Зам Руководителя
      10. Уведомление Руководителя
      11. Утверждение документа
      12. Лайфхак

Создание Заместителя в профиле пользователя

Идем в Администрирование —> Настройки —> Пользователи —> Список пользователей

Заходим в любого пользователя, открываем вкладку «Дополнительно» и нажимаем «Добавить пользовательское свойство».

Настройки профиля пользователя

Тип данных устанавливаем «Привязка к сотруднику», заполняем код поля, XML_ID и название поля на русском и английском.

Создание пользовательского свойства

Вывод Заместителя в профиле пользователя

Для вывода заместителя в профиле пользователя в блоке «Контактная информация» внизу выберите поля, которые хотите отобразить.

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

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

Бизнес-процесс утверждения документа

В этом примере простое утверждение документа, это может быть договор или заявление на отпуск. Создаем процесс в Живой ленте, формируем поля документа, а затем создаем непосредственно сам процесс.

Переменные в бизнес-процессе

Нам необходимо создать три переменные:

  • Руководитель (или любой другой сотрудник, которого необходимо заменять в данном процессе) — тип переменной «Привязка к сотруднику»
  • Статус руководителя — тип переменной «Строка»
  • Зам руководителя — тип переменной «Привязка к сотруднику»

Переменные

Действия бизнес-процесса

Определение руководителя

Для определения руководителя используем действие «Выбор сотрудника».

Определение руководителя

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

Руководитель

Это действие покажет нам кто же определился в качестве Руководителя в предыдущем действии. Такие отчеты помогают в отладке бизнес-процессов. Рекомендую вставлять подобное логирование после каждого ключевого действия и при разветвлении.

Логирование

  • Заголовок — Руководитель
  • Текст — вставляем из предыдущего действия (для этого нужно нажать кнопку «…», выбрать раздел «Дополнительные результаты» и найти нужное действие). После вставки значения в конце нужно добавить параметр «>friendly», он нужен чтобы имя отображалось в обычном виде, а не в виде ID

Вставка значения

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

Обновление Руководителя

В этом действии мы запишем определенного Руководителя в переменную. Возьмем действие «Изменение переменных».

Обновление переменной

  • Заголовок — Обновление Руководителя
  • Переменная — Руководитель
  • Значение — вставляем из действия «Определение руководителя» (для этого нужно нажать кнопку «…»)

Проверка отсутствия

Действие PHP-код. Проверим на месте ли Руководитель. Данный параметр определяется на основе графика отсутствия Битрикс. Вы можете найти его в разделе «Время и отчеты».

График отсутствий

Проверка отсутствия

  • Заголовок — Проверка отсутствия Руководителя
  • 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’ — значения, которые будут записаны в переменную «Статус руководителя» в зависимости от результата

В Битриксе появилось действие «Информация о сотруднике», с помощью него также теперь можно проверить отсутствие.

Информация о сотруднике

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

Далее с помощью действия «Изменение переменных» вносим в переменную «Статус руководителя» (RukState) информацию об отсутствии

Изменение переменных

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

Вставка значения об отсутствии

Действие «Информация о сотруднике» возвращает N- когда сотрудник на месте и Y — когда сотрудник отсутствует, поэтому не забудьте поправить условие ниже, если будете пользоваться этим действием.

 

Статус руководителя

Логируем полученный статус.

Логирование статуса

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

Руководитель на месте?

Выбираем конструкцию «Условие» и указываем в каком случае Руководитель на месте, а в каком нет.

Условие

Условие «Да»

Условие да

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

Условие «Нет»

Условие нет

  • Заголовок — Нет
  • Тип условия — Значение переменной
  • Свойство или переменная — Статус руководителя
  • Условие — равно
  • Значение — absent (мы прописали его в PHP коде в случае отсутствия)

Разветвление

Логируем результат разветвления по условию.

На месте:

На месте

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

Отсутствует:

Отсутствует

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

Определение Заместителя

Действие 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)
  • Текст статуса — установлен по умолчанию, можно изменить по желанию
  • Текст кнопки подтверждения в задании — можно оставить по умолчанию, либо изменить на более подходящее выражение
  • Текст кнопки отказа в задании — можно оставить по умолчанию, либо изменить на более подходящее выражение
  • Показывать поле ввода комментария — по Вашему усмотрению
  • Обязательность комментария — по Вашему усмотрению
  • Метка для поля комментария — можно оставить по умолчанию
  • Период утверждения — по умолчанию неограниченный период, но можно задать срок, по истечению которого процесс пойдет дальше
  • Ограничить доступ — Нет
  • Тип делегирования — Всем сотрудникам (нет смысла запрещать делегирование вышестоящим сотрудникам)

В данном бизнес-процессе задание на утверждение документа направляется параллельно Руководителю и Заместителю руководителя, это сделано для того, что если Руководитель отсутствует по причине командировки или находится на встрече, то он вполне может утвердить документ в мобильном приложении. Если Вы хотите направлять задание только Заместителю, то продолжайте разные ветки, а не «сливайте» задание в одно, как сделала я.

Лайфхак

Для того чтобы применять эту конструкцию, не создавая каждый раз заново, поместите ее в «Блок действий», а блок в «Мои действия» дизайнера бизнес-процессов, это позволит быстро применять часто повторяющиеся схемы, которые Вы используете.

Блок действийМои действия

1 комментарий

  1. Аватар
    Игорян :-) Permalink

    Вера, молодец! Желаю побольше адекватных клиентов с большими задачами! 🙂

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован.

error: Контент защищен