• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_usertype.php
  • Класс: \CCrmUserType
  • Вызов: CCrmUserType::PrepareEnumerationInfos
static function PrepareEnumerationInfos(array $userFields)
{
	$results = array();
	$map = array();
	$callbacks = array();
	foreach($userFields as $userField)
	{
		if(!isset($userField['USER_TYPE']['CLASS_NAME']))
		{
			continue;
		}

		$className = $userField['USER_TYPE']['CLASS_NAME'];
		if(!isset($callbacks[$className]))
		{
			$callbacks[$className] = array();
		}

		$callbacks[$className][] = $userField;
		$map[$userField['ID']] = $userField['FIELD_NAME'];
	}

	foreach($callbacks as $className => $userFields)
	{
		$enumResult = call_user_func_array(
			array($className, 'GetListMultiple'),
			array($userFields)
		);
		while($enum = $enumResult->GetNext())
		{
			if(!isset($enum['USER_FIELD_ID']))
			{
				continue;
			}

			$fieldID = $enum['USER_FIELD_ID'];
			if(!isset($map[$fieldID]))
			{
				continue;
			}

			$fieldName = $map[$fieldID];
			if(!isset($results[$fieldName]))
			{
				$results[$fieldName] = array();
			}

			$results[$fieldName][] = array('ID' => $enum['~ID'], 'VALUE' => $enum['~VALUE']);
		}
	}
	return $results;
}