Axapta 为什么“FetchMode”查询属性会从父数据源中删除字段?

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

从AOT打开查询
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,则此选项不起作用(不幸的是,似乎没有实现使用关系字段之类的回退选项)

更新: 我又遇到了这个问题,但这次是field
SalesTaker
。事实证明,
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