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