|
![]() |
#1 |
Administrator
|
настройка прав пользователя, очевидно
|
|
![]() |
#2 |
MCTS
|
|
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Участник
|
Раз на форме отображаются только выборочные по фильтру записи, то фильтры защиты работают. А раз они работают, то как я понимаю выход за разрешённый диапазон должен сопровождаться ошибкой. Как можно так настроить права доступа, чтобы форма фильтровалась секьюрити фильтрами, а в коде был полный игнор их?
|
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от grif
![]() Раз на форме отображаются только выборочные по фильтру записи, то фильтры защиты работают. А раз они работают, то как я понимаю выход за разрешённый диапазон должен сопровождаться ошибкой. Как можно так настроить права доступа, чтобы форма фильтровалась секьюрити фильтрами, а в коде был полный игнор их?
В коде, если не применять инструкцию SETPERMISSIONFILTER() секьюрити фильтры применяться не будут, делать можно все, что угодно в коде. Но при попытке открыть форму на записи из закрытого диапазона возникнет ошибка. Включатся форменные механизмы обработки фильтров. |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от romeo
![]() Настроенные секьюрити фильтры работают на формах, для этого ничего дополнительно писать не нужно. Видимо эти фильтры неявно накладываются.
В коде, если не применять инструкцию SETPERMISSIONFILTER() секьюрити фильтры применяться не будут, делать можно все, что угодно в коде. Но при попытке открыть форму на записи из закрытого диапазона возникнет ошибка. Включатся форменные механизмы обработки фильтров. |
|
![]() |
#7 |
Участник
|
Нет, в коде ошибка при чтении записи из запрещенного диапазона вываливаться не должна. Именно поэтому почти бессмысленно настраивать секьюрити фильтры на функиональность, которая широко юзается. Потому что образовавшихся брешей и дыр будет немеряно. Закрыть ими можно и целесообразно что-то новое, написанное недавно.
|
|
![]() |
#8 |
Administrator
|
раз проблема так актуальна, то очередной раз акцентирую на возможное различие в правах пользователя, под которым тестируете!
может быть у него какая-то такая роль есть, которая снимает это ограничение (предоставляет доступ ко всей таблице)? нигде вместо "да" не стоит "косвенно"? опять же, Андрей прав, синхренизированы ли пользователи? с лицензией вряд ли связано: либо видим, либо не видим. пермишны на объектах одинаковые, раз объекты одинаковые. |
|
![]() |
#9 |
Administrator
|
снести зуп файлы?
Бог знает что там может быть понаписано... |
|
![]() |
#10 |
Участник
|
|
|
![]() |
#11 |
Administrator
|
))))))))
востановить таблицы? индексы послетали? ну у меня креатив кончился ![]() жду результатов |
|
![]() |
#12 |
Участник
|
Есть возможность настраивать секьюрити фильтры для фирмы.. Может быть фирмы разные в двух базах? ))
|
|
![]() |
#13 |
Участник
|
Цитата:
Если перейти к конкретике, то права настроены для всех фирм и сделано это одинаково в двух базах. |
|
![]() |
#14 |
Участник
|
Тестирую на таблице-справочнике в которой 100 записей. Фильтрую по первичному ключу (одно поле Code). Да и проблема на нескольких разных таблицах выявляется. Кстати ещё выяснил, что вызов функции SETPERMISSIONFILTER не устанавливает никаких фильтров на запись
|
|
![]() |
#15 |
Участник
|
Чтобы не было мысли что я где-то дезинформирую, распишу по шагам свои действия.
Создана новая роль у которой установлены следующие права доступа: Код: Тип Объекта Объект 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: Код=ТРАНЗИТ --------------------------- ОК --------------------------- |
|
![]() |
#16 |
Участник
|
Немного всё таки дезинформировал из-за спешки
![]() В коде установка фильтров безопасности стояла не в том месте Код: _Loc.FINDFIRST; _Loc.SETPERMISSIONFILTER; MESSAGE(_Loc.Code); Код: _Loc.SETPERMISSIONFILTER; _Loc.FINDFIRST; MESSAGE(_Loc.Code); |
|
![]() |
#17 |
Участник
|
Не должно быть ошибки - код всегда работает с полным набором данных.
Хотите наложить в коде "фильтры доступа" - вызывайте SETPERMISSIONFILTER |
|