Описание и параметры
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"];
}
4
Павел Корнилов
03.07.2013 15:03:19
|
в версии 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'];
|
|
|
1
Vizerx
20.10.2012 20:23:50
|
Выбрать значения по коду пользовательского поляКод |
---|
$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
19.08.2010 18:11:53
|
Вот так можно получить множественное пользовательское свойство (или поле) у секции(раздела) инф. блока: Содержимое файла 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"];
}
}
}
}
|
|
|
4
Алексей Сучков
09.07.2009 16:51:14
|
Код |
---|
function UserFieldValue($ID)
{
$UserField = CUserFieldEnum::GetList(array(), array("ID" => $ID));
if($UserFieldAr = $UserField->GetNext())
{
return $UserFieldAr["VALUE"];
}
else return false;
}
|
Решает задачу по выводу данных из пользовательских свойств типа список, по ID варианта из списка, получаем значение.
|
|
© «Битрикс», 2001-2023, «1С-Битрикс», 2023
Наверх
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.