• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicatecommunicationcriterion.php
  • Класс: Bitrix\Crm\Integrity\DuplicateCommunicationCriterion
  • Вызов: DuplicateCommunicationCriterion::prepareEntityMultifieldValues
static function prepareEntityMultifieldValues($entityTypeID, $entityID, array $options = null)
{
	if(!is_array($options))
	{
		$options = array();
	}

	if(isset($options['invalidateCache']) && $options['invalidateCache'])
	{
		self::invalidateCache($entityTypeID, $entityID);
	}

	if(isset(self::$entityMultiFields[$entityTypeID])
		&& is_array(self::$entityMultiFields[$entityTypeID])
		&& isset(self::$entityMultiFields[$entityTypeID][$entityID])
	)
	{
		return self::$entityMultiFields[$entityTypeID][$entityID];
	}

	if(!isset(self::$entityMultiFields[$entityTypeID]))
	{
		self::$entityMultiFields[$entityTypeID] = array();
	}

	$dbResult = \CCrmFieldMulti::GetListEx(
		array(),
		array(
			'=ENTITY_ID' => \CCrmOwnerType::ResolveName($entityTypeID),
			'=ELEMENT_ID' => $entityID,
			'@TYPE_ID' => CommunicationType::getMultiFieldTypeIDs()
		),
		false,
		false,
		array('TYPE_ID', 'VALUE', 'VALUE_TYPE')
	);

	$results = array();
	if(is_object($dbResult))
	{
		while($fields = $dbResult->Fetch())
		{
			$typeID = isset($fields['TYPE_ID']) ? $fields['TYPE_ID'] : '';
			$value = isset($fields['VALUE']) ? $fields['VALUE'] : '';
			$valueType = isset($fields['VALUE_TYPE']) ? $fields['VALUE_TYPE'] : '';
			if($typeID === '' || $value === '')
			{
				continue;
			}

			if(!isset($results[$typeID]))
			{
				$results[$typeID] = array();
			}
			$results[$typeID][] = array('VALUE'=> $value, 'VALUE_TYPE' => $valueType);
		}
	}
	self::$entityMultiFields[$entityTypeID][$entityID] = $results;
	return $results;
}