- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasks_report_helper.php
- Класс: CTasksReportHelper
- Вызов: CTasksReportHelper::getSubordinateSql
static function getSubordinateSql(): string
{
$userId = $arParams['USER_ID'] ?? 0;
$departmentIds = Department::getSubordinateIds($userId, true);
$departmentIds = array_map('intval', $departmentIds);
if (count($departmentIds) <= 0)
{
return '';
}
$departmentOption = CUserTypeEntity::GetList([], [
'ENTITY_ID' => 'USER',
'FIELD_NAME' => 'UF_DEPARTMENT',
])->Fetch();
if (!$departmentOption)
{
return '';
}
$fieldId = (int)$departmentOption['ID'];
$departmentIds = implode(',', $departmentIds);
$sql = "
(CASE
WHEN EXISTS
(SELECT 'x'
FROM b_utm_user BUF1
WHERE BUF1.FIELD_ID = {$fieldId}
AND BUF1.VALUE_ID = `tasks_task`.RESPONSIBLE_ID
AND BUF1.VALUE_INT IN ({$departmentIds})
) THEN 1
WHEN EXISTS
(SELECT 'x'
FROM b_utm_user BUF2
WHERE BUF2.FIELD_ID = {$fieldId}
AND BUF2.VALUE_ID = `tasks_task`.CREATED_BY
AND BUF2.VALUE_INT IN ({$departmentIds})
) THEN 1
WHEN EXISTS
(SELECT 'x'
FROM b_utm_user BUF3
INNER JOIN b_tasks_member DSTM ON DSTM.USER_ID = BUF3.VALUE_ID
WHERE BUF3.FIELD_ID = {$fieldId}
AND DSTM.TASK_ID = `tasks_task`.ID
AND BUF3.VALUE_INT IN ({$departmentIds})
) THEN 1
ELSE 0
END)
";
return $sql;
}