• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/search/dealsearchcontentbuilder.php
  • Класс: Bitrix\Crm\Search\DealSearchContentBuilder
  • Вызов: DealSearchContentBuilder::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, \CCrmDeal::GetDefaultTitleTemplate());
		if($customerNumber != $entityID)
		{
			$map->addTextFragments($customerNumber);
		}
	}

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

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

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

	//region Company
	$companyID = isset($fields['COMPANY_ID']) ? (int)$fields['COMPANY_ID'] : 0;
	if($companyID > 0)
	{
		$map->add(
			\CCrmOwnerType::GetCaption(\CCrmOwnerType::Company, $companyID, false)
		);

		$map->addEntityMultiFields(
			\CCrmOwnerType::Company,
			$companyID,
			array(\CCrmFieldMulti::PHONE, \CCrmFieldMulti::EMAIL)
		);
	}
	//endregion

	//region Contacts
	$contactIDs = DealContactTable::getDealContactIDs($entityID);
	foreach($contactIDs as $contactID)
	{
		$map->add(
			\CCrmOwnerType::GetCaption(\CCrmOwnerType::Contact, $contactID, false)
		);

		$map->addEntityMultiFields(
			\CCrmOwnerType::Contact,
			$contactID,
			array(\CCrmFieldMulti::PHONE, \CCrmFieldMulti::EMAIL)
		);
	}
	//endregion

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

		if(isset($fields['STAGE_ID']))
		{
			$map->add(
				Crm\Category\DealCategory::getStageName(
					$fields['STAGE_ID'],
					isset($fields['CATEGORY_ID']) ? $fields['CATEGORY_ID'] : -1
				)
			);
		}

		if(isset($fields['BEGINDATE']))
		{
			$map->add($fields['BEGINDATE']);
		}

		if(isset($fields['CLOSEDATE']))
		{
			$map->add($fields['CLOSEDATE']);
		}

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

		//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 UserFields
		foreach($this->getUserFields($entityID) as $userField)
		{
			$map->addUserField($userField);
		}
		//endregion
	}

	return $map;
}