13.03.2014, 23:11 | #1 |
Участник
|
select crossCompany и Views - работает только для админов?
Какие могут быть причины что данный джоб работает только для админов:
X++: static void jobCCView(Args _args) { InventTableExpanded inventTableExpanded; //это View container conCompanies = [curext()]; while select firstonly10 crossCompany:conCompanies inventTableExpanded info(inventTableExpanded.ItemId); } Майкрософт говорит должно работать, оно работает, но почему-то только для пользователей с правами администратора. http://msdn.microsoft.com/en-us/library/cc621079.aspx
__________________
_databaseTransDelete ... bl@$ ! |
|
14.03.2014, 07:14 | #2 |
MCT
|
А обычные пользователи теперь запускают job ?
__________________
Axapta book for developer |
|
14.03.2014, 09:14 | #3 |
NavAx
|
select crossCompany работает только если у пользователя есть права на таблицу!
Без прав на таблицу возвращается пустой курсор, об этом надо помнить. В руководстве разработчика можно найти такую фразу: A cross-company query cannot return data for companies that the user does not have permission to access. A cross-company query can be limited to a subset of the companies that the user is authorized to access. aEremenko: DAX 2009, работа с несколькими компаниями Последний раз редактировалось raz; 14.03.2014 в 09:19. |
|
|
За это сообщение автора поблагодарили: Logger (5). |
14.03.2014, 14:09 | #4 |
Участник
|
Изначально проблема возникла в отчете, это я изолировал ее в job чтобы легче было продемонстрировать.
Но можно и 'обычным' пользователем запускать job: X++: SecurityUtil::sysAdminMode(false);
__________________
_databaseTransDelete ... bl@$ ! |
|
14.03.2014, 14:12 | #5 |
Участник
|
Цитата:
Если убрать crossCompany в select то возвращает данные (опять же из текущей компании), значит не в правах дело ? В любом случае у всех пользователей есть права на все компании.
__________________
_databaseTransDelete ... bl@$ ! |
|
14.03.2014, 14:45 | #6 |
Участник
|
Если используется виртуальная компания то в запросе может использоваться системные таблички VirtualDataAreaList и dataarea
Возможно выключены права к ним. Попробуйте дать доступ на ключ контроля доступа Открытие доступа к домену. |
|
14.03.2014, 15:21 | #7 |
Участник
|
Цитата:
Но я не вижу в AX2012 privilege SysOpenDoman. Technet говорит: Цитата:
Allow non-administrators to create virtual company accounts The system administrator can grant permission to create virtual company accounts to users who are not administrators.
p.s. добавил всю роль Information technology manager, ничего не изменилось...
__________________
_databaseTransDelete ... bl@$ ! Последний раз редактировалось DTD; 14.03.2014 в 15:29. |
|
14.03.2014, 15:28 | #8 |
Участник
|
Цитата:
Невнимательно прочитал. Забыл что в 2012-й все не так Забираю свои слова обратно касательно ключа контроля доступа. по поводу доступа к системным табличкам и вьюхам - проверьте. а лучше включите трассировку запросов и посмотрите что реально уходит к БД |
|
14.03.2014, 15:40 | #9 |
NavAx
|
X++: select Table; X++: select crossCompany:conCompanies Table; Есть три варианта: 1. давать права 2. не использовать crossCompany 3. не использовать crossCompany, но, если нужно запрос по нескольким компаниям, использовать конструкцию на основе Table.company(...); |
|
|
За это сообщение автора поблагодарили: ZVV (1), Logger (3), DTD (1), gl00mie (2). |
14.03.2014, 18:21 | #10 |
Участник
|
Цитата:
Я предположил что к InventTableExpanded будет доступ у всех пользователей, но оказалось что я даже не мог ее открыть в АОТ под неадмином. Подставил в job другую view, которую мог открыть из AOT - BankAccountView. Job заработала. Т.е. можно было провести параллель, - если открывается в AOT значит будет работать в crossCompany. Перепроверил все таблицы в изначальной проблемной view (там пара десятков вьюх и запросов используется внутри) где были проблемы (InventValueReportView), некоторые добавил через Override Access у роли, пока не добился того чтобы она открывалась в браузере таблиц. Job все равно не работала. Перетащил все релевантные view в privilege. Заработали и job и отчет ! Ненавижу views. Спасибо.
__________________
_databaseTransDelete ... bl@$ ! |
|
15.03.2014, 14:39 | #11 |
NavAx
|
|
|
26.03.2014, 09:08 | #12 |
Участник
|
Цитата:
Сообщение от raz
select crossCompany работает только если у пользователя есть права на таблицу!
Без прав на таблицу возвращается пустой курсор, об этом надо помнить. В руководстве разработчика можно найти такую фразу: A cross-company query cannot return data for companies that the user does not have permission to access. A cross-company query can be limited to a subset of the companies that the user is authorized to access. aEremenko: DAX 2009, работа с несколькими компаниями Он, кстати, на проверку этих прав тратит немало процессорного времени. Так что формы начинает ощутимо притормаживать при переходе со строки на строку безо всяких запросов к БД и при первоначальной отрисовке грида (глазами видно как он строку за строкой прорисовывает). Т.е. тупит ax32.exe - жрет процессорное время. Вы не знаете возможно как-то отключить эту проверку ? Например сделать некий аналог серверного X++: unchecked(Uncheck::TableSecurityPermission) Последний раз редактировалось Logger; 26.03.2014 в 09:33. |
|