• Модуль: 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);
}