2014-11-04 60 views
0

我處於奇怪的情況,我需要爲CRM產生一個通常由CRM服務生成的分頁Cookie(更多關於下面的原因),但是我找不到它的模式或覆蓋它的任何文檔。爲CRM RetrieveMultiple Plugin生成分頁Cookie

我推導的格式如下,有誰能夠確認它是完整的?:

<cookie page="{page no#}"> 
    <{first sort column logical name} first="{value of first returned items sort column - format unknown}" last="{value of last returned items sort column - format unknown}" /> 
</cookie> 

我的情況是我寫了一個RetrieveMultiple插件,它返回它實際上在外部數據庫中存在僞實體,由於組織服務不提取數據,我不能依靠CRM爲我提供這個價值。

需要分頁cookie來遍歷OData查詢,儘管我的插件可以完全忽略它,而我的插件可以自由使用它自己的邏輯,我正在通過驗證消息來查詢WHENEVER我包含skip查詢字符串參數:

[-2147220715]:檢索更多記錄所需的分頁cookie。更新 您的查詢檢索總記錄低於5000

有沒有什麼辦法來壓制這個錯誤信息?

+0

我不確定如何解決此錯誤,但是如果您的CRM OData查詢將有5,000個或更少的記錄,您可以嘗試使用$ top參數:http:// msdn。 microsoft.com/en-us/library/gg309461.aspx#BKMK_top – 2014-11-07 00:59:30

+0

OData限於50條記錄IIRC,我需要檢索一個循環中的所有記錄不幸的。每當我使用$ skip參數時,它似乎會導致這個錯誤(所以我的第一個查詢只用$ top工作,但隨後的查詢需要cookie)。目前我相信我唯一的選擇是通過JavaScript使用FetchXML,我希望可能不會面臨相同的驗證要求 – 2014-11-07 09:23:32

+0

您可以嘗試增加每頁返回的記錄數。請注意,這將是一個全局設置,並不針對您的應用程序。 http://blogs.msdn.com/b/crminthefield/archive/2012/03/16/how-to-increase-the-50-record-page-limit-on-odata-retrieve-responses-for-dynamics- crm-2011.aspx – 2014-11-07 13:56:59

回答

0

我已經對分頁cookie格式進行了調查,這些是我的發現,如果新功能變得明顯,我會更新這些發現的時間。

分頁Cookie是一種HTML encoded string,我很想把這件事寫成一個適當的模式,如果我有時間,但現在的功能設計必須做到:

  • 「cookie」是的根元素
  • 「cookie」具有單個int屬性「page」,它是頁面編號#,從1開始計數
  • 「cookie」的子節點是訂單字段的邏輯名稱,複雜類型也是後綴爲「name」,即:「owneridname」,「statecodename」
  • 這些chil d節點具有4個潛在的屬性,但只有2將存在
  • 「第一」 /「最後」是從第一個和最後結果記錄的排序列中的文本/名稱值分別的,即:first=&quot;Active&quot; last=&quot;Inactive&quot;
  • 替代參數「firstnull」和「lastnull」將始終爲「1」(如果存在),它們分別替換「first」/「last」屬性並指示結果集中排序列的第一個值爲空,反之亦然
  • 有一個「cookie」的最後一個子節點被命名爲被查詢實體的主鍵字段,它也包含first/last屬性,但它們被設置爲「{}」括號中包圍的記錄的GUID ID
  • 新增:如果第一和最後一個值長字符串,其值被修剪到2000個字符字符串編碼
  • 前加入:第一個和最後一個值是編碼雙HTML,E。g:換行是&amp;#xA;
相關問題