• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/integration/ui/entityselector/departmentprovider.php
  • Класс: BitrixIntranetIntegrationUIEntitySelectorDepartmentProvider
  • Вызов: DepartmentProvider::doSearch
public function doSearch(SearchQuery $searchQuery, Dialog $dialog): void
{
	if ($this->getSelectMode() === self::MODE_USERS_ONLY)
	{
		return;
	}

	$limit = $this->getLimit();

	// Try to select all departments
	$departments = $this->getStructure([
		'searchQuery'=> $searchQuery->getQuery(),
		'limit' => $limit,
	]);

	$limitExceeded = $limit <= $departments->count();
	if ($limitExceeded)
	{
		$searchQuery->setCacheable(false);
	}

	foreach ($departments as $department)
	{
		$isRootDepartment = $department->getDepthLevel() === 1;
		$hideRootDepartment = $isRootDepartment && !$this->options['allowSelectRootDepartment'];
		if ($hideRootDepartment)
		{
			continue;
		}

		$dialog->addItem(new Item([
			'id' => $department->getId(),
			'entityId' => 'department',
			'title' => $department->getName(),
		]));

		if ($this->getSelectMode() === self::MODE_USERS_AND_DEPARTMENTS && $this->options['allowFlatDepartments'])
		{
			$dialog->addItem(new Item([
				'id' => $department->getId().':F',
				'entityId' => 'department',
				'title' => $department->getName() . ' ' . Loc::getMessage('INTRANET_ENTITY_SELECTOR_ONLY_EMPLOYEES'),
			]));
		}
	}
}