• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
  • Класс: CUserTypeManager
  • Вызов: CUserTypeManager::getEntityField
public function getEntityField($arUserField, $fieldName = null, $fieldParameters = array())
{
	if(empty($fieldName))
	{
		$fieldName = $arUserField['FIELD_NAME'];
	}

	if(is_callable(array($arUserField['USER_TYPE']['CLASS_NAME'], 'getEntityField')))
	{
		$field = call_user_func(array($arUserField['USER_TYPE']['CLASS_NAME'], 'getEntityField'), $fieldName, $fieldParameters);
	}
	elseif($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'date')
	{
		$field = new EntityDateField($fieldName, $fieldParameters);
	}
	else
	{
		switch($arUserField['USER_TYPE']['BASE_TYPE'])
		{
			case 'int':
			case 'enum':
			case 'file':
				$field = (new EntityIntegerField($fieldName, $fieldParameters))
					->configureNullable();
				break;
			case 'double':
				$field = (new EntityFloatField($fieldName, $fieldParameters))
					->configureNullable();
				break;
			case 'string':
				$field = (new EntityStringField($fieldName, $fieldParameters))
					->configureNullable();
				break;
			case 'datetime':
				$field = (new EntityDatetimeField($fieldName, $fieldParameters))
					->configureNullable()
					->configureUseTimezone(isset($arUserField['SETTINGS']['USE_TIMEZONE']) && $arUserField['SETTINGS']['USE_TIMEZONE'] == 'Y');
				break;
			default:
				throw new BitrixMainArgumentException(sprintf(
					'Unknown userfield base type `%s`', $arUserField["USER_TYPE"]['BASE_TYPE']
				));
		}
	}

	$ufHandlerClass = $arUserField['USER_TYPE']['CLASS_NAME'];

	if (is_subclass_of($ufHandlerClass, BaseType::class))
	{
		$defaultValue = $ufHandlerClass::getDefaultValue($arUserField);
		$field->configureDefaultValue($defaultValue);
	}

	return $field;
}