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();
Пример кастомизации компонента смотрите тут.