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 поддерживаются только системные пользовательские поля.

Модули, работающие с инфоблоками, могут одновременно использовать и объекты пользовательских полей модуля «Информационные блоки».

Создание полей

Пользовательские поля можно создать двумя способами:

  1. Через административную часть: Настройки → Настройки продукта → Пользовательские поля.
  2. Через ссылку «Добавить пользовательское свойство» прямо в форме редактирования объекта (если она предусмотрена) — этот способ предпочтительнее, так как поле сразу привязывается к нужному объекту без необходимости искать его в общем списке.

При выборе типа поля система показывает дополнительные настройки, специфичные именно для этого типа (например, для списка — варианты значений, для привязки к элементам — список инфоблоков).

Рекомендации по выбору

Сценарий Что использовать
Нужно дополнить элемент/раздел инфоблока Свойства инфоблока
Нужно дополнить пользователя, лид, сделку, задачу и т.п. Пользовательские поля
Нужны сложные типы значений и гибкая фильтрация Свойства инфоблока
Поле нужно для нескольких разных модулей одновременно Пользовательские поля
Важна совместимость с типовым GetList Только системные объекты пользовательских полей

Выводы

  1. Пользовательские поля и свойства инфоблоков — разные механизмы, хотя в интерфейсе их иногда называют одинаково.
  2. Пользовательские поля более универсальны по охвату модулей, но ограничены набором типов данных.
  3. Поддержка пользовательских полей зависит от наличия зарегистрированного объекта у модуля; полный список системных объектов фиксирован.
  4. В стандартных методах выборки (GetList) надёжно работают только системные объекты пользовательских полей.
  5. Создавать поле лучше через форму редактирования объекта — так оно автоматически привязывается к нужному объекту.

Подробное описание см. в документации по Bitrix Framework: https://docs.1c-bitrix.ru/pages/cms-basics/userfields.html