Просмотров: 59817
Дата последнего изменения: 11.09.2025
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
4
5
Недоступно в лицензиях:
Ограничений нет
Пользовательские поля можно добавить к любому объекту, который изначально их не поддерживает. Например, для объекта BLOG_RATING
необходимо добавить поле Рейтинг
.
- Создайте поле с помощью метода
Add
класса CUserTypeEntity
. В параметрах обязательно передайте:
ENTITY_ID
— объект. Укажите BLOG_RATING
.
FIELD_NAME
— код поля, например, UF_RATING
.
USER_TYPE_ID
— тип данных. Укажите double
— число.
$type = new CUserTypeEntity();
$type->Add([
'ENTITY_ID' => 'BLOG_RATING',
'FIELD_NAME' => 'UF_RATING',
'USER_TYPE_ID' => 'double',
// необязательно
'SETTINGS' => [
'DEFAULT_VALUE' => 5,
],
'LIST_COLUMN_LABEL' => [
'ru' => 'Рейтинг',
],
'LIST_FILTER_LABEL' => [
'ru' => 'Рейтинг',
],
'EDIT_FORM_LABEL' => [
'ru' => 'Рейтинг',
],
'HELP_MESSAGE' => [
'ru' => 'Подсказка',
],
]);
- Запишите значение с помощью менеджера полей.
/**
* @var \CUserTypeManager $manager
*/
$manager = \Bitrix\Main\UserField\Internal\UserFieldHelper::getInstance()->getManager();
$entityId = 'BLOG_RATING';
$itemId = 123;
$fields = [
'UF_RATING' => 50,
];
$manager->Update($entityId, $itemId, $fields);
- Прочитайте данные с помощью методов
GetUserFieldValue
и GetUserFields
.
/**
* @var \CUserTypeManager $manager
*/
$manager = \Bitrix\Main\UserField\Internal\UserFieldHelper::getInstance()->getManager();
$entityId = 'BLOG_RATING';
$itemId = 123;
$specificValue = $manager->GetUserFieldValue($entityId, 'UF_RATING', $itemId);
$allFields = $manager->GetUserFields($entityId, $itemId);
Такой способ требует ручного управления данными и не работает с методом GetList
, но позволяет использовать поля в собственных компонентах и модулях.