При добавлении или получении данных Highload-блока через API иногда встает проблема, как корректно получить данные из пользовательского поля с типом «Список».

Для получения данных предлагаю следующую удобную функцию:

<?php

function get_enum_values_by_hl_field_code($code, $hlId)
{
    $property = CUserTypeEntity::GetList([], ['ENTITY_ID' => 'HLBLOCK_' . $hlId, 'FIELD_NAME' => $code])->Fetch();

    if ($property && $property['USER_TYPE_ID'] === 'enumeration') {

        $fieldEnums = CUserFieldEnum::GetList([], ['USER_FIELD_ID' => $property['ID']]);

        $result = [];

        while ($enumFields = $fieldEnums->GetNext()) {
            $resultInfo = [
                'ID' => $enumFields['ID'],
                'VALUE' => $enumFields['VALUE'],
                'XML_ID' => $enumFields['XML_ID'],
            ];

            $result['BY_ID'][$enumFields['ID']] = $resultInfo;
            $result['BY_XML_ID'][$enumFields['XML_ID']] = $resultInfo;
            $result['BY_VALUE'][$enumFields['VALUE']] = $resultInfo;
        }

        return $result;
    }

    return false;
}

Функция принимает на вход символьный код пользовательского поля и ID HL-блока. А возвращает массив из 3 элементов, внутри которых уже лежат все варианты значений поля: по ID, по XML_ID, по значению.

[
  "BY_ID" => [
    48 => [
      "ID" => "48",
      "VALUE" => "Apple",
      "XML_ID" => "apple",
    ],
    49 => [
      "ID" => "49",
      "VALUE" => "Samsung",
      "XML_ID" => "samsung",
    ],
    50 => [
      "ID" => "50",
      "VALUE" => "Xiaomi",
      "XML_ID" => "xiaomi",
    ],
  ],
  "BY_XML_ID" => [
    "apple" => [
      "ID" => "48",
      "VALUE" => "Apple",
      "XML_ID" => "apple",
    ],
    "samsung" => [
      "ID" => "49",
      "VALUE" => "Samsung",
      "XML_ID" => "samsung",
    ],
    "xiaomi" => [
      "ID" => "50",
      "VALUE" => "Xiaomi",
      "XML_ID" => "xiaomi",
    ],
  ]
  "BY_VALUE" => [
    "Apple" => [
      "ID" => "48",
      "VALUE" => "Apple",
      "XML_ID" => "apple",
    ],
    "Samsung" => [
      "ID" => "49",
      "VALUE" => "Samsung",
      "XML_ID" => "samsung",
    ],
    "Xiaomi" => [
      "ID" => "50",
      "VALUE" => "Xiaomi",
      "XML_ID" => "xiaomi",
    ],
  ],
]

Также можете посмотреть получение вариантов из свойства типа «Список» в инфоблоке.