API смарт-процессов в Битрикс предоставляет разработчикам мощный инструментарий для управления смарт-процессами через программный интерфейс. Ниже приведены основные методы работы с смарт-процессами, позволяющие инициализировать, создавать, изменять, удалять элементы и получать списки.
Для инициализации смарт-процесса используется фабрика, которая позволяет создать экземпляр класса для работы с ним. Например:
use \Bitrix\Crm\Service\Container;
$factory = Container::getInstance()->getFactory($entityTypeId);
// $entityTypeId - id смарт-процесса
$context = new \Bitrix\Crm\Service\Context();
$context->setUserId($userId); // если добавление происходит в агенте, то надо установить пользователя $item = $factory->createItem($data); // $data - массив ['TITLE'=> 'Элемент1','UF_CRM_N_PROPERTY'] // UF_CRM_N_PROPERTY - UF_ заголовок для пользовательских полей, CRM_N - N-Порядковый номер созданного смерт-процесса, узнать можно при создании пользовательского свойства, PROPERTY - Код свойства
$fields = [
Bitrix\Crm\Item::FIELD_NAME_TITLE => 'Заголовок элемента',
'UF_CRM_FIELD' => 'some value',
'UF_CRM_FILE' => $newFile, ];
$item = $factory->createItem($fields);
$addOperation = $factory->getAddOperation($item, $context);
/* для поддержки кастомизации и отключения проверок в виде:
$addOperation->disableCheckAccess() - отключение проверки доступа
$addOperation->disableCheckFields() - отключение проверки обязательности полей
*/
$operationResult = $saveOperation->launch(); // Запуск добавления элемента. Если использовать $item->save() - будет пропущена вся логика при добавлении (бизнес-процессы, индексация элемента и прочее)
/* ---- ИЛИ ---- */
$fields = [
'UF_CRM_FIELD' => 'some value',
'UF_CRM_FILE' => $newFile
];
$item = $factory->createItem($fields);
$addOperation = $factory->getAddOperation($item)
->disableCheckAccess()
->disableCheckFields();
$operation->launch();
$item->set('UF_CRM_1_FIELD', $value);
$item->save();
/* или для нескольких полей */
$class = $factory->getDataClass();
$saveResult = $class::update($id, $arUpdate);
/* или с поддержкой кастомизации операции изменения */
$saveOperation = $factory ->getUpdateOperation($item, $context);
$operationResult = $saveOperation->launch();
$saveOperation = $factory->getDeleteOperation($item, $context);
$operationResult = $saveOperation->launch();
Получение списка элементов смарт-процесса
$items = $factory->getItems([
'filter' => [
'@ID' => $ids,
'=PARENT_ID_1' => $otherSmartElementId
],
'select' => ['ID', 'UF_CRM_2_POLE', 'TITLE'],
'order' => ['UF_CRM_2_POLE' => 'ASC'],
'limit'=>1000,
'offset' =>0
]);
Дополнительную информацию о доступных методах API смарт-процессов Битрикс можно найти в официальной документации.