Документация для разработчиков
Темная тема

Настройки полей

Пользовательские поля широко используются в продукте. До недавнего времени единственный "общий" интерфейс их настройки находился только в административном разделе.

В облачной версии Битрикс24 административного раздела нет, что усложняет доступ к настройкам. Каждый модуль, использующий пользовательские поля, делал свои интерфейсы для показа и управления настройками пользовательских полей. При этом сам набор этих настроек абсолютно одинаковый для всех модулей.

В модуле RPA (Роботизация бизнеса) пользовательские поля являются основным способом хранения данных. Понадобился интерфейс настройки полей, аналогичный тому, что есть в административном разделе или CRM.

Принято решение сделать единый интерфейс доступа, а также единую точку входа для Rest.

Т.к. доступ к настройкам должен иметь ограниченный круг лиц, (а к некоторым пользовательским полям, типа UF_DEPARTMENT, доступа не должно быть вовсе), была разработана следующая схема:

  • В ядре есть абстрактный класс UserFieldAccess, который отвечает за ограничение доступа к настройкам;
  • Каждый модуль должен иметь свой наследник этого класса;
  • Указание наследника делается через файл .settings.php модуля.

Во всех запросах к настройкам пользовательских полей через публичную часть, или через Rest, указывается идентификатор модуля. По идентификатору загружаются настройки модуля и в них пытается найти путь к файлу-наследнику:

  • Если он не найден, то выводится ошибка:
  • Если найден, то наследник сам определяет, какие настройки доступны для пользователя.

Чтобы наследник был найден, в файл .settings.php необходимо добавить запись вида:


return [
	'userField' => [
		'value' => [
			'access' => 'MyModule\\UserFieldAccess', // FQN-путь к наследнику
		],
	],
];

Публичная часть

Компоненты

  • Компонент main.field.config.list - список полей;
  • Компонент main.field.config.detail - настройки поля.

Компоненты подключены в файлах в публичной части intranet в папке с файлами для настройки портала:

  • Облачная версия
    • /settings/configs/userfield_list.php для списка;
    • /settings/configs/userfield_detail.php для настройки.
  • Коробочная версия
    • /configs/userfield_list.php для списка;
    • /configs/userfield_detail.php для настройки.

Актуальный путь к файлу можно получить с помощью методов \Bitrix\Intranet\Util::getUserFieldListConfigUrl() и \Bitrix\Intranet\Util::getUserFieldDetailConfigUrl()



© «Битрикс», 2001-2024, «1С-Битрикс», 2024