Задать вопрос
@sevnet
Системный аналитик, бизнес-консультант

Как получить название пользовательского поля Битрикс по его коду?

Имеется пользовательское поле CRM, у него есть код: "UF_CRM_1728545307" и название: "Крайняя дата".
В замечательной, самой лучшей в мире документации, сделанной конечно настоящими товарищами, коллегами Б24 для людей, есть ооочень много всего про пользовательские поля:
Детальное описание класса, методы, конструктор
Куча примеров, как с ним работать, добавлять удалять, изменять само поле и его значения.
А так же есть инструкции по работе с событиями добавления/изменения поля.

Но нигде нет описания как получить название существующего поля!
Подскажите кто знает, как получить 'EDIT_FORM_LABEL' , имея 'FIELD_NAME' .
[
	'ID' => 1, // id поля
	'FIELD_NAME' => 'UF_RPA_1_FIELDNAME', // код поля
	'EDIT_FORM_LABEL' => 'Название', // языковое имя поля
	'USER_TYPE_ID' => 'string', // идентификатор типа поля
	'SETTINGS' => [], // массив дополнительных настроек
	'MANDATORY' => 'N', // флаг обязательности
	'MULTIPLE' => 'N', // флаг множественности
	'USER_TYPE' => [], // массив описания типа
];
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@sevnet Автор вопроса
Системный аналитик, бизнес-консультант
$FieldCode = 'UF_CRM_1728545307';
$UF_instance = \Bitrix\Crm\UserField\UserFieldManager::getUserFieldEntity(CCrmOwnerType::Company); //entityTypeID
$UF_arr = $UF_instance->GetFieldById($FieldCode);
$UF_title = $UF_arr['EDIT_FORM_LABEL'];

Очень дорогой для БД запрос, но другого я не придумал.
Ответ написан
Комментировать
Если есть id поля, то всё легко:
<?php
use Bitrix\Main\UserFieldTable;

$id = 1;
$res = UserFieldTable::getFieldData($id);
print_r($res);

Если только символьный код, то чуть сложнее:
<?php
use Bitrix\Main\UserFieldTable;
$fieldName = 'UF_CRM_1728545307';
$res = UserFieldTable::getList([
    'select' => array_merge(['*'], UserFieldTable::getLabelsSelect()),
    'filter' => [
        '=FIELD_NAME' => $fieldName,
    ],
    'limit' => 1,
    'runtime' => [
        UserFieldTable::getLabelsReference(null, 'ru'),
    ]
])->fetchRow();
print_r($res);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы