Чтобы не было мысли что я где-то дезинформирую, распишу по шагам свои действия.
Создана новая роль у которой установлены следующие права доступа:
Код:
Тип Объекта Объект ID Имя Объекта Чтение Вставка Изменение Удаление Запуск Фильтр защиты
Данные 14 Склад Да Да Да Да Да Location: Код=ТРАНЗИТ
Таблица 0 Да Да Да Да Да
Форма 0 Да Да Да Да Да
Система 0 Да Да Да Да Да
Тестовому пользователю назначена ТОЛЬКО эта роль.
Permissions для таблицы 14 - <Undefined>
Permissions для тестовой формы - <Undefined>
На форме добавлена кнопка с кодом
Код:
Name DataType Subtype Length
_Loc Record Location
_Loc.FINDFIRST;
_Loc.SETPERMISSIONFILTER;
MESSAGE(_Loc.Code);
При нажатии кнопки под тестовым пользователем (перелогинен после настройки прав и редактирования формы) выскакивает сообщение с текстом склада, название которого начинается на А (что с ТРАНЗИТ не совпадает).
Если убрать строку _Loc.SETPERMISSIONFILTER, то ничего не меняется.
При этом если зайти в Object Designer и глянуть записи для Table 14 Location, то видна только одна запись (смотрю там специально, чтобы вы не предположили что на форме были сохранены фильтры)
Причём вот такой код
Код:
_Perm.SETRANGE(_Perm."Role ID",'ТЕСТ');
_Perm.SETRANGE(_Perm."Object Type",_Perm."Object Type"::"Table Data");
_Perm.FINDFIRST;
MESSAGE(FORMAT(_Perm."Object ID")+' '+FORMAT(_Perm."Security Filter"));
на той же кнопке под тестовым пользователем выдаёт
Цитата:
---------------------------
Microsoft Business Solutions-Navision
---------------------------
14 Location: Код=ТРАНЗИТ
---------------------------
ОК
---------------------------
Т.е. фильтры на роли точно есть, они применяются автоматом к формам, таблицам и т.п., но никак не применяются для кода.