Axapta 为什么“FetchMode”查询属性会从父数据源中删除字段?
从AOT打开查询Axapta 为什么“FetchMode”查询属性会从父数据源中删除字段?,axapta,dynamics-ax-2012-r2,Axapta,Dynamics Ax 2012 R2,从AOT打开查询SalesTableListPage时,可以在字段查找中选择字段MatchingAgreement(显示为“协议头记录ID(记录ID)”)。查询SalesUpdate、字段匹配协议和其他几个字段(似乎与使用RecId构建关系的关系字段相关)不可能在查找中显示 经过一些研究,我发现原因似乎是加入的SalesLine数据源上的FetchMode属性。如果为1:n,则字段不会显示在查找中。如果为1:1,则字段将显示在查找中 我没有在其他表中测试过这一点,但我怀疑同样的行为。我也只在AX
SalesTableListPage
时,可以在字段查找中选择字段MatchingAgreement
(显示为“协议头记录ID(记录ID)”)。查询SalesUpdate
、字段匹配协议
和其他几个字段(似乎与使用RecId构建关系的关系字段相关)不可能在查找中显示
经过一些研究,我发现原因似乎是加入的SalesLine
数据源上的FetchMode
属性。如果为1:n,则字段不会显示在查找中。如果为1:1,则字段将显示在查找中
我没有在其他表中测试过这一点,但我怀疑同样的行为。我也只在AX 2012 R2和R3上测试过这一点,但我怀疑在其他2012版本中也存在同样的行为
为什么联接数据源的
FetchMode
会在查询对话框中从父数据源中删除一些字段?如果两个查询字段的dynamic
属性都设置为yes
,那么我怀疑这与其中一个关系的属性有关:
\Data Dictionary\Tables\SalesTable\Relations\Agreement
\Data Dictionary\Tables\SalesLine\Relations\SalesTable
也许可以尝试调整它们,刷新缓存(要拾取的AOT更改),清除使用情况数据(打包查询可能会导致问题),并更新外部参照(高级查询使用外部参照,因此标准查询功能可能不需要它)TL;查询对话框中的DR字段查找并不总是适用于定义与表的关系的关系字段,其中
自动标识
字段组的属性自动填充
设置为否
。它们不起作用的一种情况是数据源与FetchMode
1:n连接
虽然Alex K的回答有一些有趣的建议,但在我的例子中,罪魁祸首是表AgreementHeader
的AutoIdentification
字段组上的AutoPopulate
属性。在sys layer中,此属性设置为No
,如果查询中的关系为1:1,则该组包含查询对话框字段查找中显示的字段。如果将此属性切换为Yes
,则查找将显示字段协议头记录ID(记录ID)
(并且无论查询关系的获取模式如何定义,仅显示此字段)
基本上,AX将使用来自AutoIdentification
字段组的信息来确定gui中在代理键引用/关系的情况下显示的信息。如果字段组的AutoPopulate
属性为Yes
,AX将使用表的备用键来确定要使用的字段。如果不存在备用键(表AgreementHeader
),AX将使用关系字段。如果AutoPopulate
为No
,则使用组中定义的字段。但如前所述,如果查询中的关系不是1:1,则此选项不起作用(不幸的是,似乎没有实现使用关系字段之类的回退选项)
更新:
我又遇到了这个问题,但这次是fieldSalesTaker
。事实证明,AutoPopulate
属性只是故事的一部分,因为它在表HcmWorker
上设置为Yes
时并没有解决问题。此表(与表AgreementHeader
不同)还具有属性ReplacementKey
集,AX使用该属性填充自动识别
字段组。只有在我删除了ReplacementKey
之后,AutoIdentification
中才不再出现任何字段,现在查询显示为“Sales taker(记录ID)”。所以底线是自动识别
字段组不能包含任何字段
FetchMode AutoPopulate Lookup
1:1 Yes AlternateKey (or Relation) fields
1:1 No AutoIdentification fields
1:n Yes AlternateKey (or Relation) fields
1:n No Nothing