Для настройки собственной сортировки в функции CIBlockElement::GetList, можно воспользоваться параметром "ORDER", в котором указывать можно не только поля для сортировки, но и пользовательские функции для сортировки.
Для сортировки элементов с определенным значением IBLOCK_SECTION_ID в конце списка можно написать пользовательскую функцию сортировки, которая будет проверять значение IBLOCK_SECTION_ID и устанавливать нужный порядок сортировки.
Примерно такой код может выглядеть:
```php
$arOrder = array(
"ID" => "ASC",
"SORT" => "ASC", // Обычные поля сортировки
"IBLOCK_SECTION_ID" => "ASC", // Поле, по которому хотим сортировать
"USER_SPECIAL_SORT" => "ASC", // Пользовательское поле для сортировки
);
$rsElements = CIBlockElement::GetList($arOrder, $arFilter);
// Пользовательская функция сортировки
function mySortFunction($a, $b) {
if ($a["IBLOCK_SECTION_ID"] == 20 && $b["IBLOCK_SECTION_ID"] != 20) {
return 1;
} elseif ($a["IBLOCK_SECTION_ID"] != 20 && $b["IBLOCK_SECTION_ID"] == 20) {
return -1;
} else {
return 0;
}
}
// Преобразуем результат выборки в массив
$arElements = [];
while ($element = $rsElements->GetNext()) {
$arElements[] = $element;
}
// Сортируем массив с помощью пользовательской функции
usort($arElements, "mySortFunction");
// Выводим отсортированный массив
foreach ($arElements as $element) {
// Вывод элемента
}
```
Таким образом, вы сможете отсортировать элементы с определенным значением IBLOCK_SECTION_ID в конце списка, используя пользовательскую функцию сортировки и метод usort для сортировки уже полученного массива элементов.