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

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

Кандинский 3.1 и обновление телеграмм бота

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

PHP Удалить лишние нули после запятой

Когда в проекте диапазон чисел от 0,0001 до 1 000 000, удобно автоматически удалять лишнии нули после запятой.

dreamShaper Сравнение стилей художников

Погрузитесь в мир цифрового искусства со Stable Diffusion и DreamShaper! В статье мы сравнили стили известных художников и подобрали ключевые слова, чтобы вы смогли создавать свои шедевры.

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

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

Yii2 как получить путь к корню проекта

Узнайте, как правильно получить путь к корню проекта в Yii2 с помощью встроенных инструментов фреймворка.

Комментарии

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