• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/taskservice.php
  • Класс: BitrixTasksScrumServiceTaskService
  • Вызов: TaskService::getTaskIdsByFilter
public function getTaskIdsByFilter(
	array $filter,
	?PageNavigation $navigation = null,
	array $entityIds = []
): array
{
	$taskIds = [];

	try
	{
		$filter['ONLY_ROOT_TASKS'] = ($filter['ONLY_ROOT_TASKS'] === 'N' ? 'N' : 'Y');
		if ($entityIds)
		{
			$filter['SCRUM_ENTITY_IDS'] = $entityIds;
		}

		if ($navigation)
		{
			$navParams = [
				'nPageSize' => $navigation->getLimit(),
				'iNumPageSize' => $navigation->getOffset(),
				'iNumPage' => $navigation->getCurrentPage(),
				'getPlusOne' => true,
			];
		}
		else
		{
			$navParams = [];
		}

		$getListParams = [
			'select' => ['ID'],
			'legacyFilter' => $filter,
			'order' => ['SCRUM_ITEMS_SORT' => 'ASC'],
			'group' => [],
			'NAV_PARAMS' => $navParams,
		];

		$result = ManagerTask::getList($this->executiveUserId, $getListParams);
		$tasks = array_values($result['DATA']);

		if (count($tasks) <= 0)
		{
			return $taskIds;
		}

		$n = 0;
		foreach ($tasks as $task)
		{
			if ($navigation && ++$n > $navigation->getLimit())
			{
				break;
			}

			$taskIds[] = $task['ID'];
		}

		if ($navigation)
		{
			$navigation->setRecordCount($navigation->getOffset() + $n);
		}

		return $taskIds;
	}
	catch (Exception $exception)
	{
		$message = $exception->getMessage().$exception->getTraceAsString();

		$this->errorCollection->setError(
			new Error(
				$message,
				self::ERROR_COULD_NOT_READ_TASK
			)
		);

		return $taskIds;
	}
}