• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/ParentFieldManager.php
  • Класс: Bitrix\Crm\Service\ParentFieldManager
  • Вызов: ParentFieldManager::loadParentElements
protected function loadParentElements(array $elementRelationsIds): void
{
	foreach ($elementRelationsIds as $parentElementTypeId => $parentElementIds)
	{
		if (\CCrmOwnerType::isUseDynamicTypeBasedApproach($parentElementTypeId))
		{
			$factory = Container::getInstance()->getFactory($parentElementTypeId);
			if ($factory)
			{
				$parentElements = $factory->getItemsFilteredByPermissions([
					'select' => [
						Item::FIELD_NAME_TITLE,
					],
					'filter' => [
						'@' . Item::FIELD_NAME_ID => $parentElementIds,
					]
				]);

				$router = Container::getInstance()->getRouter();
				$items = [];
				foreach ($parentElements as $parent)
				{
					$parentId = $parent->getId();
					$url = $router->getItemDetailUrl(
						$parent->getEntityTypeId(),
						$parentId,
						$parent->getCategoryId()
					);
					$title = HtmlFilter::encode($parent->getHeading());
					$items[$parentId] = [
						'id' => $parentId,
						'code' => self::FIELD_PARENT_PREFIX . '_' . $parent->getEntityTypeId(),
						'entityDescription' => HtmlFilter::encode($factory->getEntityDescription()),
						'title' => $title,
						'url' => $url,
						'value' => '' . $title . '',
					];
				}
				$this->parents[$parentElementTypeId] = $items;
			}
		}
		else
		{
			$provider = $this->getItemsProvider($parentElementTypeId);
			$methodName = 'getListEx';
			$filter = [
				'@ID' => $parentElementIds,
			];

			if (mb_strtolower($provider) === '\\' . mb_strtolower(\CCrmQuote::class))
			{
				$methodName = 'getList';
				$filter['CHECK_PERMISSIONS'] = 'Y';
			}

			if (class_exists($provider) && method_exists($provider, $methodName))
			{
				$res = $provider::$methodName(
					[],
					$filter,
					false,
					[],
					[
						'ID',
						'TITLE',
					]
				);

				$items = [];
				while ($parent = $res->fetch())
				{
					$parentId = $parent['ID'];
					$url = $this->getUrl($parentId, \CCrmOwnerType::ResolveName($parentElementTypeId));
					$title = HtmlFilter::encode($parent['TITLE']);
					$entityDescription = HtmlFilter::encode(\CCrmOwnerType::GetDescription($parentElementTypeId));
					$items[$parentId] = [
						'id' => $parentId,
						'code' => self::FIELD_PARENT_PREFIX . '_' . $parentElementTypeId,
						'entityDescription' => $entityDescription,
						'title' => $title,
						'url' => $url,
						'value' => '' . $title . '',
					];
				}
				$this->parents[$parentElementTypeId] = $items;
			}
		}
	}
}