• Модуль: 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;
}