- Модуль: rpa
- Путь к файлу: ~/bitrix/modules/rpa/lib/integration/bizproc/taskmanager.php
- Класс: BitrixRpaIntegrationBizprocTaskManager
- Вызов: TaskManager::getIncompleteItemTasks
public function getIncompleteItemTasks(Item $item, int $userId = null): array
{
$itemId = $item->getId() ?: 0;
$documentId = DocumentItem::makeComplexId($item->getType()->getId(), $itemId);
$instanceIds = WorkflowInstanceTable::getIdsByDocument($documentId);
$workflowId = reset($instanceIds);
$filter = [
'WORKFLOW_ID' => $workflowId,
'USER_STATUS' => CBPTaskUserStatus::Waiting,
];
if ($userId)
{
$filter['USER_ID'] = $userId;
}
$tasksIterator = CBPTaskService::GetList([], $filter, false, false,
['ID', 'USER_ID', 'WORKFLOW_ID', 'ACTIVITY', 'ACTIVITY_NAME', 'NAME', 'DESCRIPTION', 'PARAMETERS']
);
$tasks = [];
$taskUsers = [];
while ($row = $tasksIterator->fetch())
{
if (!isset($taskUsers[$row['ID']]))
{
$taskUsers[$row['ID']] = [];
}
$taskUsers[$row['ID']][] = (int) $row['USER_ID'];
$tasks[$row['ID']] = $row;
}
foreach ($taskUsers as $taskId => $users)
{
$tasks[$taskId]['USER_ID'] = $users[0];
if (in_array($userId, $users))
{
$tasks[$taskId]['USER_ID'] = $userId;
}
$tasks[$taskId]['USERS'] = $users;
}
return array_values($tasks);
}