- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
- Класс: BitrixTasksInternalsEffective
- Вызов: Effective::getViolationsCountForGroups
static function getViolationsCountForGroups(
DateTime $dateFrom,
DateTime $dateTo,
int $userId,
array $groupIds
): array
{
$query = new Query(EffectiveTable::getEntity());
$query->setSelect([
'GROUP_ID',
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((!empty($groupIds) ? Query::filter()->whereIn('GROUP_ID', $groupIds) : []))
->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 = array_fill_keys($groupIds, 0);
$res = $query->exec();
while ($item = $res->fetch())
{
$count[$item['GROUP_ID']] = (int)$item['COUNT'];
}
return $count;
}