Работа с фабриками смарт- процессов в новом API CRM Битрикс 24

Функционал смарт-процессов, выпущенный вендором в прошлом году, содержит принципиально новый механизм работы с их данными, нежели был в «старых» сущностях Битрикс таких как лиды, сделки, контакты и компании.

Напомним, что с ними работа строилась в основном через предопределенные классы такие как CCrmLead, CCrmDeal и т.д., к которым мы обращались через методы подобные GetList и Add. В случае со смарт-процессами создание предопределенных классов потеряло всякий смысл, ибо называть смарт процессы мы можем как угодно на свое усмотрение и тиражировать их неограниченным образом. Поиск нужного смарт — процесса можно вести через разве что идентификатор ID в первой колонке данной картинки.

Именно по ID мы можем активировать класс для работы с нужной сущность смарт-процесса. Для этого используется новая система «фабрик», работающая следующим образом:

use Bitrix\Main\Loader;
use Bitrix\Crm\Service;
Loader::includeModule('crm');
$typeid = '147';
$factory = Service\Container::getInstance()->getFactory($typeid);

Далее открывается все многообразие методов, работы с фабрикой раскрытая в документации https://dev.1c-bitrix.ru/api_d7/bitrix/crm/service/factory.php

Например, чтобы получить полный массив данных, соответствующих карточке смарт — процесса с ид 1 используйте команды.

$sourceItemId = 1; $item = $factory->getItem($sourceItemId); print_r($item->getData());

Функционал фабрик открывает гораздо больше возможностей, нежели старое API CRM: встроенное кэширование некоторых типов данных, возможность отслеживать историю всех изменений не прибегая как ранее к отдельной таблице CRMEvent.

Надеемся, фабрики это универсальный интерфейс, в рамках которого будут в последующем строится работа со всеми сущностями корпоративного портала.