Bitrix получить значения списочного поля

Поле типа список - это поле, которое позволяет выбрать один или несколько вариантов из предопределенного списка. Например, вы можете создать поле "Тип клиента", где будут доступны варианты "Физическое лицо", "Юридическое лицо", "ИП" и т.д.
При разработке часто нужно получить все или какие-то конкретные значения списка.
Ниже приведены примеры как это можно сделать.

Получить все варианты значений поля

Всю необходимую информацию о пользовательском поле: ID, название поля (код), к какому объекту привязно поле, можно узнать в админке в разделе Настройки - Пользовательские поля.

Используя ID поля

$res = \CUserFieldEnum::GetList(array(), array(
	"USER_FIELD_ID" => 239 
));
while($row = $res->Fetch()) { var_dump($row); }

USER_FIELD_ID - ID пользовательского поля;

Используя код поля

Вариант 1

Можно получить значения используя только код поля, НО если на портале есть поля с одинаковым кодом привязанные к разным объектам, в результате можно получить значения не того списка. Более надежный способ представлен в варианте 2.

$res = \CUserFieldEnum::GetList(array(), array(
	"USER_FIELD_NAME" => "UF_CRM_1541699881"
));
while($row = $res->Fetch()) { var_dump($row); }
Вариант 2

В данном примере с начала загружаем информацию о самом поле по его коду (FIELD_NAME) и с указанием объекта к которому оно привязано. Затем уже на основе полученных данных извлекаем ID поля и загружаем список значений на его основе.

На проекты могут быть пользовательские поля с одинаковым кодом, например: UF_REGION, привязанные к разным объектам, именно чтобы избежать получения значений не того поля и делается первый запрос с фильтром по нужному объекту.

$fieldInfo = \Bitrix\Main\UserFieldTable::GetList(array(
  'select' => array('*'),
  'filter' => array('FIELD_NAME' => 'UF_CRM_1541699881', 'ENTITY_ID' => 'CRM_DEAL')
))->Fetch();

$res = \CUserFieldEnum::GetList(array(), array(
	"USER_FIELD_ID" => $fieldInfo['ID'] 
));
while($row = $res->Fetch()) {
	var_dump($row);
}

FIELD_NAME - код пользовательского поля;
ENTITY_ID - объект к которому привязано поле;

Пример результата работы:

array(6) {
  ["ID"]=>
  string(1) "7"
  ["USER_FIELD_ID"]=>
  string(2) "72"
  ["VALUE"]=>
  string(14) "Плиткой"
  ["DEF"]=>
  string(1) "N"
  ["SORT"]=>
  string(3) "500"
  ["XML_ID"]=>
  string(5) "table"
}
array(6) {
  ["ID"]=>
  string(1) "8"
  ["USER_FIELD_ID"]=>
  string(2) "72"
  ["VALUE"]=>
  string(14) "Списком"
  ["DEF"]=>
  string(1) "N"
  ["SORT"]=>
  string(3) "500"
  ["XML_ID"]=>
  string(4) "list"
}
array(6) {
  ["ID"]=>
  string(1) "9"
  ["USER_FIELD_ID"]=>
  string(2) "72"
  ["VALUE"]=>
  string(16) "Таблицей"
  ["DEF"]=>
  string(1) "N"
  ["SORT"]=>
  string(3) "500"
  ["XML_ID"]=>
  string(5) "price"
}

Получить конкретный вариант значения поля

<?
$res = \CUserFieldEnum::GetList(array(), array("ID" => 7));
$row = $res->Fetch();
var_dump($row);
?>

Пример результата работы:

array(6) {
  ["ID"]=>
  string(1) "7"
  ["USER_FIELD_ID"]=>
  string(2) "72"
  ["VALUE"]=>
  string(14) "Плиткой"
  ["DEF"]=>
  string(1) "N"
  ["SORT"]=>
  string(3) "500"
  ["XML_ID"]=>
  string(5) "table"
}

Рубрики: PHP Bitrix

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Как добавить свою вкладку в карточку элемента СРМ?

Вкладки в карточках элементов CRM очень удобное решение. В этой статье разберем как добавить свою вкладку в карточку элемента CRM с помощью создания обработчика на событие.

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.

Bitrix регистрация своего события

В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.

Как в bitrix получить параметры запроса

Из этой статьи вы узнаете, какие классы и методы в bitrix помогут получить данные запроса без использования глобальных переменных. Это важный навык, который обязательно пригодится в вашей работе.

Bitrix подключить класс компонента

В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств

Комментарии

Vlad [07.12.2023]
Пригодилось, спасибо
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК