0 0,00 

Есть вопрос? Звоните!

+7 923 192-46-05

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

06.05.2020
977
Заместители

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

Содержание

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

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

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

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

Тип данных устанавливаем Привязка к сотруднику, заполняем код поля, XML_ID и название поля на русском и английском. Код поля важно указать UF_USR_….., тогда его потом можно будет прочитать через действие Информация о сотруднике.

Создание поля

Чтобы разместить поле в нужной вкладке, в любом пользователе или в форме добавления пользователя нажмите справа на шестеренку и выберите Настройки.

Настройки в админке

Далее в доступных вкладках выберите Доп.поля, вкладку Работа, в доступных полях Заместителя и с помощью стрелки перенесите в выбранные поля. Затем с помощью кнопок Выше и Ниже переставьте поле под должность.

Настройки в админке
Настройки в админке
Настройки в админке
Настройки в админке

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

Для вывода заместителя в профиле пользователя перейдите в профиль пользователя и справа внизу нажмите Общий вид карточки –> Настройка показа полей.

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

Появится окно Настройки полей. В списке полей для просмотра справа нажмите стрелку, прокрутите список и отметьте галочкой поле Заместителя и оно появится в списке полей для просмотра. То же самое повторите в списке полей для редактирования и нажмите Сохранить.

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

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

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

Профиль

Блок-схема бизнес-процесса. Пример с заместителем в Битрикс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’ – переменная Зам руководителя. В переменную вносится Заместитель, если он есть, если же нет, то записывается пустое значение.

Если код поля при создании вы указали как UF_USR_…, то заместителя можно определить с помощью  действия Информация о сотруднике.

Информация о сотруднике
  • Заголовок – по умолчанию;
  • Сотрудник – указываем сотрудника, заместитель которого нас интересует;

Также мы можем использовать то действие, которое мы уже добавили выше. Далее с помощью действия Изменение переменных вносим заместителя в переменную Заместитель (RukZam). Не забудьте перед переменной добавить user_. Т.е. будет выглядеть как user_Заместитель.

Зам руководителя

Зам Руководителя

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

 

Уведомление руководителя

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

Утверждение документа

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

Лайфхак

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

Блок действий
5 3 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
0
    0
    Корзина
    Корзина пустаВернуться в магазин