Документация для разработчиков

GetList

CDBResult CUserFieldEnum::GetList(
 array aSort = array(),
array aFilter = array()
)

Возвращает значения списка пользовательского поля в виде объекта класса CDBResult. Для параметра aSort по умолчанию является сортировка по полю SORT, а затем по полю ID по возрастанию. Нестатический метод.

Параметры

ПараметрОписание
aSortМассив для сортировки значений. В массиве допустимы следующие ключи:
  • ID - ID значения списка;
  • USER_FIELD_ID - идентификатор пользовательского поля;
  • VALUE - значение для отображения;
  • DEF - флаг умолчания;
  • SORT - сортировка;
  • XML_ID - код внешнего источника.
Значения ключей могут принимать значения:
  • ASC - по возрастанию
  • DESC - по убыванию
aFilterМассив для фильтрации значений. В массиве допустимы следующие ключи:
  • ID - ID значения списка;
  • USER_FIELD_ID - идентификатор пользовательского поля;
  • VALUE - значение для отображения;
  • DEF - флаг умолчания;
  • SORT - сортировка;
  • XML_ID - код внешнего источника.
Значения ключей задают точное соответствие для фильтрации.

См. также

Примеры использования

<?
//Пусть для пользователей определено пользовательское свойство
// типа список с кодом UF_GENDER. Выведем отображаемое значение для
// текущего пользователя.

//Сначала получим значение пользовательского поля:
global $USER;
if(is_object($USER))
{
$rsUser = CUser::GetList($by, $order,
array(
"ID" => $USER->GetID(),
),
array(
"SELECT" => array(
"UF_GENDER",
),
)
);
if($arUser = $rsUser->Fetch())
{
$rsGender = CUserFieldEnum::GetList(array(), array(
"ID" => $arUser["UF_GENDER"],
));
if($arGender = $rsGender->GetNext())
echo $arGender["VALUE"];
}
}
?>

Пример получения списка вариантов по коду пользовательского поля:

$obEnum = new \CUserFieldEnum;
        $rsEnum = $obEnum->GetList(array(), array("USER_FIELD_ID" => $arUserField["ID"]));

        $enum = array();
        while($arEnum = $rsEnum->Fetch())
        {
            $enum[$arEnum["ID"]] = $arEnum["VALUE"];
        }


Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
2
Павел Корнилов
в версии 12.5.1 ключ USER_FIELD_NAME работает
очень удобно получать id варианта списка, если не известно USER_FIELD_ID

Код
$rsEnum = CUserFieldEnum::GetList(array(), array("USER_FIELD_NAME"=>"UF_ZVEZDA_OTEL", "VALUE" =>$star)); 
$arEnum = $rsEnum->GetNext();  
$UF_ZVEZDA_OTEL = $arEnum['ID'];
0
Vizerx
Выбрать значения по коду пользовательского поля

Код
   $rsUField = CUserFieldEnum::GetList(array(), array("USER_FIELD_NAME" => $strFieldName));   while($arUField = $rsUField->GetNext())   {      print_r($arUField);   }
Массив aSort ключ USER_FIELD_NAME игнорирует (11.5)
********************
Комментарий от разработчика. Да, это так. Хотя приведённый код и не демонстрирует это.
1
Maxim Smirnov
Вот так можно получить множественное пользовательское свойство (или поле) у секции(раздела) инф. блока:

Содержимое файла result_modifier.php, содержащийся в шаблоне компонента
bitrix:catalog.section.list

Нужно обратить внимание на четвёртый параметр CIBlockSection::GetList


Код
//0. user enum field code
$CODE = "UF_CS";

//1. Local cache
$arEnumsCache = array();
$arResultSectionsByID = array();
foreach ($arResult['SECTIONS'] as $key => $arSection)
   $arResultSectionsByID[$arSection["ID"]] = &$arResult['SECTIONS'][$key];

//2. Make same GetList as component did
$arFilter = array(
   "ACTIVE" => "Y",
   "GLOBAL_ACTIVE" => "Y",
   "IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
if($arResult["SECTION"]["ID"] > 0)
{
   $arFilter["LEFT_MARGIN"]=$arResult["SECTION"]["LEFT_MARGIN"]+1;
   $arFilter["RIGHT_MARGIN"]=$arResult["SECTION"]["RIGHT_MARGIN"];
   $arFilter["<="."DEPTH_LEVEL"]=$arResult["SECTION"]["DEPTH_LEVEL"] + $arParams["TOP_DEPTH"];
}
else
{
   $arFilter["<="."DEPTH_LEVEL"] = $arParams["TOP_DEPTH"];
}
$rsSections = CIBlockSection::GetList(array(), $arFilter, false, array("ID", $CODE));
while($arSection = $rsSections->Fetch())
{
   //3. Check if section is in the result
   if(array_key_exists($arSection["ID"], $arResultSectionsByID))
   {
      //4. Simplify processing of single/multile properties
      if(!is_array($arSection[$CODE]))
         $arSection[$CODE] = array($arSection[$CODE]);

      foreach($arSection[$CODE] as $UF_ID)
      {
         if($UF_ID > 0)
         {
            //5. Check for local cache
            if(!array_key_exists($UF_ID, $arEnumsCache))
            {
               $rsEnum = CUserFieldEnum::GetList(array(), array("ID" => $UF_ID));
               $arEnumsCache[$UF_ID] = $rsEnum->GetNext();
            }
            //6. Modify result
            $arResultSectionsByID[$arSection["ID"]][$CODE][] = $arEnumsCache[$UF_ID]["VALUE"];
         }
      }
   }
}
2
Алексей Сучков
Код
   
   function UserFieldValue($ID)
   {
      $UserField = CUserFieldEnum::GetList(array(), array("ID" => $ID));
      if($UserFieldAr = $UserField->GetNext())
      {
         return $UserFieldAr["VALUE"];
      }
      else return false;
   }



Решает задачу по выводу данных из пользовательских свойств типа список, по ID варианта из списка, получаем значение.
© «Битрикс», 2001-2018, «1С-Битрикс», 2018
Наверх