2015-05-04 24 views
1

當從AOT打開查詢SalesTableListPage時,可以在字段查找中選擇字段MatchingAgreement(顯示爲「協議標題記錄標識(記錄標識)」)。對於查詢SalesUpdate,字段MatchingAgreement和其他幾個(似乎與關係用RecId構建的關係字段有關)的查詢不可能在查找中顯示。爲什麼`FetchMode`查詢屬性從父數據源中刪除字段?

經過一番研究,我發現原因似乎是加入SalesLine數據源上的FetchMode屬性。如果它是1:n,則這些字段不會顯示在查找中。如果它是1:1,則字段將顯示在查找中。

我還沒有測試過與其他表,但我懷疑相同的行爲。我也只用AX 2012 R2和R3進行了測試,但我懷疑其他2012版本的情況相同。

爲什麼連接數據源的FetchMode會從查詢對話框的父數據源中刪除某些字段?

回答

1

TL; DR查詢對話框現場查找不總是在AutoIdentification場羣的屬性AutoPopulate設置爲No定義關係表關係領域工作。他們不工作的一種情況是當數據源與FetchMode 1:n結合在一起時。

雖然Alex K的回答有一些有趣的建議,在我的情況下,罪魁禍首是AutoIdentificationAgreementHeader的字段組AutoPopulate財產。在sys層中,此屬性設置爲No,如果查詢中的關係爲1:1,則該組包含查詢對話框字段查找中顯示的字段。如果此屬性切換爲Yes,則查找將顯示字段Agreement header record ID (Record-ID)(並且只有該字段,不管查詢關係的FetchMode如何定義)。

基本上,AX將使用來自AutoIdentification字段組的信息來確定在代理關鍵引用/關係情況下gui中顯示的信息。如果字段組的AutoPopulate屬性爲Yes,則AX將使用該表的備用密鑰來確定要使用的字段。如果不存在備用密鑰(表AgreementHeader的情況),則AX使用關係字段。如果AutoPopulateNo,則使用組中定義的字段。但是如上所述,如果查詢中的關係不是1:1(不幸的是沒有像使用關係字段那樣的後備選項似乎已經實現),則此選項不起作用。

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 

更新: 我在這個問題又來了,但這次現場SalesTaker。原來AutoPopulate屬性只是故事的一部分,因爲它在HcmWorker表上設置爲Yes時沒有解決問題。此表(不同於表AgreementHeader)也具有屬性ReplacementKey集合,AX用於填充AutoIdentification字段組。只有在我刪除了ReplacementKey之後,AutoIdentification中再沒有出現任何字段,並且查找現在顯示「銷售員(記錄標識)」。所以底線是AutoIdentification字段組不能包含任何字段。

0

如果兩個查詢字段的dynamic屬性設置爲yes,那麼我懷疑它是與這些關係的一個屬性:

\Data Dictionary\Tables\SalesTable\Relations\Agreement

\Data Dictionary\Tables\SalesLine\Relations\SalesTable

也許嘗試調整它們,刷新緩存(AOT更改將被拾取),清除使用數據(打包的查詢可能會導致問題)以及更新XRef(高級查詢使用XRef,因此可能不需要標準查詢功能)

相關問題