509 слов | 3 минуты
Пользовательские поля в 1С-Битрикс
Пользовательское поле — это механизм, который позволяет добавлять к объектам системы (пользователям, элементам инфоблоков, лидам CRM и т.д.) дополнительные поля, не предусмотренные стандартным набором атрибутов модуля.
Что такое пользовательское поле
Пользовательские поля создаются администратором или разработчиком без программирования и сразу становятся доступны в формах редактирования соответствующих объектов. Для каждого объекта можно завести сколько угодно полей; набор доступных настроек зависит от выбранного типа данных.
Важно не путать два похожих термина:
- Пользовательские поля — общесистемный механизм для модулей (пользователи, блоги, задачи, CRM и др.).
- Свойства инфоблоков — отдельный механизм специально для элементов и разделов инфоблоков. В формах админки их иногда тоже называют «пользовательскими свойствами», что создаёт путаницу.
Пользовательские поля vs свойства инфоблоков
| Критерий | Пользовательские поля | Свойства инфоблоков |
|---|---|---|
| Универсальность | Можно подключить к любому модулю, поддерживающему механизм | Только для инфоблоков |
| Набор типов данных | Ограниченный | Более широкий и гибкий |
| Где настраиваются | Настройки → Настройки продукта → Пользовательские поля | Настройки конкретного инфоблока |
Итог: пользовательские поля шире по охвату (работают в разных модулях), но проще по возможностям типов данных.
Какие модули поддерживают пользовательские поля
Поддержка пользовательских полей определяется объектом, который указывается при создании поля. Не каждый модуль предоставляет такие объекты «из коробки» — разработчик может зарегистрировать свой объект, но в типовых методах выборки (GetList) гарантированно работают только системные объекты.
| Модуль | Объект | Назначение |
|---|---|---|
| Главный модуль | USER |
Пользователь |
| Блоги | BLOG_BLOG |
Блог |
BLOG_POST |
Сообщение в блоге | |
BLOG_COMMENT |
Комментарий к сообщению | |
| Задачи | TASKS_TASK |
Задача |
TASKS_TASK_CHECKLIST |
Чек-лист в задаче | |
TASKS_TASK_TEMPLATE |
Шаблон задачи | |
| Информационные блоки | IBLOCK_N |
Инфоблок с ID = N |
IBLOCK_N_SECTION |
Раздел инфоблока с ID = N | |
| Highload-блоки | HLBLOCK_N |
Highload-блок с ID = N |
| Календарь | CALENDAR_EVENT |
Событие календаря |
| Обучение | LEARN_ATTEMPT |
Попытка теста |
| Социальная сеть | SONET_GROUP |
Группа соцсети |
SONET_COMMENT / SONET_LOG |
Комментарии и логи соцсети | |
| Форум | FORUM_MESSAGE |
Сообщение форума |
| Библиотека документов | WEBDAV |
Библиотека документов |
| Торговый каталог | PRODUCT* |
Товар |
CAT_STORE |
Склад | |
CAT_STORE_DOCUMENT_* |
Документы складского учёта | |
| CRM | CRM_LEAD, CRM_DEAL, CRM_COMPANY, CRM_CONTACT, CRM_ORDER, CRM_INVOICE, CRM_QUOTE |
Сущности CRM |
CRM_TIMELINE, CRM_MAIL_TEMPLATE |
Таймлайн, шаблоны писем | |
| Роботизация (RPA) | RPA_(id процесса) |
Робот |
* Для объектов, отмеченных звёздочкой, в GetList поддерживаются только системные пользовательские поля.
Модули, работающие с инфоблоками, могут одновременно использовать и объекты пользовательских полей модуля «Информационные блоки».
Создание полей
Пользовательские поля можно создать двумя способами:
- Через административную часть: Настройки → Настройки продукта → Пользовательские поля.
- Через ссылку «Добавить пользовательское свойство» прямо в форме редактирования объекта (если она предусмотрена) — этот способ предпочтительнее, так как поле сразу привязывается к нужному объекту без необходимости искать его в общем списке.
При выборе типа поля система показывает дополнительные настройки, специфичные именно для этого типа (например, для списка — варианты значений, для привязки к элементам — список инфоблоков).
Рекомендации по выбору
| Сценарий | Что использовать |
|---|---|
| Нужно дополнить элемент/раздел инфоблока | Свойства инфоблока |
| Нужно дополнить пользователя, лид, сделку, задачу и т.п. | Пользовательские поля |
| Нужны сложные типы значений и гибкая фильтрация | Свойства инфоблока |
| Поле нужно для нескольких разных модулей одновременно | Пользовательские поля |
Важна совместимость с типовым GetList |
Только системные объекты пользовательских полей |
Выводы
- Пользовательские поля и свойства инфоблоков — разные механизмы, хотя в интерфейсе их иногда называют одинаково.
- Пользовательские поля более универсальны по охвату модулей, но ограничены набором типов данных.
- Поддержка пользовательских полей зависит от наличия зарегистрированного объекта у модуля; полный список системных объектов фиксирован.
- В стандартных методах выборки (
GetList) надёжно работают только системные объекты пользовательских полей. - Создавать поле лучше через форму редактирования объекта — так оно автоматически привязывается к нужному объекту.
Подробное описание см. в документации по Bitrix Framework: https://docs.1c-bitrix.ru/pages/cms-basics/userfields.html