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 получить параметры запроса

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

Комментарии

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