Добрый день. Необходимо отобразить записи в разделе в зависимости от значения колонки-справочника и от роли текущего пользователя. Пример:
"пользователь1" с ролью "роль1" видит в разделе записи со значением колонки "статус": "активно";
"пользователь2" с ролью "роль2" видит в разделе все записи.
Пытался переопределять метод initFixedFiltersConfig, не помогло.
Нравится
Здравствуйте!
Не совсем понятно, как была реализована фильтрация. Но попробую дать иную рекомендацию. Для того, чтобы при загрузке реестра не делать постоянные чтения вхождения польователя в роли, можно создать системную операцию. Например, "Видит все записи раздела" (CanReadAllDataInCustomSection). Дать права на эту системную операцию Роль2. Если ролей и условий больше - количество операций будет увеличиваться.
Далее смотрите в сторону метода getFilters(). Пример можно найти в NUI.ActivitySectionV2.
Реализация приблизительно следующая - в момент инициализации раздела проверяется право на созданную системную операцию. Если права есть - записи загружаются как есть, если прав нет - подключается дополнительный фильтр.
Права на операцию можно проверить, добавив в атрибуты следующий атрибут (см. системные секции, например UsersSectionV2):
"SecurityOperationName": {
dataValueType: Terrasoft.DataValueType.STRING,
value: "CanReadAllDataInCustomSection"
}
SecurityOperationName - будет fasle, если у пользователя нет прав на CanReadAllDataInCustomSection.
Итого, если SecurityOperationName === false, тогда добавляется фильтрация по Вашему условию, иначе ничего не добавляется.
Переопределить getFilters получилось, фильтр исправно накладывается.
Проблема с проверкой доступа на операцию, если использовать простое условие if (this.get("CanReadAllData") === false) { ... }, то оно не выполняется, т.к. значение атрибута равно "CanReadAllDataInCustomSection".
Пробовал использовать RightsUtilities, а конкретно метод checkCanExecuteOperation, но он является асинхронным и не успевает переопределить атрибут.
Решил проблему путем переопределения метода init и добавлением в chain соответствующих методов