Читатели портала стали обращаться ко мне с вопросами относительно специфических приемов работы со смарт-процессами в коробочном портале. Ранее опубликованной статьи оказалось недостаточно, чтобы самостоятельно разобраться во всех вопросах. Поэтому, делюсь лайфхаками:
- Создать новую запись 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;