Bra*_*rad 3 methods x++ axapta dynamics-ax-2009
Dynamics AX 2009最佳实践加载项在显示方法覆盖上引发以下错误.
"TwC: Validate access to return value from the display/edit method."
Run Code Online (Sandbox Code Playgroud)
这是我的显示方法.
display ABC_StyleName lookupModuleName(ABC_StyleSettings _ABC_StyleSettings)
{
;
return ABC_Styles::find(_ABC_StyleSettings.StyleID).StyleName;
}
Run Code Online (Sandbox Code Playgroud)
我假设它要我在返回结果之前检查配置或安全密钥.有关从哪里开始的任何建议/示例?
谢谢
这提醒您需要考虑用户是否应该访问您从函数返回的数据.对于表字段,内核通常根据用户所在的安全组和字段上设置的安全密钥为您执行此操作.
要检查用户是否有权访问字段,请使用该hasFieldAccess功能.要查看如何使用它,请查看表方法BankAccountStatement.openingBalance()或CustTable.openInvoiceBalanceMST().还有其他的辅助功能,以检查安全密钥,如hasMenuItemAccess,hasSecuritykeyAccess和hasTableAccess.
在您的情况下,添加以下代码:
if(!hasFieldAccess(tablenum(ABC_Styles),fieldnum(ABC_Styles,StyleName)))
{
throw error("@SYS57330");
}
Run Code Online (Sandbox Code Playgroud)
即使添加了该代码,您仍然会收到最佳实践错误.要告诉编译器您已解决该问题,您需要在函数声明之前立即添加以下注释:
//BP Deviation Documented
Run Code Online (Sandbox Code Playgroud)