• Модуль: report
  • Путь к файлу: ~/bitrix/modules/report/classes/general/report_helper.php
  • Класс: CReportHelper
  • Вызов: CReportHelper::getFieldDataType
static function getFieldDataType($field)
{
	static::prepareUFInfo();

	/** @var EntityField $field*/
	$dataType = $field->getDataType();

	// until the date type is not supported
	if ($dataType === 'date')
		$dataType = 'datetime';

	$ufInfo = null;
	if ($field instanceof EntityExpressionField && is_array(self::$ufInfo) && count(self::$ufInfo) > 0)
	{
		$ufKey = $field->getName();
		$ufId = $field->getEntity()->getUFId();
		if (is_string($ufId) && !empty($ufId) && array_key_exists($ufId, self::$ufInfo)
			&& is_array(self::$ufInfo[$ufId])
			&& array_key_exists($ufKey, self::$ufInfo[$ufId]))
		{
			$ufInfo = self::$ufInfo[$ufId][$ufKey];
		}
		unset($ufKey);
	}

	if (is_array($ufInfo) && isset($ufInfo['USER_TYPE_ID']))
	{
		switch ($ufInfo['USER_TYPE_ID'])
		{
			case 'integer':
				$dataType = 'integer';
				break;
			case 'double':
				$dataType = 'float';
				break;
			case 'boolean':
				$dataType = 'boolean';
				break;
			case 'date':
				$dataType = 'datetime';
				break;
			case 'datetime':
				$dataType = 'datetime';
				break;
			case 'enumeration':
				$dataType = 'enum';
				break;
			case 'employee':
				$dataType = 'employee';
				break;
			case 'file':
				$dataType = 'file';
				break;
			case 'disk_file':
				$dataType = 'disk_file';
				break;
			case 'crm':
				$dataType = 'crm';
				break;
			case 'crm_status':
				$dataType = 'crm_status';
				break;
			case 'iblock_element':
				$dataType = 'iblock_element';
				break;
			case 'iblock_section':
				$dataType = 'iblock_section';
				break;
			case 'money':
				$dataType = 'money';
				break;
		}
	}

	return $dataType;
}