对于分配了我的主要安全密钥的任何菜单项,我在Dynamics AX 2009中收到以下最佳实践错误(我们称之为MySecurityKey1)。
“安全密钥错误。安全密钥必须与主菜单中的位置匹配。”
我的项目中有以下项目:
菜单
MainMenu(动态默认项目 - 安全密钥为空白)
- 参考MyMenu
MyMenu(Key = MySecurityKey1)
- MySubMenu1(Key = MySecurityKey1)
- 参考MyMenuItem1
- 参考MyMenuItem2
- MySubMenu2(Key = MySecurityKey2)
- 参考MyMenuItem3
- 参考MyMenuItem4
的MenuItems
MyMenuItem1(Key = MySecurityKey1)!!此项目的BP错误
MyMenuItem2(Key = MySecurityKey1)!!此项目的BP错误
MyMenuItem3(Key = MySecurityKey2)
MyMenuItem4(Key = MySecurityKey2)
安全密钥
MySecurityKey1(无父键)
MySecurityKey2(无父键)
我几乎不知所措,因为这两个键或它们的使用似乎没有任何真正的区别。任何建议都会很棒。
谢谢!
答案 0 :(得分:1)
此BP检查在SysBPCheckMenuFunction.checkSecurityKey()
中实施。看起来如果您的菜单可以从主菜单访问,那么您必须具有父安全性,让我们称之为MyModule和子安全密钥。唯一有效的子安全密钥是MyModuleDaily,MyModuleReports,MyModuleInquiries,MyModulePeriodic,MyModuleSetup,MyModuleJournals,MyModuleMisc或MyModuleTables。
答案 1 :(得分:0)
MyMenuItem1 / 2或MyMenuItem3 / 4上的BP错误?如果它在MyMenuItem3 / 4上,我会期待一个,因为我相信菜单中的所有项目都需要共享相同的父安全密钥。
您是否尝试过引入MyMenu将使用的第三个安全密钥,并且是MySecurityKey1和MySecurityKey2的父级安全密钥?我认为这样做是正确的方法,并且与MainMenu引用的大多数菜单的设置是一致的。
例如,Ledger安全密钥具有子LedgerJournals,LedgerInquiries,LedgerReports等。然后在Ledger菜单下有日志,查询,报告等子菜单,子菜单中的每个菜单项都使用相关的安全性键。