2009-12-02 3 views
3

Надстройка «Лучшая практика» Dynamics AX 2009 выдает следующую ошибку при переопределении метода отображения.Axapta: проверка доступа к возвращаемому значению из метода отображения

"TwC: Validate access to return value from the display/edit method." 

Это мой метод отображения.

display ABC_StyleName lookupModuleName(ABC_StyleSettings _ABC_StyleSettings) 
{ 
    ; 
return ABC_Styles::find(_ABC_StyleSettings.StyleID).StyleName; 
} 

Я предполагаю, что он хочет, чтобы я проверил конфигурацию или ключ безопасности перед возвратом результата. Любые предложения/примеры того, с чего начать?

Благодаря

ответ

5

Это напоминание о том, что вы должны рассмотреть вопрос о том, следует ли пользователю иметь доступ к данным, возвращается из функции. Для полей таблицы ядро ​​обычно делает это для вас на основе групп безопасности, в которых находится пользователь, и ключей безопасности, установленных в полях.

Чтобы проверить, имеет ли пользователь доступ к полю, используйте функцию hasFieldAccess. Чтобы узнать, как это используется, просмотрите методы таблицы BankAccountStatement.openingBalance() или CustTable.openInvoiceBalanceMST(). Существуют другие вспомогательные функции для проверки ключей безопасности, таких как hasMenuItemAccess, hasSecuritykeyAccess и hasTableAccess.

В вашем случае, добавьте этот код:

if(!hasFieldAccess(tablenum(ABC_Styles),fieldnum(ABC_Styles,StyleName))) 
{ 
    throw error("@SYS57330"); 
} 

Даже после того, как вы добавите этот код, вы все равно получите Лучшую ошибку практики. Чтобы сообщить компилятору, что вы ответили на эту проблему, вам нужно добавить следующий комментарий непосредственно перед объявлением функции:

//BP Deviation Documented 
+1

Я видел ваше имя по нескольким из моих вопросов. Спасибо, что нашли время, чтобы помочь новому парню. Это был болезненный переход от .NET к X ++, но я добираюсь туда. ;) – Brad