injectUserNodeSort
\Bitrix\Main\ORM\Query\Query public \Bitrix\HumanResources\Public\Service\NodeMemberService::injectUserNodeSort( \Bitrix\Main\ORM\Query\Query $query, int $userId );
Метод добавляет в ORM-запрос пользователей сортировку по принадлежности к подразделениям указанного пользователя и по роли в подразделении. Сначала в результат попадают пользователи из тех же подразделений, затем — остальные. Внутри каждой группы руководители предшествуют остальным сотрудникам. Нестатический метод.
Параметры
| Параметр | Описание |
|---|---|
$query |
ORM-запрос к \Bitrix\Main\UserTable. Перед вызовом метод injectUserNodeSubquery() должен добавить в запрос связь USER_NODE_MEMBER |
$userId |
Идентификатор пользователя, чьи подразделения получают приоритет в сортировке |
Возвращаемое значение
Метод возвращает переданный объект \Bitrix\Main\ORM\Query\Query с добавленными служебными полями и сортировкой.
Особенности
Сначала вызовите injectUserNodeSubquery() для того же ORM-запроса. Объединение с записями об участии в узлах может создать несколько строк для одного пользователя, если у пользователя несколько ролей или подразделений. Обработайте повторы при получении результата.
Пример
<?php
use Bitrix\HumanResources\Public\Service\Container;
use Bitrix\Main\Engine\CurrentUser;
use Bitrix\Main\Loader;
use Bitrix\Main\UserTable;
if (!Loader::includeModule('humanresources'))
{
echo 'Модуль humanresources не установлен';
return;
}
$userId = (int)CurrentUser::get()->getId();
if ($userId <= 0)
{
echo 'Пользователь не авторизован';
return;
}
$query = UserTable::query()
->setSelect(['ID', 'NAME', 'LAST_NAME'])
->where('ACTIVE', 'Y')
->setLimit(20)
;
$nodeMemberService = Container::getNodeMemberService();
$nodeMemberService->injectUserNodeSubquery($query);
$nodeMemberService->injectUserNodeSort($query, $userId);
$usersById = [];
foreach ($query->fetchAll() as $user)
{
$usersById[(int)$user['ID']] = $user;
}
print_r(array_values($usersById));
Была ли эта страница полезна?
Что можно улучшить?
Пользовательские комментарии
Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026