Показать сообщение отдельно
Старый 09.10.2010, 16:03   #46  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Чтобы не было мысли что я где-то дезинформирую, распишу по шагам свои действия.
Создана новая роль у которой установлены следующие права доступа:
Код:
Тип Объекта	Объект 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: Код=ТРАНЗИТ
---------------------------
ОК
---------------------------
Т.е. фильтры на роли точно есть, они применяются автоматом к формам, таблицам и т.п., но никак не применяются для кода.