Приемы работы со смарт-процессами через API «коробочного» Битрикс24

Читатели портала стали обращаться ко мне с вопросами относительно специфических приемов работы со смарт-процессами в коробочном портале. Ранее опубликованной статьи оказалось недостаточно, чтобы самостоятельно разобраться во всех вопросах. Поэтому, делюсь лайфхаками:

  1. Создать новую запись cмарт-процесса
$typeid = 'код СП';
$factory = Service\Container::getInstance()->getFactory($typeid);
$item = $factory->createItem(['описываем массив полей СП, включая кастомные']);
$operation = $factory->getAddOperation($item);
$operation
   ->disableCheckFields()
   ->disableBizProc()
   ->disableCheckAccess()
;
$addResult = $operation->launch();

$errorMessages = $addResult->getErrorMessages();

if ($addResult->isSuccess())
{
    // получаем ID новой записи СП
    $newId = $item->getId();
   echo $newId; 

}
else
{
   echo "fail";
}

2. Получение выборки данных смарт-процесса

$typeid = 'код СП';

$factory = Service\Container::getInstance()->getFactory($typeid);

$items = $factory->getItems([
   'select' => [],
   'filter' => ['ID'=>9]

]);

foreach($items as $item) {
   echo "<pre>";
   print_r($item->getData());
   echo "</pre>";

}

3. Удаление записей смарт-процессов

$typeid = 'код СП';

$factory = Service\Container::getInstance()->getFactory($typeid);

$items = $factory->getItems([
   'select' => [],
   'filter' => []

]);

foreach($items as $item) {
   $operation = $factory->getDeleteOperation($item);
   $operation
      ->disableCheckFields()
      ->disableBizProc()
      ->disableCheckAccess()
   ;
   $addResult = $operation->launch();
}

перед использованием методов не забудьте объявить namespace класса Container

use Bitrix\Main\Loader;
Loader::includeModule('crm');
use Bitrix\Crm\Service;