Настройки полей
Пользовательские поля широко используются в продукте. До недавнего времени единственный "общий" интерфейс их настройки находился только в административном разделе.
В облачной версии Битрикс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()