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