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

Broker

Методы


При отрисовке сложных интерфейсов часто бывает, что в разных местах происходит загрузка связанных данных из одной и той же таблицы.

Например, получение имен, привязанных к элементам CRM пользователей.

Чтобы не делать повторных запросов был разработан абстрактный класс Service\Broker.

Его основная задача - лёгкий доступ к связаным данным с кешированием.


Помните, что использование этого сервиса защищает от повторных запросов только в том случае, если данные уже были получены через этот сервис.
Не стоит делать запросы в цикле вида
    while($item = $list->fetch())
	{
		$data = $broker->getById($item['USER_ID']);
	}

Класс является абстрактным. Способ и формат получаемых данных определены в Наследниках.

Инстанс брокера следует получать через контейнер.

Метод Описание С версии
public function getById(int $id)
Вернет данные по идентификатору $id. Если данные были загружены ранее, они будут взяты из кеша.
public function getBunchByIds(array $ids): array
Вернет данные по массиву идентификаторов $ids, где ключ - идентификатор, а значение - данные по нему.
Если данные были загружены ранее, они будут взяты из кеша. На получение отсутствующих данных в кеше будет произведен отдельный запрос.

Наследники


Service\Broker\User

Предоставляет данные о пользователях.

Каждая запись о пользователе является массивом следующей структуры:

  • ID - идентификатор;
  • NAME - имя;
  • SECOND_NAME - отчество;
  • LAST_NAME - фамилия;
  • TITLE - обращение;
  • WORK_POSITION - должность;
  • FORMATTED_NAME - полное имя;
  • SHOW_URL - ссылка на профиль;
  • PERSONAL_PHOTO - идентификатор файла аватара;
  • PHOTO_URL - ссылка на аватар.

Этот класс имеет дополнительный метод:

Метод Описание С версии
public function getName(int $id): ?string
Вернет полное имя пользователя по его идентификатору.

Service\Broker\Contact

Предоставляет данные о контактах CRM.

Каждая запись о контакте является ORM-объектом таблета Bitrix\Crm\ContactTable.


Service\Broker\Company

Предоставляет данные о компаниях CRM.

Каждая запись о компании является ORM-объектом таблета Bitrix\Crm\CompanyTable.


Service\Broker\TypePreset

Отдельно стоит упомянуть брокер пресетов для настроек смарт-процессов.

Он не является наследником класса Service\Broker, но работает по схожим принципам.


Класс будет подвергнут рефакторингу, не рекомендуется использовать его напрямую, только через событие.

Имеет следующие публичные методы:

Метод Описание С версии
public function getList(): array
Вернет список пресетов.
public function getPredefinedPresets(): array
Вернет список предустановленных пресетов.
public function collectPresetsByEvent(): array
Бросает событие onCollectTypePresets модуля CRM. В результате выполнения обработчика события по ключу presets должен попасть массив пресетов соответствующей структуры.
Вернет массив полученных из обработчиков пресетов.
public function getCategories(): array
Вернет массив разделов для пресетов.

Примеры

use Bitrix\Crm\Service;

$contactBroker = \Bitrix\Crm\Service\Container::getInstance()->getCompanyBroker();

// here the contact will be queried
$contact = $contactBroker->getById(1);

echo $contact->getName();

// here data will be retrieved from cache
$contact = $contactBroker->getById(1);
© «Битрикс», 2001-2024, «1С-Битрикс», 2024