• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Display/Field/CrmField.php
  • Класс: Bitrix\Crm\Service\Display\Field\CrmField
  • Вызов: CrmField::loadLinkedEntities
public function loadLinkedEntities(array &$linkedEntitiesValues, array $linkedEntity): void
{
	$fieldType = $this->getType();

	if (
		isset($linkedEntity[\CCrmOwnerType::LeadName])
		&& !empty($linkedEntity[\CCrmOwnerType::LeadName])
	)
	{
		$linkedEntitiesValues[$fieldType][\CCrmOwnerType::LeadName] = Container::getInstance()
			->getLeadBroker()
			->getBunchByIds($linkedEntity[\CCrmOwnerType::LeadName])
		;
	}

	if (
		isset($linkedEntity[\CCrmOwnerType::ContactName])
		&& !empty($linkedEntity[\CCrmOwnerType::ContactName])
	)
	{
		$linkedEntitiesValues[$fieldType][\CCrmOwnerType::ContactName] = Container::getInstance()
			->getContactBroker()
			->getBunchByIds($linkedEntity[\CCrmOwnerType::ContactName])
		;
	}

	if (
		isset($linkedEntity[\CCrmOwnerType::CompanyName])
		&& !empty($linkedEntity[\CCrmOwnerType::CompanyName])
	)
	{
		$linkedEntitiesValues[$fieldType][\CCrmOwnerType::CompanyName] = Container::getInstance()
			->getCompanyBroker()
			->getBunchByIds($linkedEntity[\CCrmOwnerType::CompanyName])
		;
	}

	if (
		isset($linkedEntity[\CCrmOwnerType::DealName])
		&& !empty($linkedEntity[\CCrmOwnerType::DealName])
	)
	{
		$linkedEntitiesValues[$fieldType][\CCrmOwnerType::DealName] = Container::getInstance()
			->getDealBroker()
			->getBunchByIds($linkedEntity[\CCrmOwnerType::DealName])
		;
	}

	if (
		isset($linkedEntity[\CCrmOwnerType::OrderName])
		&& !empty($linkedEntity[\CCrmOwnerType::OrderName])
	)
	{
		$linkedEntitiesValues[$fieldType][\CCrmOwnerType::OrderName] = Container::getInstance()
			->getOrderBroker()
			->getBunchByIds($linkedEntity[\CCrmOwnerType::OrderName])
		;
	}

	foreach ($linkedEntity as $entityTypeName => $entityIds)
	{
		if (
			in_array($entityTypeName, [
				\CCrmOwnerType::LeadName,
				\CCrmOwnerType::DealName,
				\CCrmOwnerType::ContactName,
				\CCrmOwnerType::CompanyName,
				\CCrmOwnerType::OrderName,
			])
		)
		{
			continue;
		}
		$entityTypeId = \CCrmOwnerType::ResolveID($entityTypeName);
		if ($entityTypeId)
		{
			if (
				!isset($linkedEntitiesValues[$fieldType])
				|| !is_array($linkedEntitiesValues[$fieldType])
			)
			{
				$linkedEntitiesValues[$fieldType] = [];
			}

			$linkedEntitiesValues[$fieldType][$entityTypeName] = Container::getInstance()
				->getDynamicBroker()
				->setEntityTypeId($entityTypeId)
				->getBunchByIds($entityIds)
			;
		}
	}
}