Недавно появилось необходимость через произвольный код PHP в 1С:Битрикс Корпоративный портал получать непосредственного руководителя указанного пользователя. В бизнес-процессах есть специальный компонент для этого, но вот в Битрикс АПИ такой вроде бы нужной функции почему-то не нашлось. Поиск по форуму также результатов не дал, а ответ техподдержки навел мой взгляд на 2 функции - CIntranetUtils::GetUserDepartments($user_id) и CIntranetUtils::GetDepartmentManagerID($section). Первая выводит массив отделов, к которым прикреплен сотрудник, вторая - выводит руководителя отдела с ID $section. Собрав воедино инфу разработал вот такую конструкцию:
Параметры:
$user_id - ID пользователя в портале, для которого требуется найти руководителя.
Возвращает функция массив ID руководителей пользователя (руководителей может быть несколько если сотрудник привязан к нескольким отделам).
Может кому пригодится
function getBitrixUserManager($user_id) { $managers = array(); $sections = CIntranetUtils::GetUserDepartments($user_id); foreach ($sections as $section) { $manager = CIntranetUtils::GetDepartmentManagerID($section); while (empty($manager)) { $res = CIBlockSection::GetByID($section); if ($sectionInfo = $res->GetNext()) { $manager = CIntranetUtils::GetDepartmentManagerID($section); $section = $sectionInfo['IBLOCK_SECTION_ID']; if ($section < 1) break; } else break; } If ($manager > 0) $managers[] = $manager; } return $managers; } |
$user_id - ID пользователя в портале, для которого требуется найти руководителя.
Возвращает функция массив ID руководителей пользователя (руководителей может быть несколько если сотрудник привязан к нескольким отделам).
Может кому пригодится
