Получение пользовательских UF_ свойств в Битрикс для разделов

По мере работы приходится сталкиваться с огромным количеством CMS на которых работают сайты и многие вопросы не тривиальные приходится решать иногда заглядывая в официальную документацию.

Так случилось и в этот раз. Стояла вроде тривиальная задача: добавить пользовательское свойство к разделу и на основании его вывести в краткой карточке товара набор свойств. Система управления 1С Битрикс.

С первой частью проблем вообще не возникло. Свойство спокойно добавляется через панель Битрикса и спокойно там редактируется. Переходим к выводу.

Официальная документация нам предлагает использовать CIBlockSection::GetList. Предлагают значит надо. Пишем примерно следующий код:

$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => "20"), false, $arSelect = array("UF_*"));

И получаем... Ничего... В смысле пусто... Хотя офф документация утверждает обратное. 

Пришлось проявить смекалку под названием Google, который странице на 10 сдался и выдал мысль, что для доступа к пользовательским полям раздела необходимо использовать методы работы с пользовательскими полями, но никак не методы работы с разделами (привет ООП от разработчиков Битрикс). В результате мы получили примерно такой год.

$arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_25_SECTION",$arResult['ID'],"UF_VISPARAMS");
if($arUF['UF_VISPARAMS']['VALUE'] != ""){
  $_visFields = explode(',', $arUF['UF_VISPARAMS']['VALUE']);
  $visFields = [];
  foreach($_visFields as $k => $v){
    if(trim($v) != ""){
      $visFields[] = trim($v);
    }
  }
};

Называет он чешем ухо левой пяткой. Почему для работы с пользовательскими свойствами разделов надо использовать такой странный подход — загадка, как и сам Битрикс, к которому есть куча нареканий по внутренней структуре.

PS: Битрикс хороший, дорогой, ужасно медленный и дико неудобный для разработки и поддержки продукт. Но отлично раскрученный. Поэтому если у вас возникло желание сделать на нём сайт или интернет магазин — одумайтесь, разделите бюджет на 3, посмотрите по сторонам, выберите другую, более быструю и управляемую платформу, а на 2/3 бюджета слетайте на месяц на Мальдивы. Там хорошо! ))