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

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

CSS залить фон двумя цветами

В статье приводится пример того как можно с помощью CSS залить фон двумя цветами

Полезные библиотеки для web разработки

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

Как в Битрикс 24 открыть страницу в слайдере

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

Bitrix: проверка авторизации пользователя

В статье приводятся примеры кода для проверки авторизован ли пользователь на сайте.

Bitrix Highloadblock Helper

HighloadblockHelper облегчает работу с Highload-блоками в Bitrix делая код чище и понятнее.

Крестовые походы

Погрузитесь в историю Крестовых походов: мрачная Европа, загадочный Восток и события, которые изменили мир.

Комментарии

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