• Модуль: 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;
}