- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmRestHelper
- Вызов: CCrmRestHelper::prepareFieldInfos
static function prepareFieldInfos(array &$fieldsInfo)
{
$result = array();
foreach($fieldsInfo as $fieldID => &$fieldInfo)
{
$attrs = $fieldInfo['ATTRIBUTES'] ?? array();
// Skip hidden fields
if(in_array(CCrmFieldInfoAttr::Hidden, $attrs, true))
{
continue;
}
$fieldType = $fieldInfo['TYPE'];
$field = array(
'type' => $fieldType,
'isRequired' => in_array(CCrmFieldInfoAttr::Required, $attrs, true),
'isReadOnly' => in_array(CCrmFieldInfoAttr::ReadOnly, $attrs, true),
'isImmutable' => in_array(CCrmFieldInfoAttr::Immutable, $attrs, true),
'isMultiple' => in_array(CCrmFieldInfoAttr::Multiple, $attrs, true),
'isDynamic' => in_array(CCrmFieldInfoAttr::Dynamic, $attrs, true)
);
if(in_array(CCrmFieldInfoAttr::Deprecated, $attrs, true))
{
$field['isDeprecated'] = true;
}
if($fieldType === 'enumeration')
{
$field['items'] = $fieldInfo['ITEMS'] ?? array();
}
elseif($fieldType === 'crm_status')
{
$field['statusType'] = $fieldInfo['CRM_STATUS_TYPE'] ?? '';
}
elseif ($fieldType === 'product_property')
{
$field['propertyType'] = $fieldInfo['PROPERTY_TYPE'] ?? '';
$field['userType'] = $fieldInfo['USER_TYPE'] ?? '';
$field['title'] = $fieldInfo['NAME'] ?? '';
if ($field['propertyType'] === 'L')
$field['values'] = $fieldInfo['VALUES'] ?? array();
}
elseif ($fieldType === 'recurring_params')
{
$field['definition'] = [];
if (is_array($fieldInfo['FIELDS']))
{
$paramFields = self::prepareFieldInfos($fieldInfo['FIELDS']);
$field['definition'] = is_array($paramFields) ? $paramFields : [];
}
}
if (empty($field['title']))
{
$field['title'] = isset($fieldInfo['CAPTION']) && $fieldInfo['CAPTION'] <> '' ? $fieldInfo['CAPTION'] : $fieldID;
}
if(isset($fieldInfo['LABELS']) && is_array($fieldInfo['LABELS']))
{
$labels = $fieldInfo['LABELS'];
if(isset($labels['LIST']))
{
$field['listLabel'] = $labels['LIST'];
}
if(isset($labels['FORM']))
{
$field['formLabel'] = $labels['FORM'];
}
if(isset($labels['FILTER']))
{
$field['filterLabel'] = $labels['FILTER'];
}
}
if (isset($fieldInfo['SETTINGS']))
{
$field['settings'] = $fieldInfo['SETTINGS'];
}
$result[$fieldID] = &$field;
unset($field);
}
unset($fieldInfo);
return $result;
}