Документация для разработчиков
Темная тема

Component\EntityDetails\FactoryBased

Общее описание

Детальные карточки элемента любого типа CRM очень похожи между собой. Состоят из одинаковых элементов, работают по схожей логике.

При разработке смарт-процессов и новой карточки предложений было решено вынести общий код в базовый класс.

Сам этот класс является абстрактным, от него наследуются компоненты для отрисовки карточки элемента конкретного типа.

Т.к. чаще всего сам этот класс является клиентским кодом, большая часть данных сосредоточена в свойствах этого класса.

Большая часть методов также предназначена для использования внутри executeComponent.

Тем не менее, бывают случаи, когда необходимо обратиться к компоненту детальной карточки элемента снаружи.

Название компонента можно получить с помощью метода роутера getItemDetailComponentName.

Ниже перечислены методы, которые могут быть полезны при работе с компонентом снаружи.

Методы

Метод Описание С версии
public function setEntityTypeID(int $id): void
Установит новый тип сущности CRM $id, с которым должен работать компонент.
public function getEntityTypeID(): int
Вернет текущий тип сущности CRM, с которым работает компонент.
public function setEntityID($entityID): void
Установит новый идентификатор элемента, с которым работает компонент.
public function init(): void
Выполняет инициализацию - заполняет внутренние свойства класса в соответствии с параметрами компонента.
Если в процессе инициализации возникли ошибки, то они попадут коллекцию ошибок..
public function getErrors(): array
Вернет массив с ошибками \Bitrix\Main\Error[].
public function getErrorByCode($code): ?Error
Вернет ошибку по её коду $code, если такая есть.
public function getErrorMessages(): array
Вернет массив сообщений об ошибках.
public function initializeEditorAdapter(): void
Инициализирует сервис EditorAdapter.
public function getEditorConfig(): array
Вернет параметры для компонента универсального редактора.
public function getInlineEditorEntityConfig(): array
Вернет параметры для компонента универсального редактора, который используется при инлайновом редактировании элемента (например, в быстрой форме создания в канбане).
public function getEditorEntityConfig(): array
Вернет конфигурацию элементов для универсального редактора (ключ ENTITY_CONFIG).
public function prepareFieldInfos(): array
Вернет конфигурацию полей для универсального редактора.

Пример использования класса компонента


use Bitrix\Crm\Service;

$entityTypeId = 140;

$componentName = Service\Container::getInstance()->getRouter()->getItemDetailComponentName($entityTypeId);

$componentClassName = \CBitrixComponent::includeComponentClass($componentName);
$component = new $componentClassName;
$component->initComponent($componentName);
$component->arParams = [
	'ENTITY_TYPE_ID' => $this->factory->getEntityTypeId(),
	'ENTITY_ID' => 0,
	'categoryId' => $this->getCategoryId(),
];
$component->init();
if ($component->getErrors())
{
	print_r($component->getErrorMessages());
	return;
}

$fieldInfos = $component->prepareFieldInfos();
$entityConfig = $component->getEditorEntityConfig();

Пример кастомизации компонента смотрите тут.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024