• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
  • Класс: CTasks
  • Вызов: CTasks::GetDeparmentSql
static function GetDeparmentSql($arDepsIDs, $sAliasPrefix = "", $arParams = [], $behaviour = [])
{
	if (!is_array($arDepsIDs))
	{
		$arDepsIDs = [intval($arDepsIDs)];
	}
	else
	{
		$arDepsIDs = array_map('intval', $arDepsIDs);
	}

	if (!is_array($behaviour))
	{
		$behaviour = [];
	}
	if (!isset($behaviour['ALIAS']))
	{
		$behaviour['ALIAS'] = $sAliasPrefix;
	}
	if (!isset($arParams['FIELDS']))
	{
		$arParams['FIELDS'] = [];
	}

	$a = $sAliasPrefix;
	$b = $behaviour;
	$f =& $arParams['FIELDS'];

	//static::placeFieldSql('CREATED_BY', 	$b, $f)

	$rsDepartmentField = CUserTypeEntity::GetList([], ["ENTITY_ID" => "USER", "FIELD_NAME" => "UF_DEPARTMENT"]);
	$cntOfDepartments = count($arDepsIDs);
	if ($cntOfDepartments && $arDepartmentField = $rsDepartmentField->Fetch())
	{
		$strConstraint = $sAliasPrefix . "BUF1.VALUE_INT IN (" . implode(",", $arDepsIDs) . ")";

		// EXISTS!
		$strSql = "
			SELECT
				'x'
			FROM
				b_utm_user " . $sAliasPrefix . "BUF1
			WHERE
				" . $sAliasPrefix . "BUF1.FIELD_ID = " . $arDepartmentField["ID"] . "
			AND
				(" . $sAliasPrefix . "BUF1.VALUE_ID = " . static::placeFieldSql('RESPONSIBLE_ID', $b, $f) . "
					OR " . $sAliasPrefix . "BUF1.VALUE_ID = " . static::placeFieldSql('CREATED_BY', $b, $f) . "
					OR EXISTS(
						SELECT 'x'
						FROM b_tasks_member " . $sAliasPrefix . "DSTM
						WHERE " . $sAliasPrefix . "DSTM.TASK_ID = " . static::placeFieldSql('ID', $b, $f) . "
							AND " . $sAliasPrefix . "DSTM.USER_ID = " . $sAliasPrefix . "BUF1.VALUE_ID
					)
				)
			AND
				" . $strConstraint . "
		";

		return $strSql;
	}

	return false;
}