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