2017-09-14 90 views
3

這似乎有點奇怪,因此我會嘗試提供一些背景。我的CRM有一項功能,要求用戶應該能夠過濾一個視圖,然後保存結果記錄,這樣一個單獨的過程可以將它們選中並定期處理它們,例如,日常。通過javascript檢索網格中的fetchxml

現在這裏有一個問題,他們希望這個過程在處理數據之前重新查詢數據,所以基本上應該保存的是查詢或過濾器,而不是視圖中的數據。

先前已經寫了一些JavaScript代碼動態地設置fetchxml上亞格像這樣

Subgrid.getGrid().setParameter("fetchXml", fetchxml); 

我雖然它應該是相當簡單的潛在檢索網格

Subgrid.getGrid().getParameter("fetchXml"); 

的fetchxml然而,這不起作用,我似乎無法找到任何文件或任何可以指向正確方向的文件。我已經使用開發工具來檢查Mscrm.XrmControlGridWrapper的屬性,但我找不到任何有用的東西。

如果有人知道如何檢索使用javascript的子網格的fetchxml,這將是巨大的幫助?

編輯

我剛剛發現,我能做到這一點

Subgrid.getGrid().getFilter().$3_1.GetParameter("fetchXml") 

,並返回正是我想要的,然而,這只是尖叫的哈克和不支持的。 $3_1有一種[object (Mscrm.TurboGridControl)]

有沒有辦法以支持的方式訪問此對象?

回答

0

在這幾個想法:

  1. 您可以檢索SYSTEMFORM記錄,然後解析FormXml得到ViewId。然後,您可以從SavedQuery實體中檢索視圖,並獲取FetchXML。這裏的ViewId在FormXml的例子: enter image description here

  2. 你可以一個布爾字段添加到實體,當用戶保存他們要處理,你可以標記爲以後的批量處理這些記錄來檢索集。

  3. 當用戶識別他們想要處理的集合時,您可以使用帶有Guid列表的「in」運算符來使用FetchXML臨時創建視圖(SystemQuery或UserQuery)來標識要處理的確切記錄。在使用視圖檢索和處理記錄後,批處理可能會刪除該視圖。我可能會習慣使用這種方法達到幾十條記錄。

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> 
    <entity name="account"> 
    <filter type="and"> 
     <condition attribute="accountid" operator="in"> 
     <value>{A1CC84F2-BE0D-E711-8104-00155D6FD705}</value> 
     <value>{A3CC84F2-BE0D-E711-8104-00155D6FD705}</value> 
     <value>{A5CC84F2-BE0D-E711-8104-00155D6FD705}</value> 
     </condition> 
    </filter> 
    </entity> 
</fetch> 
  • 如果要避免改變通過設置上記錄的布爾標誌的修改後的信息進行處理,可以創建一個N: N鏈接實體並將選擇的記錄與該實體的實例相關聯。