128 if (!is_array($arSelect))
132 if (
count($arSelect) < 1)
140 if (!is_array($arOrder))
146 foreach ($arOrder as $strColumn => $strDirection)
148 $strColumn = mb_strtoupper($strColumn);
149 $strDirection = mb_strtoupper($strDirection) ===
'ASC' ?
'ASC' :
'DESC';
154 $arSelect[] = $strColumn;
155 $arQueryOrder[$strColumn] = $strColumn .
' ' . $strDirection;
161 foreach ($arSelect as $strColumn)
163 $strColumn = mb_strtoupper($strColumn);
168 $arQuerySelect[$strColumn] =
'g.' . $strColumn;
172 if (
count($arQuerySelect) < 1)
174 $arQuerySelect = [
'ID' =>
'w.ID'];
180 'TABLE_ALIAS' =>
'g',
181 'FIELD_NAME' =>
'g.ID',
182 'FIELD_TYPE' =>
'int',
192 $strQueryWhere = $obQueryWhere->GetQuery(
$arFilter);
194 $bDistinct = $obQueryWhere->bDistinctReqired;
197 SELECT ' . ($bDistinct ?
'DISTINCT' :
'') .
'
198 ' . implode(
', ', $arQuerySelect) .
'
201 ' . $obQueryWhere->GetJoins() .
'
208 ' . $strQueryWhere .
'
212 if (
count($arQueryOrder) > 0)
216 ' . implode(
', ', $arQueryOrder) .
'
220 return $DB->Query($strSql,
false,
'', [
'fixed_connection' =>
true]);