261  /  331

Пользовательские поля

Просмотров: 10104 (Статистика ведётся с 06.02.2017)

Пользовательское поле - инструмент, позволяющий добавлять к объектам системы поля, не предусмотренные штатным функционалом.

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

Пользовательские поля это сущность:

  • более универсальная, так как их можно задать для разных объектов системы, в отличие от свойств инфоблока,
  • более ограниченная по возможностям, так как имеет небольшое число типов данных.

Пользовательские поля могут создаваться в неограниченном количестве для каждого объекта. При выборе того или иного типа пользовательского поля становятся доступными дополнительные поля настройки для соответствующего типа. Детально об этом можно узнать в документации.

Применение пользовательских полей в системе к тем или иным модулям задаётся с помощью объектов, которые необходимо указать при создании поля. Не все модули имеют объекты для пользовательских полей по умолчанию. Разработчик может создавать собственные объекты, но надо понимать, что в методах GetList поддерживаются только системные объекты:

Штатные объекты пользовательских полей
Модуль Объект Описание
Главный модуль USER для пользователя
Блоги BLOG_BLOG для блога
BLOG_POSTдля сообщения в блоге
BLOG_COMMENTдля комментария сообщения
Задачи TASKS_TASK для задач
Информационные блокиIBLOCK_N_SECTION для секций инфоблока с ID = N
IBLOCK_N Для инфоблока с ID = N
Календарь CALENDAR_EVENT для событий календаря
Обучение LEARN_ATTEMPT для попыток теста
Социальная сеть SONET_GROUP для групп соцсети
Библиотека документов WEBDAV для библиотек документов
Форум FORUM_MESSAGE для сообщений форума
Highload-блоки HLBLOCK_N для highload-блока с ID=N

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

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

Создание пользовательских полей из Административной части выполняется на странице Настройки > Настройки продукта > Пользовательские поля либо, что предпочтительнее, с использованием ссылки Добавить пользовательское свойство в тех формах системы, в которых предусмотрено штатное добавление пользовательских свойств:

  • форма добавления/редактирования пользователя;
  • форма добавления/редактирования раздела информационного блока;
  • форма добавления/редактирования блога

Использовать страницу Пользовательские поля можно в случае, если разработчик точно знает, какой идентификатор типа объектов ему нужен.

Работа со списком и формой создания не должна вызвать затруднений, но есть несколько нюансов.

Установка флажка в поле Не разрешать редактирование пользователем исключит возможность редактирования свойства не только пользователем, но и администратором через административный интерфейс. Значение таких свойств нужно устанавливать используя API. Это нужно для служебных полей, которые не должны использовать пользователи.

Пользовательские поля могут создаваться с разными типами данных. По умолчанию в системе предусмотрены следующие типы:

  • Число;
  • Да/Нет;
  • Видео;
  • Шаблон;
  • Список;
  • Строка;
  • Дата;
  • Дата со временем;
  • Привязка к элементам highload-блоков;
  • Привязка к разделам инф. блоков;
  • Привязка к элементам инф. блоков;
  • Привязка к элементам CRM;
  • Привязка к справочникам CRM;
  • Файл;
  • Целое число.
  • Документ из библиотеки документов
  • Привязка к сотруднику
  • Документ истории из библиотеки документов
  • Опрос

Как правило, этих типов вполне хватает для работы. Если есть необходимость создания собственных типов данных, то это можно сделать самостоятельно. Пример добавления типов данных "Связь с элементом" и "Связь с элементом в виде списка" (блог).

Для работы с пользовательскими полями можно использовать События.

События Главного модуля при работе с пользовательскими полями:

Событие Вызывается Метод
OnUserTypeBuildList при построении списка пользовательских полей CUserTypeManager::GetUserType
OnUserTypeRightsCheck при проверке прав доступа на пользовательские поля GetRights.


14
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии