@nikolay_akhmetyanov
Front-end developer

Как сделать вывод пользовательского поля с типом привязка к highloadblock?

Добрый день! Подскажите как сделать вывод пользовательского поля с типом привязка к hlblock?
Есть пользователь с полем "должность" .5b30f99f321d4289485906.png
Данным кодом я вывожу список значений в форме.
<div class="form-group row">
								<label class="col-sm-4 col-form-label">
									<?=$arResult["USER_PROPERTIES"]["DATA"]["UF_POSITION_USER"]["EDIT_FORM_LABEL"]?>
									<?if ($arResult["USER_PROPERTIES"]["DATA"]["UF_POSITION_USER"]["MANDATORY"]=="Y"):?>
										<span class="starrequired">*</span>
									<?endif;?>
								</label>
								<div class="col-sm-8">
									<?$APPLICATION->IncludeComponent(
										"bitrix:system.field.edit",
										"custom-hlblock",
										array("bVarsFromForm" => $arResult["bVarsFromForm"], "arUserField" => $arResult["USER_PROPERTIES"]["DATA"]["UF_POSITION_USER"]), null, array("HIDE_ICONS"=>"Y"));?>
								</div>
							</div>


Но как мне вывести чисто одно значение которое было присвоено пользователю?
  • Вопрос задан
  • 834 просмотра
Пригласить эксперта
Ответы на вопрос 1
AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза
По идее, у вас при чтении раздела
["UF_POSITION_USER"]["VALUE"]хранит ID записи хайлоадблока.

По нему нужно получить поле, которое хранит название должности.
На скриншоте не видно, предположим оно хранится в UF_NAME.

Если выборка хранит референс, возможно через него должность уже подтянута и можно дотянуться до UF_NAME.
Если нет — читать самостоятельно и выводить, а чтобы каждый раз не отправлялся запрос к базе данных — кешировать компонент.

Если есть необходимость (много мест, где нужна должность), неплохо было бы организовать так, чтобы в системе хранился отдельный кеш, который хранит все должности, привязанные к ID (массив вида
[1] => [ "UF_NAME" => "Лаборант-исследователь",
[2] => [ "UF_NAME" => "Стажер-исследователь",

). И тогда просто по коду записи, из любого места проекта получали бы должность. И чтобы этот кеш хранился «вечно», а перетирался только если добавлена/отредактирована/удалена запись хайлоадблока
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы