AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.12.2004, 18:31   #1  
sassas
Гость
 
n/a
recordLevelSecurity(true)
Народ, рассудите:

Установка recordLevelSecurity(true) у табличной переменной работает якобы только в 2-х звенке (т.е. при исполнении метода класса на клиенте). А если выполнение на сервере - то запрос идет по всей таблице, независимо от настроек.

Сам не проверял, возможно, все зависит от нашего SP1 и кривой установки (хотя маловероятно).

Кто нибудь сталкивался с этой фичей?
Как там на SP2 и SP3?

AXAPTA 3.0
Старый 22.12.2004, 21:39   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
есть разные мнения по этому вопросу.
у некоторых так, у некоторых эдак.
но аналогичные вопросы были.

порыть стоит в следующем направлении - где создается "табличная переменная" и где вызывается метод recordLevelSecurity(true).

Похоже, что если переменная создается на сервере И метод вызывается на сервере, то ограничения на сервере работают нормально. А вот если либо переменная, либо метод вызываются на клиенте, то до сервера ничего доходит. И похоже, это правильно.

Но точного и однозначного мнения пока никто не высказал.
И я, например, не знаю тщательных исследований этого вопроса.
Старый 23.12.2004, 11:49   #3  
sassas
Гость
 
n/a
спасибо.

Методы и табл переменные я сам определял, старался чтобы все происходило исключительно на сервере. Собственно, метод и использует переменную. В нем же и секьюрити, естественно, врубается...

Сейчас буду сам рыть.
Старый 23.12.2004, 13:18   #4  
sassas
Гость
 
n/a
Все так и работает, как предсказывал Гидрометеопрогрноз

Метод выполняется на сервере, табличная переменная объявляется в нем и только им используется. При этом при исполнении метода на сервере RLS отваливается...

1.Может ли при этих условиях табличная переменная "жить на клиенте"?
2.Как "форсануть" создание табличной переменной на нужном тире?

3.Как называется класс, ответственный за RLS? (поиском нашел в баг-листе МБС класс RLSHeader, но не обнаружил его в АОТе)
Старый 23.12.2004, 15:16   #5  
Zom is offline
Zom
Участник
 
41 / 11 (1) +
Регистрация: 28.08.2003
Адрес: Denmark
Насколько мне изветсно RecordLevelSecurity в Axatpa работают только как фильтр при отображении данных (например, на форме в гриде). Т.е. запрашиваются и передаются все данные в 2 и 3-tier, а потом фильтруются в зависимости от настроек RecordLevelSecurity.
Старый 23.12.2004, 15:24   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Zom
Насколько мне изветсно RecordLevelSecurity в Axatpa работают только как фильтр при отображении данных (например, на форме в гриде).
Не совсем так.
метод recordLevelSecurity(true) как раз заставляет применять фильтр и на табличных переменных в коде.
Старый 23.12.2004, 15:28   #7  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Т.е. запрашиваются и передаются все данные в 2 и 3-tier, а потом фильтруются в зависимости от настроек RecordLevelSecurity.
Хм... насколько я помню фильтрация происходит на сервере, а sql запрос формируется в соответствии с наложенными фильрами.
Старый 23.12.2004, 15:40   #8  
Zom is offline
Zom
Участник
 
41 / 11 (1) +
Регистрация: 28.08.2003
Адрес: Denmark
Цитата:
Изначально опубликовано mazzy

Не совсем так.
метод recordLevelSecurity(true) как раз заставляет применять фильтр и на табличных переменных в коде.
Прошу меня простить, я ошибся. Действительно, при использовании recordLevelSecurity происходит модификация SQL-запроса и выбираются только необходимые данные.

Однако, если, к примеру, в таблице много полей, и пользователь видит только часть из них, все равно Axapta будет передавать полный record из базы данных, включая "невидымые" для текущего пользователя поля.
Старый 23.12.2004, 15:45   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Однако, если, к примеру, в таблице много полей, и пользователь видит только часть из них, все равно Axapta будет передавать полный record из базы данных, включая "невидымые" для текущего пользователя поля.
Это как ? Я про "невидимые пользователю поля". Ограничения же накладываются на уровне строк.
Старый 23.12.2004, 15:54   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Zom
Однако, если, к примеру, в таблице много полей, и пользователь видит только часть из них, все равно Axapta будет передавать полный record из базы данных, включая "невидымые" для текущего пользователя поля.
А это управляется свойством OnlyFetchActive на форме или Dynamic в отчете
Старый 23.12.2004, 15:56   #11  
Zom is offline
Zom
Участник
 
41 / 11 (1) +
Регистрация: 28.08.2003
Адрес: Denmark
Цитата:
Изначально опубликовано Андре


Это как ? Я про "невидимые пользователю поля". Ограничения же накладываются на уровне строк.
Я имел ввиду то, что не обязательно на форме должны показываться все поля из таблицы. Например, мало где можно увидеть поле RecId или dataAreaId. Или если пользователь не должен видеть, например, баланс на аккаунте в Chart of accounts. Даже если на форме всего 1 поле - будет передаваться вся строка из DB в клиентскую часть Axapta.
Старый 23.12.2004, 16:03   #12  
Zom is offline
Zom
Участник
 
41 / 11 (1) +
Регистрация: 28.08.2003
Адрес: Denmark
Thumbs up
Цитата:
Изначально опубликовано mazzy

А это управляется свойством OnlyFetchActive на форме или Dynamic в отчете
Эхх, я только хотел написать это в виде Tip of the Week оптимизации Axapta, как mazzy меня уже опередил
Старый 23.12.2004, 16:44   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Zom
Tip of the Week
А где они будут публиковаться?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
recordLevelSecurity Nikolaich DAX: Программирование 2 12.02.2009 10:34
palleagermark: Bug in EP 2009 when having the debug flag set to true Blog bot DAX Blogs 0 05.01.2009 11:06
COM Word и font.bold(true) vadimiron DAX: Программирование 5 31.07.2008 23:40
Метод prev() класса FormDataSource всегда возвращает True Morpheus DAX: Программирование 3 08.09.2006 11:13
visible(true) и курсор mvf DAX: Программирование 6 20.07.2005 10:09
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:05.