• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/search/leadsearchcontentbuilder.php
  • Класс: Bitrix\Crm\Search\LeadSearchContentBuilder
  • Вызов: LeadSearchContentBuilder::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);
	}

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

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

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

	if (!$isShortIndex)
	{
		$map->addField($fields, 'COMPANY_TITLE');
		$map->addField($fields, 'OPPORTUNITY');
		$map->add(
			\CCrmCurrency::GetCurrencyName(
				isset($fields['CURRENCY_ID']) ? $fields['CURRENCY_ID'] : ''
			)
		);

		if(isset($fields['ASSIGNED_BY_ID']))
		{
			$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 (!$isShortIndex)
	{
		//region Status
		if(isset($fields['STATUS_ID']))
		{
			$map->addStatus('STATUS', $fields['STATUS_ID']);
		}

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

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

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

		//region Address
            $address = preg_replace(
                '/[,.]/', '',
                AddressFormatter::getSingleInstance()->formatTextComma(
                    LeadAddress::mapEntityFields($fields)
                )
            );
		if($address !== '')
		{
			$map->add($address);
		}
		//endregion

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

		if(isset($fields['IS_RETURN_CUSTOMER']) && $fields['IS_RETURN_CUSTOMER'] === 'Y')
		{
			$map->add(\CCrmLead::GetFieldCaption('IS_RETURN_CUSTOMER'));
		}

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

	return $map;
}