• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/search/contactsearchcontentbuilder.php
  • Класс: Bitrix\Crm\Search\ContactSearchContentBuilder
  • Вызов: ContactSearchContentBuilder::prepareSearchMap
protected function prepareSearchMap(array $fields, array $options = null)
{
	$map = new SearchMap();

	$entityID = isset($fields['ID']) ? (int)$fields['ID'] : 0;
	if($entityID <= 0)
	{
		return $map;
	}

	$isShortIndex = ($options['isShortIndex'] ?? false);
	if(!$isShortIndex)
	{
		$map->add($entityID);
	}

	$lastName = isset($fields['LAST_NAME']) ? $fields['LAST_NAME'] : '';
	if($lastName !== '')
	{
		$map->addText($lastName);
		$map->addText(SearchEnvironment::prepareSearchContent($lastName));

		$customerNumber = $this->parseCustomerNumber($lastName, \CCrmContact::GetDefaultTitleTemplate());
		if($customerNumber != $entityID)
		{
			$map->addTextFragments($customerNumber);
		}
	}

	$map->addField($fields, 'NAME');

	if(!$isShortIndex)
	{
		$map->addField($fields, 'SECOND_NAME');
	}

	if(isset($fields['ASSIGNED_BY_ID']) && !$isShortIndex)
	{
		$map->addUserByID($fields['ASSIGNED_BY_ID']);
	}

	$multiFields = $this->getEntityMultiFields($entityID);
	if(isset($multiFields[\CCrmFieldMulti::PHONE]))
	{
		foreach($multiFields[\CCrmFieldMulti::PHONE] as $multiField)
		{
			if(isset($multiField['VALUE']))
			{
				$map->addPhone($multiField['VALUE']);
			}
		}
	}
	if(isset($multiFields[\CCrmFieldMulti::EMAIL]))
	{
		foreach($multiFields[\CCrmFieldMulti::EMAIL] as $multiField)
		{
			if(isset($multiField['VALUE']))
			{
				$map->addEmail($multiField['VALUE']);
			}
		}
	}

	if(isset($fields['TYPE_ID']) && !$isShortIndex)
	{
		$map->addStatus('CONTACT_TYPE', $fields['TYPE_ID']);
	}

	if(isset($fields['COMMENTS']) && !$isShortIndex)
	{
		$map->addHtml($fields['COMMENTS'], 1024);
	}

	//region Source
	if(isset($fields['SOURCE_ID']) && !$isShortIndex)
	{
		$map->addStatus('SOURCE', $fields['SOURCE_ID']);
	}

	if(isset($fields['SOURCE_DESCRIPTION']) && !$isShortIndex)
	{
		$map->addText($fields['SOURCE_DESCRIPTION'], 1024);
	}
	//endregion

	//region UserFields
	if (!$isShortIndex)
	{
		foreach($this->getUserFields($entityID) as $userField)
		{
			$map->addUserField($userField);
		}
	}
	//endregion

	return $map;
}