• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/matcher/requisitematcher.php
  • Класс: Bitrix\Crm\Order\Matcher\RequisiteMatcher
  • Вызов: RequisiteMatcher::getEntitiesToMatch
protected function getEntitiesToMatch()
{
	$requisites = [];

	$requisiteId = $this->getEntityId();

	foreach ($this->properties as $property)
	{
		$fieldCode = $property['CRM_FIELD_CODE'];
		$settings = $property['SETTINGS'];

		if (!empty($settings['RQ_NAME']))
		{
			$requisiteHash = $this->getEntityHash($settings);

			if (!isset($requisites[$requisiteHash]) || !is_array($requisites[$requisiteHash]))
			{
				$requisites[$requisiteHash] = [
					'NAME' => $settings['RQ_NAME'],
					'PRESET_ID' => $settings['RQ_PRESET_ID'],
					'ENTITY_ID' => $requisiteId,
					'ENTITY_TYPE_ID' => $property['CRM_ENTITY_TYPE']
				];
			}

			if ($fieldCode === EntityRequisite::ADDRESS)
			{
				if ($settings['RQ_ADDR_CODE'] === 'LOCATION')
				{
					if (!is_array($requisites[$requisiteHash][$fieldCode][$settings['RQ_ADDR_TYPE']]))
					{
						$requisites[$requisiteHash][$fieldCode][$settings['RQ_ADDR_TYPE']] = [];
					}

					$requisites[$requisiteHash][$fieldCode][$settings['RQ_ADDR_TYPE']] += $this->parseLocationAddress($property['VALUE']);
				}
				elseif (!empty($property['VALUE']))
				{
					$requisites[$requisiteHash][$fieldCode][$settings['RQ_ADDR_TYPE']][$settings['RQ_ADDR_CODE']] = $property['VALUE'];
				}
			}
			else
			{
				$requisites[$requisiteHash][$fieldCode] = $property['VALUE'];
			}
		}
	}

	return array_values($requisites);
}