Примеры кода
Некоторые примеры есть в разделе про кастомизацию.
Работа с данными
Процессы
$typesCollection = \Bitrix\Rpa\Model\TypeTable::getList()->fetchCollection(); $typeId = 1; // идентификатор процесса $type = Bitrix\Rpa\Driver::getInstance()->getType($typeId);Стадии
$stages = $type->getStages(); $stageId = 1; // идентификатор стадии $stage = $type->getStage($stageId);Элементы
// элементы стадии с ID больше 100 $items = $stage->getItems([ 'filter' => [ '>ID' => 100, ] ]); // элемент с ID = 1 процесса $type $item = $type->getItem(1);
Изменение элементов
Если надо произвести только изменение данных об элементе
Например, надо в фоне по той или иной причине сбросить значение какого-то поля, без запуска роботов и сохранения в истории.
В этом случае надо работать с элементом напрямую
$typeId = 1; $itemId = 1; $fieldName = 'UF_RPA_1_MY_FIELD'; $item = Bitrix\Rpa\Driver::getType($typeId)->getItem($itemId); $item->set($fieldName, null); $item->save();
Если надо сделать то же самое, но с рассылкой пушей и сохранением в историю, то надо использовать команду:
$command = Bitrix\Rpa\Driver::getFactory()->getUpdateCommand($item); // отключены все проверки и запуск роботов. Пуш об изменении, записи в истории изменений и таймлайне создадутся. $command->disableAllChecks() ->disableAutomation(); $command->run();
Пользовательские поля
Отрисовка значений полей
Осуществляется через класс Display:
$typeId = 1; // идентификатор процесса
$itemId = 1;
$type = Bitrix\Rpa\Driver::getInstance()->getType($typeId);
$userFieldCollection = $type->getUserFieldCollection();
$display = new Bitrix\Rpa\UserField\Display($userFieldCollection);
$item = $type->getItem($itemId);
$controller = new Bitrix\Rpa\Controller\Item();
$data = [];
foreach($userFieldCollection as $userField)
{
$data[$userField->getName()] = $controller->prepareValue($item->get($userField->getName()));
}
$display->addValues($item->getId(), $data);
$renderedValues = $display->getValues($item->getId());
© «Битрикс», 2001-2024, «1С-Битрикс», 2024