我在Dynamics CRM 2016和fetchXml上遇到了一个小问题。在CRM中,我有大约35,000个用户。由于看起来动态仅限于每轮检索最多5000个元素,我需要使用pagingCookie功能来检索第二页,依此类推。例如,要检索这些记录的第二页(从用户5001到10000),我必须先检索1到5000的用户,获取分页cookie并使用此cookie重新启动进程。
我的问题是:这需要总共10000个用户,而我可能只想获得第二页,而不是第一页。有没有直接的方法来获得没有pagingCookie的第二页结果?
谢谢
答案 0 :(得分:1)
嗨,要获得所有结果,您需要在每次调用crm后增加页数并添加到列表中。我不知道你编写的语言是什么,但我在.net中给你一个例子,我测试过并且正在工作。如果你需要在javascript中使用相同的方法。
public IEnumerable<Account> GetAllClients()
{
List<Account> listAccounts = new List<Account>();
int pageIndex = 1;
int pageSize = 1000;
while (true)
{
// FETCH CLIENTES
var Fetch = "<fetch version='1.0' page='" + pageIndex + "' count='" + pageSize + "' output-format='xml-platform' mapping='logical' distinct='true'>";
Fetch += "<entity name='account'>";
//Attributes
Fetch += "<attribute name='accountid' />";
Fetch += "<attribute name='name' />";
Fetch += "<attribute name='accountnumber' />";
Fetch += "<attribute name='accountid' />";
Fetch += "<order attribute='name' descending='false' />";
Fetch += "</entity>";
Fetch += "</fetch>";
EntityCollection resultClient = this.crmService.RetrieveMultiple(new FetchExpression(Fetch));
foreach (Account c in resultClient.Entities)
{
listAccounts.Add(c);
}
if (resultClient.MoreRecords)
{
// Increment the page number to retrieve the next page.
pageIndex++;
}
else
{
// If no more records in the result nodes, exit the loop.
break;
}
}
return listAccounts;
}
干杯