• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_usertype.php
  • Класс: \CCrmUserType
  • Вызов: CCrmUserType::AddRestServiceFields
public function AddRestServiceFields(&$arFields)
{
	$arUserFields = $this->GetAbstractFields();
	foreach($arUserFields as $FIELD_NAME => $arUserField)
	{
		$defVal = '';
		if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'employee')
			continue;
		if ($arUserField['USER_TYPE']['BASE_TYPE'] == 'enum')
		{
			$sType = 'enum';
			if (is_callable(array($arUserField['USER_TYPE']['CLASS_NAME'], 'GetList')))
			{
				$rsEnum = call_user_func_array(array($arUserField['USER_TYPE']['CLASS_NAME'], 'GetList'), array($arUserField));
				$arValues = array();
				while($ar = $rsEnum->GetNext())
				{
					$arValues[] = array('ID' => $ar['ID'], 'NAME' => $ar['VALUE']);
				}
			}
		}
		else if ($arUserField['USER_TYPE']['BASE_TYPE'] == 'file')
			$sType = 'file';
		else if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'boolean')
			$sType = 'boolean';
		else if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'double' || $arUserField['USER_TYPE']['USER_TYPE_ID'] == 'integer')
			$sType = 'int';
		else if ($arUserField['USER_TYPE']['BASE_TYPE'] == 'datetime')
		{
			$defVal = $arUserField['SETTINGS']['DEFAULT_VALUE']['VALUE'];
			$sType = 'datetime';
		}
		else if ($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'string')
			$sType = 'string';
		else
			$sType = 'string';

		if (empty($defVal) && isset($arUserField['SETTINGS']['DEFAULT_VALUE']) && !is_array($arUserField['SETTINGS']['DEFAULT_VALUE']))
			$defVal = $arUserField['SETTINGS']['DEFAULT_VALUE'];

		$arField = array('ID' => $FIELD_NAME, 'NAME' => $arUserField['EDIT_FORM_LABEL'], 'TYPE' => $sType, 'DEFAULT' => $defVal, 'REQUIRED' => $arUserField['MANDATORY'] == 'Y', 'MULTIPLE' => $arUserField['MULTIPLE'] == 'Y');

		if ($arUserField['USER_TYPE']['BASE_TYPE'] == 'enum' && is_array($arValues) && count($arValues) > 0)
		{
			$arField['VALUES'] = $arValues;
		}

		$arFields[] = $arField;
	}
}