• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
  • Класс: BitrixTasksInternalsEffective
  • Вызов: Effective::getViolationsCount
static function getViolationsCount(DateTime $dateFrom, DateTime $dateTo, $userId, $groupId)
{
	$query = new Query(EffectiveTable::getEntity());

	$query->setSelect([new EntityExpressionField('COUNT', 'COUNT(%s)', 'TASK_ID')]);
	$query->registerRuntimeField('T', new EntityReferenceField(
		'T',
		TaskTable::getEntity(),
		Join::on('this.TASK_ID', 'ref.ID'),
		['join_type' => 'inner']
	));
	$query
		->where(($userId? Query::filter()->where('USER_ID', $userId) : []))
		->where(($groupId? Query::filter()->where('GROUP_ID', $groupId) : []))
		->where('IS_VIOLATION', 'Y')
		->where('T.RESPONSIBLE_ID', '>', 0)
		->where(
			Query::filter()
				->where('DATETIME', '<=', $dateTo)
				->where(
					Query::filter()
						->logic('or')
						->where('DATETIME', '>=', $dateFrom)
						->where('DATETIME_REPAIR', NULL)
						->where('DATETIME_REPAIR', '>=', $dateFrom)
				)
		);

	$count = $query->exec()->fetch();

	return $count['COUNT'];
}