- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/bizproc/document/item.php
- Класс: Bitrix\Crm\Integration\BizProc\Document\Item
- Вызов: Item::getEntityFields
static function getEntityFields($entityTypeId)
{
$factory = Container::getInstance()->getFactory($entityTypeId);
if (is_null($factory))
{
throw new \Exception(Loc::getMessage('CRM_BP_DOCUMENT_ITEM_ENTITY_TYPE_ERROR'));
}
$entityFields = static::getVirtualFields();
foreach ($factory->getFieldsInfo() as $fieldId => $field)
{
if (!isset($field['TYPE']))
{
continue;
}
$fieldId = $factory->getEntityFieldNameByMap($fieldId);
$editable =
!\CCrmFieldInfoAttr::isFieldHasAttribute($field, \CCrmFieldInfoAttr::ReadOnly)
&& !\CCrmFieldInfoAttr::isFieldHasAttribute($field, \CCrmFieldInfoAttr::Immutable)
&& static::isEditableField($field)
;
$required = \CCrmFieldInfoAttr::isFieldHasAttribute($field, \CCrmFieldInfoAttr::Required);
$multiple = \CCrmFieldInfoAttr::isFieldHasAttribute($field, \CCrmFieldInfoAttr::Multiple);
$singleEntityField = [
'Name' => static::getFieldName($factory, $fieldId),
'Type' => static::resolveBPType($field['TYPE']),
'Options' => static::getFieldOptions($field, $factory),
'Settings' => static::getFieldSettings($field, $factory),
'Editable' => $editable,
'Required' => $required,
'Multiple' => $multiple,
];
if (
$field['TYPE'] === Crm\Field::TYPE_TEXT
&& isset($field['VALUE_TYPE'])
&& in_array($field['VALUE_TYPE'], [Crm\Field::VALUE_TYPE_HTML, Crm\Field::VALUE_TYPE_BB], true)
)
{
$singleEntityField['ValueContentType'] = $field['VALUE_TYPE'];
}
$entityFields[static::convertFieldId($fieldId)] = $singleEntityField;
}
static::fitEntityFieldsToInterface($entityFields);
$entityFields += array_merge(
static::getAssignedByFields(),
static::getCommunicationFields(),
static::getUserFieldsMap($factory),
static::getUtmFields(),
static::getSiteFormFields($factory->getEntityTypeId()),
);
return $entityFields;
}