Документация для разработчиков
Темная тема

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
Наверх