CCrmEntitySelectorHelper::PrepareEntityInfo

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmEntitySelectorHelper
  4. PrepareEntityInfo
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_entity_selector_helper.php
  • Класс: \CCrmEntitySelectorHelper
  • Вызов: CCrmEntitySelectorHelper::PrepareEntityInfo
static function PrepareEntityInfo($entityTypeName, $entityID, $options = array())
{
	$enableSlider = \Bitrix\Crm\Settings\LayoutSettings::getCurrent()->isSliderEnabled();

	$entityTypeName = mb_strtoupper(strval($entityTypeName));
	$entityID = intval($entityID);
	if(!is_array($options))
	{
		$options = array();
	}

	$userPermissions = isset($options['USER_PERMISSIONS']) && $options['USER_PERMISSIONS'] instanceof \CCrmPerms
		? $options['USER_PERMISSIONS'] : \CCrmPerms::GetCurrentUserPermissions();

	$bEntityEditorFormat = (
		isset($options['ENTITY_EDITOR_FORMAT'])
		&& ($options['ENTITY_EDITOR_FORMAT'] === true || mb_strtoupper($options['ENTITY_EDITOR_FORMAT']) === 'Y')
	);
	$bEntityPrefixEnabled = (
		isset($options['ENTITY_PREFIX_ENABLED'])
		&& ($options['ENTITY_PREFIX_ENABLED'] === true || mb_strtoupper($options['ENTITY_PREFIX_ENABLED']) === 'Y')
	);

	$isHidden = (
		isset($options['IS_HIDDEN'])
		&& ($options['IS_HIDDEN'] === true || $options['IS_HIDDEN'] === 'Y')
	);

	$largeImages = (
		isset($options['LARGE_IMAGES'])
		&& ($options['LARGE_IMAGES'] === true || $options['LARGE_IMAGES'] === 'Y')
	);

	$entityTypeId = \CCrmOwnerType::ResolveID($entityTypeName);
	$serviceUserPermissions = Container::getInstance()->getUserPermissions($userPermissions->GetUserID());
	$isMyCompany = (int)$entityTypeId === CCrmOwnerType::Company && CCrmCompany::isMyCompany((int)$entityID);
	if (!$isHidden)
	{
		if ($entityTypeId > 0)
		{
			$isHidden = $isMyCompany
				? !$serviceUserPermissions->getMyCompanyPermissions()->canReadBaseFields((int)$entityID)
				: !$serviceUserPermissions->checkReadPermissions($entityTypeId, $entityID)
			;
		}
	}

	if($isHidden)
	{
		$requireMultifields = $requireBindings = $requireRequisiteData = $requireEditRequisiteData =  false;
	}
	else
	{
		$requireMultifields = !isset($options['REQUIRE_MULTIFIELDS']) || $options['REQUIRE_MULTIFIELDS'] === true;
		$requireBindings = !isset($options['REQUIRE_BINDINGS']) || $options['REQUIRE_BINDINGS'] === true;

		$requireRequisiteData = (
			isset($options['REQUIRE_REQUISITE_DATA'])
			&& ($options['REQUIRE_REQUISITE_DATA'] === true || $options['REQUIRE_REQUISITE_DATA'] === 'Y')
		);

		$requireEditRequisiteData = (
			isset($options['REQUIRE_EDIT_REQUISITE_DATA'])
			&& ($options['REQUIRE_EDIT_REQUISITE_DATA'] === true || $options['REQUIRE_EDIT_REQUISITE_DATA'] === 'Y')
		);
	}

	$normalizeMultifields = (
		isset($options['NORMALIZE_MULTIFIELDS'])
		&& ($options['NORMALIZE_MULTIFIELDS'] === true || $options['NORMALIZE_MULTIFIELDS'] === 'Y')
	);

	$result = array();
	if ($bEntityEditorFormat)
	{
		$result['id'] = $entityID;
		$result['type'] = mb_strtolower($entityTypeName);
		$result['typeName'] = $entityTypeName;
		$result['typeNameTitle'] = \CCrmOwnerType::GetDescription($entityTypeId);
		$result['place'] = $result['type'];
		$result['hidden'] = $isHidden;
	}

	$titleKey = $bEntityEditorFormat ? 'title' : 'TITLE';
	$result[$titleKey] = "{$entityTypeName}_{$entityID}";

	$urlKey = $bEntityEditorFormat ? 'url' : 'URL';
	$result[$urlKey] = '';

	$descKey = $bEntityEditorFormat ? 'desc' : 'DESC';
	$result[$descKey] = '';

	$imageKey = $bEntityEditorFormat ? 'image' : 'IMAGE';
	$largeImageKey = $bEntityEditorFormat ? 'largeImage' : 'LARGE_IMAGE';
	$result[$imageKey] = '';

	if($entityTypeName === '' || $entityID <= 0)
	{
		return $result;
	}

	$advancedInfoKey = $bEntityEditorFormat ? 'advancedInfo' : 'ADVANCED_INFO';
	$contactTypeKey = $bEntityEditorFormat ? 'contactType' : 'CONTACT_TYPE';
	$contactTypeIdKey = $bEntityEditorFormat ? 'id' : 'ID';
	$contactTypeNameKey = $bEntityEditorFormat ? 'name' : 'NAME';
	$multiFieldsKey = $bEntityEditorFormat ? 'multiFields' : 'MULTI_FIELDS';
	$requisiteDataKey = $bEntityEditorFormat ? 'requisiteData' : 'REQUISITE_DATA';
	$bindingDataKey = $bEntityEditorFormat ? 'bindings' : 'BINDINGS';
	$permissionsKey = $bEntityEditorFormat ? 'permissions' : 'PERMISSIONS';
	$canUpdateKey = $bEntityEditorFormat ? 'canUpdate' : 'CAN_UPDATE';

	if ($bEntityEditorFormat && $bEntityPrefixEnabled)
	{
		$result['id'] = static::getIdWithEntityPrefix($result['id'], $entityTypeName);
	}
	if ($isHidden)
	{
		$result[$titleKey] = static::getHiddenTitle($entityTypeName);
		$result[$advancedInfoKey]['hasEditRequisiteData'] = true;

		return $result;
	}
	$result[$permissionsKey] = [
		$canUpdateKey => $isMyCompany
			? $serviceUserPermissions->getMyCompanyPermissions()->canUpdateByOwnerEntity(
				(int)($options['ownerEntityTypeId'] ?? $entityTypeId),
				(int)($options['ownerEntityId'] ?? $entityID)
			)
			: $serviceUserPermissions->checkUpdatePermissions($entityTypeId, $entityID),
	];
	if($entityTypeName === 'CONTACT')
	{
		$arImages = array();
		$arLargeImages = array();
		$contactTypes = CCrmStatus::GetStatusList('CONTACT_TYPE');

		$obRes = CCrmContact::GetListEx(
			array(),
			array('=ID'=> $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'POST', 'PHOTO', 'TYPE_ID')
		);
		if($arRes = $obRes->Fetch())
		{
			$photoID = intval($arRes['PHOTO']);
			if ($photoID > 0 && !isset($arImages[$photoID]))
			{
				if ($largeImages)
				{
					// the same size and resize type as in `crm.contact.details` (do not multiply images)
					$arImages[$photoID] = $arLargeImages[$photoID] = CFile::ResizeImageGet(
						$photoID,
						['width' => 200, 'height' => 200],
						BX_RESIZE_IMAGE_EXACT,
						false,
						false,
						true
					);
				}
				else
				{
					$arImages[$photoID] = CFile::ResizeImageGet(
						$photoID,
						['width' => 25, 'height' => 25],
						BX_RESIZE_IMAGE_EXACT
					);
					$arLargeImages[$photoID] = CFile::ResizeImageGet(
						$photoID,
						['width' => 38, 'height' => 38],
						BX_RESIZE_IMAGE_EXACT
					);
				}
			}
			$result[$titleKey] = CCrmContact::PrepareFormattedName(
				array(
					'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
					'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
					'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : '',
					'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : ''
				),
				isset($options['NAME_TEMPLATE']) ? $options['NAME_TEMPLATE'] : ''
			);

			$result[$urlKey] = CComponentEngine::MakePathFromTemplate(
				COption::GetOptionString('crm', $enableSlider ? 'path_to_contact_details' : 'path_to_contact_show'),
				array(
					'contact_id' => $entityID
				)
			);

			$result[$descKey] = isset($arRes['POST']) && $arRes['POST'] !== ''
				? $arRes['POST']
				: (isset($arRes['COMPANY_TITLE']) ? $arRes['COMPANY_TITLE'] : '');

			$result[$imageKey] = isset($arImages[$photoID]['src']) ? $arImages[$photoID]['src'] : '';
			$result[$largeImageKey] = isset($arLargeImages[$photoID]['src']) ? $arLargeImages[$photoID]['src'] : '';

			// advanced info
			$advancedInfo = array();
			if (isset($arRes['TYPE_ID']) && $arRes['TYPE_ID'] != '' && isset($contactTypes[$arRes['TYPE_ID']]))
			{
				$advancedInfo[$contactTypeKey] = array(
					$contactTypeIdKey => $arRes['TYPE_ID'],
					$contactTypeNameKey => $contactTypes[$arRes['TYPE_ID']]
				);
			}
			if (!empty($advancedInfo))
				$result[$advancedInfoKey] = $advancedInfo;

			if ($requireMultifields)
			{
				$phoneCountryList = static::getPhoneCountryList('CONTACT', $entityID);

				// advanced info - phone number, e-mail
				$obRes = CCrmFieldMulti::GetList(['ID' => 'asc'], ['ENTITY_ID' => 'CONTACT', 'ELEMENT_ID' => $entityID]);
				while ($arRes = $obRes->Fetch())
				{
					if (
						$arRes['TYPE_ID'] === 'PHONE'
						|| $arRes['TYPE_ID'] === 'EMAIL'
						|| ($arRes['TYPE_ID'] === 'IM' && OpenLineManager::isImOpenLinesValue($arRes['VALUE']))
					)
					{
						$formattedValue = $arRes['TYPE_ID'] === 'PHONE'
							? \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($arRes['VALUE'])->format()
							: $arRes['VALUE'];

						$multiFieldId = $normalizeMultifields ? $arRes['ID'] : $entityID;

						if (!isset($result[$advancedInfoKey]) || !is_array($result[$advancedInfoKey]))
						{
							$result[$advancedInfoKey] = [];
						}

						if (
							!isset($result[$advancedInfoKey][$multiFieldsKey])
							|| !is_array($result[$advancedInfoKey][$multiFieldsKey])
						)
						{
							$result[$advancedInfoKey][$multiFieldsKey] = [];
						}

						$result[$advancedInfoKey][$multiFieldsKey][] = [
							'ID' => $multiFieldId,
							'ENTITY_ID' => $normalizeMultifields ? $entityID : $arRes['ID'],
							'ENTITY_TYPE_NAME' => $entityTypeName,
							'TYPE_ID' => $arRes['TYPE_ID'],
							'VALUE_TYPE' => $arRes['VALUE_TYPE'],
							'VALUE' => $arRes['VALUE'],
							'VALUE_EXTRA' => [
								'COUNTRY_CODE' => $phoneCountryList[$multiFieldId] ?? ''
							],
							'VALUE_FORMATTED' => $formattedValue,
							'COMPLEX_ID' => $arRes['COMPLEX_ID'],
							'COMPLEX_NAME' => \CCrmFieldMulti::GetEntityNameByComplex($arRes['COMPLEX_ID'], false),
							'TITLE' => OpenLineManager::isImOpenLinesValue($arRes['VALUE']) ? OpenLineManager::getOpenLineTitle($arRes['VALUE']) : '',
						];
					}
				}
			}

			if($requireBindings)
			{
				$result[$advancedInfoKey][$bindingDataKey][CCrmOwnerType::CompanyName] =
					\Bitrix\Crm\Binding\ContactCompanyTable::getContactCompanyIDs($entityID);
			}

			// requisites
			if ($requireRequisiteData)
			{
				$requisiteDataParams =
					$requireEditRequisiteData ?
						[
							'VIEW_FORMATTED' => true,
							'ADDRESS_AS_JSON' => true,
						]
						:
						[
							'VIEW_DATA_ONLY' => true
						];

				$result[$advancedInfoKey][$requisiteDataKey] = self::PrepareRequisiteData(
					CCrmOwnerType::Contact, $entityID, $requisiteDataParams
				);
			}
			$result[$advancedInfoKey]['hasEditRequisiteData'] = $requireEditRequisiteData;
		}
		else
		{
			$result['notFound'] = true;
		}
	}
	elseif($entityTypeName === 'COMPANY')
	{
		$arImages = array();
		$arLargeImages = array();

		$arCompanyTypeList = CCrmStatus::GetStatusList('COMPANY_TYPE');
		$arCompanyIndustryList = CCrmStatus::GetStatusList('INDUSTRY');

		$obRes = CCrmCompany::GetListEx(
			array(),
			array('=ID'=> $entityID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			[
				'ID',
				'TITLE',
				'COMPANY_TYPE',
				'INDUSTRY',
				'LOGO',
			]
		);

		if ($arRes = $obRes->fetch())
		{
			$result[$titleKey] = $arRes['TITLE'];

			$result[$urlKey] = CComponentEngine::MakePathFromTemplate(
				COption::GetOptionString('crm', $enableSlider ? 'path_to_company_details' : 'path_to_company_show'),
				array(
					'company_id' => $entityID
				)
			);

			$category = Container::getInstance()->getFactory(CCrmOwnerType::Company)
				->getItemCategory((int)$arRes['ID']);
			$categoryDependentDisabledFields = $category ? $category->getDisabledFieldNames() : [];

			$arDesc = [];
			if (
				isset($arCompanyTypeList[$arRes['COMPANY_TYPE']])
				&& !in_array(Item::FIELD_NAME_TYPE_ID, $categoryDependentDisabledFields, true)
			)
			{
				$arDesc[] = $arCompanyTypeList[$arRes['COMPANY_TYPE']];
			}

			if (
				isset($arCompanyIndustryList[$arRes['INDUSTRY']])
				&& !in_array(Company::FIELD_NAME_INDUSTRY, $categoryDependentDisabledFields, true)
			)
			{
				$arDesc[] = $arCompanyIndustryList[$arRes['INDUSTRY']];
			}

			$result[$descKey] = implode(', ', $arDesc);

			$logoID = intval($arRes['LOGO']);
			if ($logoID > 0 && !isset($arImages[$logoID]))
			{
				if ($largeImages)
				{
					// the same size and resize type as in `crm.company.details` (do not multiply images)
					$arImages[$logoID] = $arLargeImages[$logoID] = CFile::ResizeImageGet(
						$logoID,
						['width' => 300, 'height' => 300],
						false,
						false,
						true
					);
				}
				else
				{
					$arImages[$logoID] = CFile::ResizeImageGet(
						$logoID,
						['width' => 25, 'height' => 25],
						BX_RESIZE_IMAGE_EXACT
					);
					$arLargeImages[$logoID] = CFile::ResizeImageGet(
						$logoID,
						['width' => 38, 'height' => 38],
						BX_RESIZE_IMAGE_EXACT
					);
				}
			}
			$result[$imageKey] = isset($arImages[$logoID]['src']) ? $arImages[$logoID]['src'] : '';
			$result[$largeImageKey] = isset($arLargeImages[$logoID]['src']) ? $arLargeImages[$logoID]['src'] : '';

			if ($requireMultifields)
			{
				$phoneCountryList = static::getPhoneCountryList('COMPANY', $entityID);

				// advanced info - phone number, e-mail
				$obRes = CCrmFieldMulti::GetList(['ID' => 'asc'], ['ENTITY_ID' => 'COMPANY', 'ELEMENT_ID' => $entityID]);
				while ($arRes = $obRes->Fetch())
				{
					if ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')
					{
						$formattedValue = $arRes['TYPE_ID'] === 'PHONE'
							? \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($arRes['VALUE'])->format()
							: $arRes['VALUE'];

						$multiFieldId = $normalizeMultifields ? $arRes['ID'] : $entityID;

						if (!isset($result[$advancedInfoKey]) || !is_array($result[$advancedInfoKey]))
						{
							$result[$advancedInfoKey] = [];
						}

						if (
							!isset($result[$advancedInfoKey][$multiFieldsKey])
							|| !is_array($result[$advancedInfoKey][$multiFieldsKey])
						)
						{
							$result[$advancedInfoKey][$multiFieldsKey] = [];
						}

						$result[$advancedInfoKey][$multiFieldsKey][] = [
							'ID' => $multiFieldId,
							'ENTITY_ID' => $normalizeMultifields ? $entityID : $arRes['ID'],
							'ENTITY_TYPE_NAME' => $entityTypeName,
							'TYPE_ID' => $arRes['TYPE_ID'],
							'VALUE_TYPE' => $arRes['VALUE_TYPE'],
							'VALUE' => $arRes['VALUE'],
							'VALUE_EXTRA' => [
								'COUNTRY_CODE' => $phoneCountryList[$multiFieldId] ?? ''
							],
							'VALUE_FORMATTED' => $formattedValue,
							'COMPLEX_ID' => $arRes['COMPLEX_ID'],
							'COMPLEX_NAME' => \CCrmFieldMulti::GetEntityNameByComplex($arRes['COMPLEX_ID'], false)
						];
					}
				}
			}
		}
		else
		{
			$result['notFound'] = true;
		}

		// requisites
		if ($requireRequisiteData)
		{
			$requisiteDataParams =
				$requireEditRequisiteData ?
				[
					'VIEW_FORMATTED' => true,
					'ADDRESS_AS_JSON' => true,
				]
				:
				[
					'VIEW_DATA_ONLY' => true
				];

			$result[$advancedInfoKey][$requisiteDataKey] = self::PrepareRequisiteData(
				CCrmOwnerType::Company, $entityID, $requisiteDataParams
			);
		}
		$result[$advancedInfoKey]['hasEditRequisiteData'] = $requireEditRequisiteData;
	}
	elseif($entityTypeName === 'LEAD')
	{
		$obRes = CCrmLead::GetListEx(
			array(),
			array('=ID'=> $entityID),
			false,
			false,
			array('TITLE', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME')
		);
		if($arRes = $obRes->Fetch())
		{
			$result[$titleKey] = isset($arRes['TITLE']) ? $arRes['TITLE'] : '';
			if($result[$titleKey] === '')
			{
				$result[$titleKey] = CCrmLead::PrepareFormattedName(
					array(
						'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
						'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
						'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : '',
						'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : ''
					),
					isset($options['NAME_TEMPLATE']) ? $options['NAME_TEMPLATE'] : ''
				);
			}

			$result[$urlKey] = CComponentEngine::MakePathFromTemplate(
				COption::GetOptionString('crm', $enableSlider ? 'path_to_lead_details' : 'path_to_lead_show'),
				array(
					'lead_id' => $entityID
				)
			);

			$result[$descKey] = CCrmLead::PrepareFormattedName(
				array(
					'HONORIFIC' => isset($arRes['HONORIFIC']) ? $arRes['HONORIFIC'] : '',
					'NAME' => isset($arRes['NAME']) ? $arRes['NAME'] : '',
					'SECOND_NAME' => isset($arRes['SECOND_NAME']) ? $arRes['SECOND_NAME'] : '',
					'LAST_NAME' => isset($arRes['LAST_NAME']) ? $arRes['LAST_NAME'] : ''
				)
			);

			if ($requireMultifields)
			{
				$phoneCountryList = static::getPhoneCountryList('LEAD', $entityID);

				// advanced info - phone number, e-mail
				$obRes = CCrmFieldMulti::GetList(['ID' => 'asc'], ['ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $entityID]);
				while ($arRes = $obRes->Fetch())
				{
					if ($arRes['TYPE_ID'] === 'PHONE' || $arRes['TYPE_ID'] === 'EMAIL')
					{
						$formattedValue = $arRes['TYPE_ID'] === 'PHONE'
							? \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($arRes['VALUE'])->format()
							: $arRes['VALUE'];

						$multiFieldId = $normalizeMultifields ? $arRes['ID'] : $entityID;

						if (!isset($result[$advancedInfoKey]) || !is_array($result[$advancedInfoKey]))
						{
							$result[$advancedInfoKey] = [];
						}

						if (
							!isset($result[$advancedInfoKey][$multiFieldsKey])
							|| !is_array($result[$advancedInfoKey][$multiFieldsKey])
						)
						{
							$result[$advancedInfoKey][$multiFieldsKey] = [];
						}

						$result[$advancedInfoKey][$multiFieldsKey][] = [
							'ID' => $multiFieldId,
							'ENTITY_ID' => $normalizeMultifields ? $entityID : $arRes['ID'],
							'ENTITY_TYPE_NAME' => $entityTypeName,
							'TYPE_ID' => $arRes['TYPE_ID'],
							'VALUE_TYPE' => $arRes['VALUE_TYPE'],
							'VALUE' => $arRes['VALUE'],
							'VALUE_EXTRA' => [
								'COUNTRY_CODE' => $phoneCountryList[$multiFieldId] ?? ''
							],
							'VALUE_FORMATTED' => $formattedValue,
							'COMPLEX_ID' => $arRes['COMPLEX_ID'],
							'COMPLEX_NAME' => \CCrmFieldMulti::GetEntityNameByComplex($arRes['COMPLEX_ID'], false)
						];
					}
				}
			}
		}
		else
		{
			$result['notFound'] = true;
		}
	}
	elseif($entityTypeName === 'DEAL')
	{
		$obRes = CCrmDeal::GetListEx(
			array(),
			array('=ID'=> $entityID),
			false,
			false,
			array('TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME')
		);
		if($arRes = $obRes->Fetch())
		{
			$result[$titleKey] = $arRes['TITLE'];

			$result[$urlKey] = CComponentEngine::MakePathFromTemplate(
				COption::GetOptionString('crm', $enableSlider ? 'path_to_deal_details' : 'path_to_deal_show'),
				array(
					'deal_id' => $entityID
				)
			);

			$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
			$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').
				$arRes['CONTACT_FULL_NAME'];
			$result[$descKey] = $clientTitle;
		}
		else
		{
			$result['notFound'] = true;
		}
	}
	elseif($entityTypeName === 'QUOTE')
	{
		$obRes = CCrmQuote::GetList(
			array(), array('=ID'=> $entityID), false, false,
			array('QUOTE_NUMBER', 'TITLE', 'COMPANY_TITLE', 'CONTACT_FULL_NAME', 'BEGINDATE')
		);
		if($arRes = $obRes->Fetch())
		{
			$result[$titleKey] = \Bitrix\Crm\Item\Quote::getTitlePlaceholderFromData($arRes);
			$result[$urlKey] = Container::getInstance()->getRouter()->getItemDetailUrl(\CCrmOwnerType::Quote, $entityID);

			$clientTitle = (!empty($arRes['COMPANY_TITLE'])) ? $arRes['COMPANY_TITLE'] : '';
			$clientTitle .= (($clientTitle !== '' && !empty($arRes['CONTACT_FULL_NAME'])) ? ', ' : '').$arRes['CONTACT_FULL_NAME'];
			$result[$descKey] = $clientTitle;
		}
		else
		{
			$result['notFound'] = true;
		}
	}
	elseif($entityTypeName === 'ORDER')
	{
		$order = Order::getList([
			'select' => ['ID', 'ACCOUNT_NUMBER'],
			'filter' => [
				'=ID'=> $entityID,
			],
		])->fetchRaw();

		if ($order)
		{
			$result[$titleKey] = Loc::getMessage(
				'CRM_ENT_SEL_HLP_ORDER_SUMMARY',
				[
					'#ORDER_NUMBER#' => (
						isset($order['ACCOUNT_NUMBER'])
						? htmlspecialcharsbx($order['ACCOUNT_NUMBER'])
						: $order['ID']
					),
				]
			);

			$result[$urlKey] = Service\Sale\EntityLinkBuilder\EntityLinkBuilder::getInstance()
				->getOrderDetailsLink($entityID);
		}
		else
		{
			$result['notFound'] = true;
		}
	}
	elseif(\CCrmOwnerType::isUseFactoryBasedApproach($entityTypeId))
	{
		$factory = Container::getInstance()->getFactory($entityTypeId);
		if (!$factory)
		{
			return $result;
		}

		$item = $factory->getItem($entityID);

		if (!$item)
		{
			$result['notFound'] = true;
			return $result;
		}

		$result[$titleKey] = $item->getHeading();

		$result[$urlKey] = Container::getInstance()
			->getRouter()
			->getItemDetailUrl($entityTypeId, $entityID)
		;
	}

	return $result;
}

Добавить комментарий