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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2010, 17:11   #1  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от BOAL Посмотреть сообщение
Че-то не очень ясно пока, где что.
РЛС на КастТабле?
Да.

Цитата:
Из нее строится подзапрос через отдельную кверю?
Нет (или я логики не понял). Попробую ещё раз пояснить. Есть отчет, который печатает счет, данные берутся из журнала "Накладная с произвольным текстом", в котором в качестве Query указана упомянутая таблица. Дальше конечно же идет связь с CustInvoiceLine, но это это сейчас не важно.
Главное, что при инициализации отчета на CustTable накладывается Range программным путём. RecId для значения берется из аргументов отчета:
X++:
qbds = this.query().datasourceTable(TableNum(CustInvoiceTable));
qbds.addRange(fieldnum(CustInvoiceTable, RecId)).value(queryValue(_recId));
Далее работает стандартный набор методов отчета.


Цитата:
РЛС работает как фильтр записей, их как будто нет в таблице, на другую логику не влияет.
То есть, если в КастТабл 10 записей, а после РЛС 2, то отработает по двум
В том и дело, что у меня отбирается одна запись для извлечения информации из нее, она не должна попадать под действие RLS.

Цитата:
Нужно видеть, код, и к чему применен метод использования РЛС
Только наложение Range. Другого кода я не нашел.

Цитата:
(для квери он по умолчанию вкл, для селекта выкл - есть методы вкл/выкл)
Методы для вкл/выкл не вызываются.

Где покопать?

Последний раз редактировалось Prophetic; 09.02.2010 в 17:19.
Старый 09.02.2010, 18:49   #2  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
Это стандартный отчет? Он с карточки клиента вызывается?
Как связан клиент с таблицей накладных по рекид? (с чего эта связь вообще есть)
Если РЛС на клиента и он виден, то в отчет попадут все строки по нему, на накладных же нет рлс?

Куда копать - вырубить рлс, проверить, что без него все ок
Изучить состав рлса - там может быть чит, когда на рекИд вешают условие по ИЛИ, потому РекИд и перекрыт
За это сообщение автора поблагодарили: Prophetic (1).
Старый 11.02.2010, 14:16   #3  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от BOAL Посмотреть сообщение
Это стандартный отчет? Он с карточки клиента вызывается?
Как связан клиент с таблицей накладных по рекид? (с чего эта связь вообще есть)
Если РЛС на клиента и он виден, то в отчет попадут все строки по нему, на накладных же нет рлс?

Куда копать - вырубить рлс, проверить, что без него все ок
Изучить состав рлса - там может быть чит, когда на рекИд вешают условие по ИЛИ, потому РекИд и перекрыт
Наверное, нужно уточнить, что отчет не стандартный, по-сути, печатная форма документа, в шапку которого попадает информация из выделенной строки в журнале CustInvoiceTrans (соответственно, в отчет передается recId), и табличной части (приходит по join, но это нас сейчас не волнует).
Если RLS не включено, то все работает.

Вот как выглядит запрос после применения RLS (я еще добавил пустой Range в Query запроса, а в методе init добавляется значение этого Range):
X++:
SELECT * FROM CustInvoiceTable WHERE (((CustInvoiceTable.JuridicalPersonId!="XXXXXXXX") && (CustInvoiceTable.JuridicalPersonId!="XXXXXXXX")) OR 
(RecId = 5637147356)) JOIN * FROM CustInvoiceLine WHERE 
CustInvoiceTable.RecId = CustInvoiceLine.ParentRecId
На чит похоже? Или так и должно быть?
Старый 12.02.2010, 09:46   #4  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
нет у меня общего понимания все равно.
нет исходного кода, который генерит этот запрос в итоге, нет запроса самого РЛС, чтоб понять, чему и как он мешает.
Я обычно проверяю не просмотром запроса в переводе для сиквела, а просмотром самой Квери (в виде дерева запроса).
Старый 12.02.2010, 10:56   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Вот как выглядит запрос после применения RLS...
я так понимаю не устраивает вас то, что к условиям RLS на JuridicalPersonId ваше условие на RecId добавилось через OR. По логики, нужно бы через AND. Так?

1) Почему это произошло? По всей видимости для реализации RLS, система использует расширенный синтаксис задания range, причём добаляет это условие в range по RecId. Т.е когда вы добавляете своё собственно условие на RecId, в нём уже сидит условие от RLS. Но дело в том, что если последовательно добавлять range на одно и тоже поле, то условия будут добавляться через ИЛИ. Так устроен range.

2) Что делать? Можно попробовать следующее:
Вариант №1. Для позиционирования на нужной записи использовать какой-нибудь другой ключ, не RecId.
Вариант №2. Для добавления своего условия по RecId использовать расширенный синтаксис, но добавлять это условие не на RecId, а на какое-нибудь другое поле.
Вариант №3. Для добавления своего условия по RecId не добавлять новый range, а изменить существующий. Те вместо addRange использовать findRange.

P.S.: Опередили
За это сообщение автора поблагодарили: Prophetic (1).
Старый 12.02.2010, 13:35   #6  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
С этим вопросом практически всё понятно.
Благодарю всех за ответы.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Gustav: Unsorted, или Записки DAX-дилетанта - II Gustav DAX Blogs 39 20.05.2009 15:34
Особенности настройки RLS на склад DreamCreator DAX: Администрирование 0 19.02.2009 17:59
Динамические контролы в отчете основанные на display-методе petr DAX: Программирование 19 18.09.2006 15:29
Проблема с RLS и SecurityKey. oip DAX: Программирование 3 22.12.2005 17:26
dialog в отчёте gaenar DAX: Программирование 6 14.04.2005 11:15

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

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

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