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

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-2021, «1С-Битрикс», 2021
Наверх