|
29.10.2009, 18:24 | #1 |
Участник
|
SysDictField.visible() возвращает неверное значение
DAX 2009
Kernel version: 5.0.1000.52 Application version: 5.0.1000.52 SQL 2005 Привет, всем Запускаю такой вот Job X++: static void Job15(Args _args) { SysDictTable dictTable = new SysDictTable(tablenum(SalesTable)); SysDictField sysDictField; boolean visible; ; sysDictField = dictTable.fieldObject(11) ; visible = sysDictField.visible(); info(strfmt("%1", visible)); } Хотя св-во visible = Yes Подскажите, пожалуйста, что делать в этой ситуации, если кто-нибудь с подобным сталкивался. Очень надеюсь, что я просто что-то не заметил, а то уже все перепробовал: SalesTable компилировал, менял св-во поля туда-обратно, удалял индексный файл... вот только с бубном еще не плясал. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
29.10.2009, 18:40 | #2 |
Участник
|
И все-таки дело в инициализации.
Вот так - работает: X++: static void Job5(Args _args) { SysDictField sysDictField = new SysDictField(tablenum(SalesTable),fieldnum(SalesTable,SalesGroup)); boolean visible; ; visible = sysDictField.visible(); info(strfmt("%1", visible)); } |
|
|
За это сообщение автора поблагодарили: nano3 (1). |
29.10.2009, 18:43 | #3 |
Участник
|
ConfigurationKey
А у вас включен конфигурационный ключ на EDT поля SalesGroup?
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: nano3 (1). |
29.10.2009, 19:04 | #4 |
Участник
|
точно!!! конфигурационный ключ сволочь был выключен. Спасибо за помощь!
|
|
23.11.2010, 16:00 | #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). |
02.03.2020, 18:57 | #6 |
NavAx
|
В порядке некропостинга.
В AX 4.0 наблюдается то же самое. И более того, и в 2009 и в 4.0 SysDictField может возвращать разные id() поля. На сервере, как будто бы поле - контейнерное с единственным элементом и id как у контейнерного > 65535 (взведенный первый бит 1<<16). На клиенте - нормальное, с id < 65535. Как побочный эффект этого - на форме пользователей наложив фильтр на поле "Имя пользователя" потом невозможно наложить другой фильтр на это же поле в форме расширенного запроса, не перевыбрав поле, которое в той форме теперь называется User Name. Причина - в том, что при вызове формы расширенного фильтра список полей создается на клиенте, а при сохранении валидация полей работает по заново созданному списку полей (в findFields()) на сервере. Указанное изменение лечит и это.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 02.03.2020 в 19:00. |
|
|
За это сообщение автора поблагодарили: Logger (1). |