Дата последнего изменения: 05.09.2025
Иногда возникает необходимость создавать пользовательские поля к объектам, у которых нет поддержки пользовательских полей по умолчанию. В таком случае, можно самостоятельно создать пользовательское свойство для этого объекта Помните при этом, что в методах GetList поддерживаются только системные объекты. .
Рассмотрим это на примере комментариев блога. Например, у каждого комментария необходимо создавать свойство Рейтинг.
Создаем в административной части пользовательское свойство нужного типа (Настройки > Настройки продукта > Пользовательские поля). Заполняем все поля, в поле Объект указываем любое придуманное имя объекта, главное, чтобы оно было уникально. В нашем случае, напишем BLOG_RATING
.
$type = new CUserTypeEntity(); $type->Add([ 'ENTITY_ID' => 'BLOG_POST', '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);
Для чтения значений пользовательских свойств можно использовать:
/** * @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 для объектов с поддержкой пользовательских свойств по умолчанию. Однако, он позволяет максимально быстро и просто использовать в самописных компонентах и модулях пользовательские свойства для произвольных объектов.