为CRM RetrieveMultiple Plugin生成分页Cookie

问题描述:

我处于奇怪的情况,我需要为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

我已经对分页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;