• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/taskservice.php
  • Класс: BitrixTasksScrumServiceTaskService
  • Вызов: TaskService::getChecklistCounts
private function getChecklistCounts(array $taskIds): array
{
	try
	{
		$checkList = [];

		$query = new Query(CheckListTable::getEntity());
		$query->setSelect(['TASK_ID', 'IS_COMPLETE', new ExpressionField('CNT', 'COUNT(TASK_ID)')]);
		$query->setFilter(['TASK_ID' => $taskIds]);
		$query->setGroup(['TASK_ID', 'IS_COMPLETE']);
		$query->registerRuntimeField('', new ReferenceField(
			'IT',
			CheckListTreeTable::class,
			Join::on('this.ID', 'ref.CHILD_ID')->where('ref.LEVEL', 1),
			['join_type' => 'INNER']
		));

		$result = $query->exec();
		while ($row = $result->fetch())
		{
			$checkList[$row['TASK_ID']][$row['IS_COMPLETE'] == 'Y' ? 'complete' : 'progress'] = $row['CNT'];
		}

		return $checkList;
	}
	catch (Exception $exception)
	{
		$message = $exception->getMessage().$exception->getTraceAsString();
		$this->errorCollection->setError(new Error($message, self::ERROR_COULD_NOT_COUNT_CHECKLIST_FILES));
		return [];
	}
}