Поснов Андрей

Вывод пользовательских свойств в БИТРИКСЕ

Фильтрация

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

$sec_Filter= array(  
   "IBLOCK_ID" => $IBLOCK_ID, 
   "DEPTH_LEVEL" => "2", 
   "!UF_ARC_PAGES" => ""
);

 

Примечание: Фильтрация по пользовательским полям работает только при наличии фильтра по IBLOCK_ID.

 

Будут отобраны все разделы, у которых установлено значение свойства UF_ARC_PAGES.

 

 

Фильтрация по значению пользовательского свойства:

$arSFilter ['=UF_USERS_PROPERTY'] =$users_property_value;

Сортировка

Сортировать по пользовательским полям разделов:

    $arSort = array(
       "UF_RATING"=>"asc",
       "sort"=>"asc"

   );

Получение значений

Получить значение пользовательского поля можно с помощью метода GetList соответствующего класса.

Значение пользовательского поля для пользователя с ID=2 можно таким образом:

$rsUser = CUser::GetByID($user);
$arUser = $rsUser->Fetch();
$нужное значение = $arUser['код пользовательского поля'];

 

 

Чтобы получить значение пользовательского поля определенного пользователя, тип поля – строка, необходимо воспользоваться методом GetListкласса CUser. При этом в качестве четвертого аргумента данному методу необходимо передать массив с ключом SELECT, значениями которого являются список кодов пользовательских свойств, которые необходимо получить.

global $USER;
$arFilter = array("ID" => $USER->GetID());
$arParams["SELECT"] = array("UF_USER_CARD_CODE");
$arRes = CUser::GetList($by,$desc,$arFilter,$arParams);
    if ($res = $arRes->Fetch()) {
        echo $res["UF_USER_CARD_CODE"];
    }

 

 

Если тип пользовательского поля список, то для получения значения (или значений, если возможен множественный выбор) нужно воспользоваться методом GetList класса CUserFieldEnum.

global $USER;
$arFilter = array("ID" => $USER->GetID());
$arParams["SELECT"] = array("UF_LIST_TASK");
$arRes = CUser::GetList($by,$desc,$arFilter,$arParams);
    if ($res = $arRes->Fetch()) {
        foreach ($res["UF_LIST_TASK "] as $id) {
                $rsRes= CUserFieldEnum::GetList(array(), array(
                    "ID" => $id,
                ));
                if($arResult = $rsRes->GetNext())
                    echo $arGender["VALUE"];
            }   
}

 

 

Если необходимо получить список всех значений пользовательского поля объекта USER типа список, то следует воспользоваться следующим кодом:

global $USER_FIELD_MANAGER;
$arFields = $USER_FIELD_MANAGER->GetUserFields("USER");
$obEnum = new CUserFieldEnum;
$rsEnum = $obEnum->GetList(array(), array("USER_FIELD_ID" => $arFields["UF_LIST_TASK "]["ID"]));
while($arEnum = $rsEnum->GetNext()){
   echo $arEnum["VALUE"];
}

 

 

Для выбора значения пользовательского поля у секции информационного блока можно воспользоваться методом CIBlockSection:GetList:

	
$aSection   = CIBlockSection::GetList( array(), array(
    'IBLOCK_ID'         => 3,
    'CODE'          => 'test_section',
), false, array( 'UF_DEV2DAY_FIELD' ) )->Fetch();

 

Примечание: Передача идентификатора инфоблока (IBLOCK_ID) обязательна, иначе выборка пользовательских свойств не будет осуществлена.

 

 

 

Получение значения пользовательского поля типа файл конкретной секции инфоблока:

$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => "1"), false, $arSelect = array("UF_*"));
while ($arResult = $rsResult -> GetNext())
{
print "
" . print_r($arResult, true) . "
"; }

 

 

Так как пользовательские поля можно использовать не только с разделами информационного блока, но и с любыми другими сущностями, то для выбора значений по идентификатору сущности используется класс CUserTypeManager. Экземпляр данного класса уже находится в глобальной переменной $USER_FIELD_MANAGER.

	
global $USER_FIELD_MANAGER;

$aSection   = CIBlockSection::GetList( array(), array(
    'IBLOCK_CODE'   => 'shop_news',
    'CODE'          => 'test_section',
) )->Fetch();

if( !$aSection ) {
    throw new Exception( 'Секция не найдена' );
}

$aUserField = $USER_FIELD_MANAGER->GetUserFields(
'IBLOCK_3_SECTION',
$aSection['ID']
); // array

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

 

Примечание: Чтобы получить все значения пользовательских полей в параметре arSelect достаточно указать Array(«UF_*»).
Вывод пользовательских свойств в БИТРИКСЕ
Exit mobile version