![]() |
#5 |
Участник
|
Заметил странное поведение sysDictField. (Ax2009 RU5)
При работе на серверной и клиентской части есть различия в поведении... Например для пользователя, у которого нет прав на ключ PurchTables, но есть право на просмотр таблицы PurchTable, код : X++: static server void test2() { SysDictField sysDictField = new SysDictField(tablenum(PurchTable), fieldnum(PurchTable, PurchId)); boolean visible; ; visible = sysDictField.visible(); info(strfmt("%1", visible)); } X++: static client void test2() { SysDictField sysDictField = new SysDictField(tablenum(PurchTable), fieldnum(PurchTable, PurchId)); boolean visible; ; visible = sysDictField.visible(); info(strfmt("%1", visible)); } Это, в свою очередь, влияет на работу формы фильтрации SysQueryForm. Пользователь с такими правами может спокойно работать в форме "Заказ на покупку", создавать и разносить закупки... Но не сможет ничего сортировать и фильтровать через форму фильтрации-сортировки. Форма фильтрации нормально работает только тогда, когда у пользователя есть право на ключ безопасности той таблицы, по которой производится фильтрация и сортировка (а не на саму таблицу). В Ax 3.0 все работало корректно, в Ax2009 приходится открывать права на ключ безопасности таблиц целого модуля (чтобы работала сортировка и фильтрация), что не корректно с моей точки зрения. Поменял в X++: SysQueryForm private static server container findFields(tableId _tableId, TmpSysQueryCompanyRange _tmpCompanyRange) private static client container findFields(tableId _tableId, TmpSysQueryCompanyRange _tmpCompanyRange) Таким образом все работает корректно. |
|
|
За это сообщение автора поблагодарили: Logger (2), gl00mie (2), S.Kuskov (5). |