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();
Пример кастомизации компонента смотрите тут.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.