1

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

Доброго дня,
Потрібна допомога для чайника))

Є Бітрікс24. В ньому, я створив користувацьке поле UF_DIRECTION_OF_STUDY типу "Список", привязав до обєкту LEARNING_LESSONS.
Намагаюсь вивести значення цього поля в компонент "навчання". До кожного курсу потрібно вивести вибране значення.
Ось код компонента(component.php):

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if (!CModule::IncludeModule("learning"))
{
    ShowError(GetMessage("LEARNING_MODULE_NOT_FOUND"));
    return;
}

$arParams["SORBY"] = (isset($arParams["~SORBY"]) ? trim($arParams["~SORBY"]) : "SORT");
$arParams["SORORDER"] = (isset($arParams["~SORORDER"]) ? trim($arParams["~SORORDER"]) : "ASC");
$arParams["CHECK_PERMISSIONS"] = (isset($arParams["CHECK_PERMISSIONS"]) && $arParams["CHECK_PERMISSIONS"]=="N" ? "N" : "Y");
$arParams["COURSE_DETAIL_TEMPLATE"] = (isset($arParams["COURSE_DETAIL_TEMPLATE"]) ? htmlspecialcharsbx($arParams["COURSE_DETAIL_TEMPLATE"]) : "course/index.php?COURSE_ID=#COURSE_ID#");
$arParams["COURSES_PER_PAGE"] = (intval($arParams["COURSES_PER_PAGE"]) > 0 ? intval($arParams["COURSES_PER_PAGE"]) : 20);




//Set Title
$arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y" );
if ($arParams["SET_TITLE"] == "Y")
    $APPLICATION->SetTitle(GetMessage("LEARNING_COURSE_LIST"));

//arResult
$arResult = Array(
    "COURSES" => Array(),
    "NAV_SRTING" => "",
    "NAV_RESULT" => null,
);

$arNavParams = array();

$arNavParams = array();
if ((int) $arParams["COURSES_PER_PAGE"] > 0)
{
    $arNavParams['nPageSize'] = (int) $arParams["COURSES_PER_PAGE"];
    $arNavParams['bDescPageNumbering'] = false;
}


$res = CCourse::GetList(
    array($arParams["SORBY"] => $arParams["SORORDER"]),
    array(
        "ACTIVE" => "Y",
        "ACTIVE_DATE" => "Y",
        "SITE_ID" => LANG,
        "CHECK_PERMISSIONS" => $arParams["CHECK_PERMISSIONS"]
    ),
    $arNavParams
);


$arResult["NAV_STRING"] = $res->GetPageNavString(GetMessage("LEARNING_COURSES_NAV"));
$arResult["NAV_RESULT"] = $res;


while ($arCourse = $res->GetNext())
{

    $arCourse["COURSE_DETAIL_URL"] = CComponentEngine::MakePathFromTemplate(
        $arParams["COURSE_DETAIL_TEMPLATE"],
        Array("COURSE_ID" => $arCourse["ID"])
    );

    $arCourse["PREVIEW_PICTURE_ARRAY"] = CFile::GetFileArray($arCourse["PREVIEW_PICTURE"]);




    // Resolve links "?COURSE_ID={SELF}". Don't relay on it, this behaviour 
    // can be changed in future without any notifications.
    if (isset($arCourse['DETAIL_TEXT']))
    {
        $arCourse['DETAIL_TEXT'] = CLearnHelper::PatchLessonContentLinks(
            $arCourse['DETAIL_TEXT'],
            $arCourse['ID']
        );
    }

    if (isset($arCourse['PREVIEW_TEXT']))
    {
        $arCourse['PREVIEW_TEXT'] = CLearnHelper::PatchLessonContentLinks(
            $arCourse['PREVIEW_TEXT'],
            $arCourse['ID']
        );
    }

    $arResult["COURSES"][] = $arCourse;
}

$res->arResult = Array();
unset($arCourse);




if (CLearnAccessMacroses::CanUserAddLessonWithoutParentLesson() || $USER->IsAdmin())
{
    $arAreaButtons = array(
        array(
            "TEXT" => GetMessage("LEARNING_COURSES_COURSE_ADD"),
            "TITLE" => GetMessage("LEARNING_COURSES_COURSE_ADD"),
            "URL" => 'javascript:'.$APPLICATION->GetPopupLink(
                array(
                    "URL" => "/bitrix/admin/learn_course_edit.php?lang=".LANGUAGE_ID."&bxpublic=Y&from_module=learning",
                    "PARAMS" => array(
                        "width" => 700, 'height' => 500, 'resize' => false,
                    ),
                )
            ),
            "ICON" => "bx-context-toolbar-create-icon",
            "ID" => "bx-context-toolbar-create-course",
        ),
    );

    $this->AddIncludeAreaIcons($arAreaButtons);

    if(CModule::IncludeModule("intranet") && is_object($GLOBALS['INTRANET_TOOLBAR']))
    {
        $GLOBALS['INTRANET_TOOLBAR']->AddButton(array(
            'TEXT' => GetMessage("comp_course_list_toolbar_add"),
            'TITLE' => GetMessage("comp_course_list_toolbar_add_title"),
            'ICON' => 'add',
            'HREF' => '/bitrix/admin/learn_course_edit.php?lang='.LANGUAGE_ID,
            'SORT' => '100',
        ));
        $GLOBALS['INTRANET_TOOLBAR']->AddButton(array(
            'TEXT' => GetMessage("comp_course_list_toolbar_list"),
            'TITLE' => GetMessage("comp_course_list_toolbar_list_title"),
            'ICON' => 'settings',
            'HREF' => '/bitrix/admin/learn_unilesson_admin.php?lang=' . LANGUAGE_ID . '&PARENT_LESSON_ID=-1',
            'SORT' => '200',
        ));
    }
}

$this->IncludeComponentTemplate();


?>

Так намагаюсь вийняти значення:

.........
while ($arCourse = $res->GetNext())
{

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

Видає помилку, що масив пустий:

[Error]
Call to a member function GetNext() on array (0)
/home/bitrix/www/bitrix/components/bitrix/learning.course.list/component.php:57
#0: include

Якщо дивлюсь що там в $res

    global $USER;
$arFilter = array("ID" => $USER->GetID());
$arParams["SELECT"] = array("UF_DIRECTION_OF_STUDY");
$arRes = CUser::GetList($by,$desc,$arFilter,$arParams);
    $Arr = (array)$res;
    print_r ( $Arr );

То бачить таке

[UF_DIRECTION_OF_STUDY] => Array ( [ID] => 442 [ENTITY_ID] => LEARNING_LESSONS [FIELD_NAME] => UF_DIRECTION_OF_STUDY [USER_TYPE_ID] => enumeration [XML_ID] => UF_DIRECTION_OF_STUDY 

Як мені вивести вибране значення поля UF_DIRECTION_OF_STUDY?

Дякую!