Недавно появилось необходимость через произвольный код 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 руководителей пользователя (руководителей может быть несколько если сотрудник привязан к нескольким отделам).
Может кому пригодится
