MSCRM async javascript SDK.REST.retrieveMultipleRecords只返回50条记录,一次需要所有记录

MSCRM async javascript SDK.REST.retrieveMultipleRecords只返回50条记录,一次需要所有记录,javascript,asynchronous,dynamics-crm,Javascript,Asynchronous,Dynamics Crm,我在异步调用“SDK.REST.retrieveMultipleRecords”函数时遇到了一些问题。下面是我的问题代码 function Main_Method(_AnimalList) { new SearchInAnimalRecords(_AnimalList); } function SearchInAnimalRecords(_AnimalList) { $('#divProgressDetail').append('<br>Start searchin

我在异步调用“SDK.REST.retrieveMultipleRecords”函数时遇到了一些问题。下面是我的问题代码

function Main_Method(_AnimalList)
{
    new SearchInAnimalRecords(_AnimalList);
}

function SearchInAnimalRecords(_AnimalList)
{
    $('#divProgressDetail').append('<br>Start searching Animal Records...');
    for (var i = 0; i < _AnimalList.length; i++)
        if (_AnimalList[i].SchemaName != "Lion")
            this.Process(AnimalSchemaName);
}

SearchInAnimalRecords.prototype.Process = function (AnimalSchemaName)
{
    $('#divProgressDetail').append('<br>Retriving ' + AnimalSchemaName + ' Animal Records...');
    ///SDK.REST.retrieveMultipleRecords : Sends an asynchronous request to retrieve records.
    SDK.REST.retrieveMultipleRecords
        (
            AnimalSchemaName, /// The Schema Name of the Entity type record to retrieve.
            "$select=" + AnimalSchemaName + "Id", /// A String representing the OData System Query Options to control the data returned
            function (AnimalRecords) // "AnimalRecords" only contain 50 records
function Main\u方法(\u AnimalList)
{
新的搜索动物记录(_animalist);
}
函数搜索在动物记录中(_AnimalList)
{
$(“#divProgressDetail”)。追加(“
开始搜索动物记录…”); 对于(变量i=0;i<\u AnimalList.length;i++) 如果(_animalist[i].SchemaName!=“狮子”) 这个过程(动物化学名称); } SearchInAnimalRecords.prototype.Process=函数(AnimalSchemaName) { $('#divProgressDetail')。追加('
检索'+AnimalSchemaName+'动物记录…'); ///SDK.REST.retrieveMultipleRecords:发送异步请求以检索记录。 SDK.REST.retrieveMultipleRecords ( AnimalSchemaName,///要检索的实体类型记录的架构名称。 “$select=“+AnimalSchemaName+”Id“,///表示OData系统查询选项的字符串,用于控制返回的数据 函数(AnimalRecords)/“AnimalRecords”仅包含50条记录
此函数将被传递并为返回的每一页记录调用。 每页50条记录。如果您希望返回多页记录, 此函数应循环遍历结果,并将记录推入函数外部的数组中。 使用OnComplete事件处理程序可以知道何时处理了所有记录

            {
                var length = AnimalRecords.length;
                for (var i = 0; i < length; i++)
                {
                    var guid = AnimalRecords[i][AnimalSchemaName + 'Id'];
                    var IsGuidMatch = IsKeyGuidMatchWith(guid);
                    if (IsGuidMatch)
                    {
                        $('#divProgressDetail').append('<br>Key animal found in ' + AnimalSchemaName + ' Records.');
                        $('#divProgressDetail').append('<br>Searching stop.');
                        break;
                    }
                }
            },
            function () /// The function that will be passed through and be called by a failed response. 
            {
                $('#divProgressDetail').append('<br>Error while Retriving ' + AnimalSchemaName + ' Records.');
            },
            function () /// OnComplete EventHandler The function that will be called when all the requested records have been returned. No parameters are passed to this function.
            {
                $('#divProgressDetail').append('<br>Completed searching in ' + AnimalSchemaName + ' Records.');
            }
        );
}
{
变量长度=AnimalRecords.length;
对于(变量i=0;i在“+AnimalSchemaName+”记录中找到的关键动物”);
$(“#divProgressDetail”).append(“
搜索停止”); 打破 } } }, function()///将通过并由失败响应调用的函数。 { $(“#divProgressDetail”).append(“
检索“+AnimalSchemaName+”记录时出错”); }, function()///OnComplete EventHandler返回所有请求的记录时将调用的函数。不向此函数传递任何参数。 { $(“#divProgressDetail”).append(“
在“+AnimalSchemaName+”记录中完成搜索。”); } ); }

在进程函数中,它们是一个匿名函数,接受一个名为“AnimalRecords”的参数。所以问题是这个AnimalRecords一次只包含50条记录,我需要所有记录。

我认为这是对返回记录数量的限制。每次检索记录时,只返回查询中排名前50的记录。如果有超过50条记录,则结果集末尾将有一个“>XML节点或一个JSON__next属性。您可以使用该节点或属性中的URL值继续处理下一组记录。URL包含一个$skiptoken参数,该参数提供有关分页边界的信息

参考:

如果要访问所有记录,请尝试使用xrmservicetoolkit

XrmServiceToolkit.Soap.QueryAll:返回所有记录(>5k+)的方法


我相信您使用的是Dynamics CRM 2011。SDK中提供的帮助文件先前只返回了前50个,但在最新的SDK版本中进行了修改。如果您可以访问CRM 2011的最新SDK,则其中用于“RetrieveMultiple”jQuery调用的帮助文件已经自行处理了50个记录限制;这意味着心理治疗已经可以检索所有记录,而不仅仅是前50条记录

尝试下载最新的SDK并使用该代码。您应该会得到所需的结果