retrieveMultipleRecords (İstemci API başvurusu)

Tablo kayıtları koleksiyonunu alır.

Sözdizimi

Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);

Parametreler

İsim Türü Gerekli Description
entityLogicalName String Yes Almak istediğiniz kayıtların tablo mantıksal adı. Örneğin: account.
options String Hayı Verilerinizi almak için OData sistem sorgusu seçenekleri veya FetchXML sorgusu. Bkz . Seçenekler
maxPageSize Sayı Hayı Sayfa başına döndürülecek tablo kayıtlarının sayısını gösteren pozitif bir sayı belirtin. Bu parametreyi belirtmezseniz, varsayılan değer standart tablolar için en fazla 5.000 kayıt sınırı ve elastik tablolar için 500'dür.

Aldığınız kayıt sayısı belirtilen maxPageSize değerden veya tablo türü için en yüksek sınırdan fazlaysa, nextLink döndürülen promise nesnesindeki sütun kayıtları almak için bir bağlantı içerir.
successCallback İşlev Hayı Tablo kayıtları alındığında çağrılacak bir işlev. Bkz . Dönüş Değeri
errorCallback İşlev Hayı İşlem başarısız olduğunda çağrılacak bir işlev. Aşağıdaki özelliklere sahip bir nesne geçirilir:
- errorCode:Sayı. Pozitif ondalık sayı olarak hata kodu. Örneğin, olarak 0x80040333 belgelenen hata kodu olarak 2147746611döndürülür.
- message:Dizgi. Sorunu açıklayan bir hata mesajı.

Options

Aşağıdaki sistem sorgusu seçenekleri desteklenir: $select, $top, $filter, $expandve $orderby.

$expand İlgili tablolardan hangi verilerin döndürülür denetlemek için sistem sorgusu seçeneğini kullanın. Yalnızca gezinti özelliğinin adını eklerseniz, ilgili kayıtların tüm özelliklerini alırsınız. Gezinti özelliği adından sonra parantez içinde sistem sorgusu seçeneğini kullanarak $select ilgili kayıtlar için döndürülen özellikleri sınırlayabilirsiniz. Hem tek değerli hem de koleksiyon değerli gezinti özellikleri için bu seçeneği kullanın. Çevrimdışı için yalnızca içindeki $expand iç içe $select seçeneği desteklenir.

FetchXML sorgusu belirtmek için sorguyu belirtmek için sütununu fetchXml kullanın.

Uyarı

Bir tablo kaydı için döndürülen özellikleri, özellik adlarının $select virgülle ayrılmış bir listesini ekleyerek sınırlamak için her zaman sistem sorgusu seçeneğini kullanmanız gerekir. Bu uygulama performans açısından önemlidir. kullanarak $selectözellikleri belirtmezseniz, tüm özellikler döndürülür.

ile ?başlayan sorgu seçeneklerini belirtin. Sorgu seçeneklerini ayırmak için kullanarak & birden çok sistem sorgusu seçeneği de belirtebilirsiniz.

parametresi için bir OData sorgu dizesi belirttiğinizde options , sorguyu özel karakterler için kodlar .

parametresi için bir FetchXML sorgusu belirttiğinizde options sorguyu kodlamayın .

Çeşitli alma birden çok senaryo için parametre tanımlamayı options öğrenmek için bkz. Örnekler.

Dönüş değeri

Başarılı olduğunda, aşağıdaki özelliklere sahip öğesine successCallback bir promise nesnesi döndürür:

İsim Türü Description
entities JSON nesneleri dizisi Her nesne, sütunları ve bunların değerlerini çift olarak key: value içeren alınan tablo kaydını temsil eder. Tablo kaydının kimliği varsayılan olarak alınır.
nextLink String (isteğe bağlı) Alınan kayıt sayısı, istekteki parametrede maxPageSize belirtilen değerden fazlaysa, sonraki kayıt sayfasını döndürmek için URL'yi döndürür.
fetchXmlPagingCookie (isteğe bağlı) Toplam kayıt sayısının disk belleği değerinden büyük olduğu sayfalama ile fetchXml tabanlı retrieveMultipleRecords bir işlem için, bu öznitelik sonraki kayıt sayfasını almak üzere sonraki fetchXml işlemi için kullanılabilecek disk belleği tanımlama bilgisini döndürür.

Mobil çevrimdışı ortamda OData sorgu seçenekleri için desteklenmeyen öznitelik türleri

Mobil çevrimdışı modda OData sorgu dizesi seçenekleriyle (ve gibi $select$filter) kullandığınızda Xrm.WebApi.retrieveMultipleRecords aşağıdaki Sütun türleri desteklenmez. Desteklenmeyen öznitelik türleri listesinde bir öznitelik türüyle çalışmanız gerekiyorsa FetchXML kullanın.

  • MultiSelectPicklist
  • File
  • Image
  • ManagedProperty
  • CalendarRules
  • PartyList
  • Virtual

Çevrimdışı mobil cihazlarda desteklenmeyen özellikler

Aşağıdaki özellikler mobil çevrimdışı olarak desteklenmez:

  • Gruplandırma ve toplama özellikleri

FetchXML kullanılarak mobil çevrimdışı ortamda öznitelik türü başına desteklenen filtre işlemleri

FetchXML ile çalışırken tüm öznitelik türleri için aşağıdaki işlemler desteklenir:

  • Eşittir (eq)
  • Eşit Değil (neq)
  • Null (null)
  • Null Değil (not-null)

Aşağıdaki tabloda her öznitelik türü için desteklenen diğer işlemler listelenmektedir:

Öznitelik Türü Desteklenen İşlemler
BigInt, Ondalık, Çift, Tamsayı Büyüktür (gt)
Büyüktür veya Eşittir (gte)
KüçükTür (lt)
Küçüktür veya Eşittir (lte)
Boole, Müşteri In (in)
Içinde Değil (not-in)
EntityName, Picklist, State, Status Beğen (like)
Benzer Değil (not-like)
Ile Başlar (begins-with)
Başlangıç Değil (not-begin-with)
Şununla biter: (ends-with)
İle Bitmiyor (not-end-with)
In (in)
Içinde Değil (not-in)
Guid, Arama In (in)
Içinde Değil (not-in)
Eşittir Kullanıcı Kimliği (eq-userid)
Eşit Olmayan Kullanıcı Kimliği (ne-userid)
Money Büyüktür (gt)
Büyüktür veya Eşittir (gte)
KüçükTür (lt)
Küçüktür veya Eşittir (lte)
In (in)
Içinde Değil (not-in)
Sahibi In (in)
Içinde Değil (not-in)
Eşittir Kullanıcı Kimliği (eq-userid)
Eşit Olmayan Kullanıcı Kimliği (ne-userid)
Eşittir Kullanıcı veya Ekip (eq-useroruserteams)
String Beğen (like)
Benzer Değil (not-like)
Ile Başlar (begins-with)
Başlangıç Değil (not-begin-with)
Şununla biter: (ends-with)
İle Bitmiyor (not-end-with)
DateTime Açık veya Sonra (on-or-after)
Açık (on)
Açık veya Önce (on-or-before)
Bugün (today)
Yarın (tomorrow)
Dün (yesterday)
Sonraki yedi Gün (next-seven-days)
Son yedi Gün (last-seven-days)
Gelecek Hafta (next-week)
Geçen Hafta (last-week)
Bu Hafta (this-week)
Gelecek Ay (next-month)
Geçen Ay (last-month)
Bu Ay (this-month)
Gelecek Yıl (next-year)
Geçen Yıl (last-year)
Bu Yıl (this-year)
Son X Gün (last-x-days)
Sonraki X Gün (next-x-days)
Son X Hafta (last-x-weeks)
Sonraki X Hafta (next-x-weeks)
Son X Ay (last-x-months)
Sonraki X Ay (next-x-months)
Son X Yıl (last-x-years)
Sonraki X Yıl (next-x-years)
Büyüktür (gt)
Büyüktür veya Eşittir (gte)
KüçükTür (lt)
Küçük veya Eşit (lte)

Örnekler

Web API'sini kullanarak Sorgu Verileri'nde belirtilen senaryoların ve örneklerin çoğunu elde etmek için retrieveMultipleRecords yöntemini kullanabilirsiniz. Örneklerden bazıları aşağıdaki bölümde listelenmiştir.

Temel alma birden çok

Bu örnek hesaplar tablo kümesini sorgular ve ilk üç hesabın $select name özelliğini döndürmek için ve $top sistem sorgusu seçeneklerini kullanır:

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3").then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }                    
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

FetchXML ile temel alma birden çok

Bu örnek fetchXML kullanarak varlığı sorgular account .

var fetchXml = "?fetchXml=<fetch><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";

Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }                    

        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Arama özelliklerine göre alma veya filtreleme

Çoğu tek değerli gezinti özelliği için, şu adlandırma kuralını kullanan hesaplanan, salt okunur bir özellik bulursunuz: _<name>_value burada <name> , tek değerli gezinti özelliğinin adıdır. Filtreleme amacıyla, tek değerli gezinti özelliğinin belirli değerini de kullanabilirsiniz. Ancak, bu söz dizimi seçenekleri çevrimdışı modda mobil istemciler için desteklenmez. Hem alma hem de filtreleme için tek değerli gezinti özelliği adını kullanın. Ayrıca çevrimdışı mod, gezinti özelliklerinin null ile karşılaştırılmasını desteklemez.

Daha fazla bilgi: Arama özellikleri

Her iki senaryo için de kod örnekleri aşağıda verilmiştir:

Çevrimiçi senaryo için (sunucuya bağlı)

Bu örnek hesaplar tablo kümesini sorgular ve ve sistem sorgusu seçeneklerini kullanarak $select$filter belirli bir birincil kişiye sahip hesapların name ve primarycontactid özelliğini döndürür:

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,_primarycontactid_value&$filter=primarycontactid/contactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }                    
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Mobil çevrimdışı senaryo için

Bu örnek hesaplar tablo kümesini sorgular ve çevrimdışı modda çalışırken belirli bir birincil kişiye sahip hesapların name ve primarycontactid özelliğini döndürmek için ve $filter sistem sorgu seçeneklerini kullanır$select:

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,primarycontactid&$filter=primarycontactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }                    
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Arama özelliklerine göre almak veya filtrelemek için FetchXML kullanma (çevrimiçi ve çevrimdışı senaryo)

Bir koşulla FetchXML eşleşen birincil ilgili kişiye sahip hesap kayıtlarının name ve primarycontactid özelliğini almak için çevrimiçi veya çevrimdışı durumdayken parametresini kullanın:

var fetchXml = `?fetchXml=
    <fetch>
       <entity name='account'>
          <attribute name='name'/>
          <attribute name='primarycontactid'/>
          <link-entity name='contact' from='contactid' to='primarycontactid'>
             <filter type='and'>
                <condition attribute='lastname' operator='eq' value='Contoso'/>
             </filter>
          </link-entity>
       </entity>
    </fetch>`;

Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }                    

        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Sayfada döndürülecek tablo sayısını belirtme

Aşağıdaki örnekte, her sayfanın üç kayıt görüntüleneceğini belirtmek için parametresinin maxPageSize nasıl kullanılacağı gösterilmektedir.

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name", 3).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }
        console.log("Next page link: " + result.nextLink);
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Bu örnekte üç kayıt ve sonraki sayfaya bir bağlantı görüntülenir. Tarayıcı geliştirici araçlarında Konsol'dan örnek bir çıkış aşağıda verilmiştir:

{@odata.etag: "W/"1035541"", name: "A. Datum", accountid: "475b158c-541c-e511-80d3-3863bb347ba8"}
@odata.etag: "W/"1035541""accountid: "475b158c-541c-e511-80d3-3863bb347ba8"name: "A. Datum"__proto__: Object
VM5595:4 
{@odata.etag: "W/"947306"", name: "Adventure Works", accountid: "a8a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:4 
{@odata.etag: "W/"1033754"", name: "Alpine Ski House", accountid: "aaa19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:6 
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E

Sonraki kayıt kümesini istemek için options sonraki retrieveMultipleRecords çağrınızdaki parametrenin değeri olarak özelliğindeki URL'deki nextLink sorgu bölümünü kullanın. Değere başka sistem sorgusu seçeneği eklemeyin veya değiştirmeyin. Daha fazla sayfa için sonraki her istekte, özgün istekte kullandığınız değerin aynısını maxPageSize kullanarak birden çok istek alın. Ayrıca, uygulamanızın daha önce alınan sayfaları döndürebilmesi için döndürülen sonuçları veya özelliğin nextLink değerini önbelleğe alın.

Örneğin, kayıtların sonraki sayfasını almak için URL'nin nextLink sorgu bölümünü parametresine options geçirin:

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E", 3).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }
        console.log("Next page link: " + result.nextLink);
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Bu istek sonuç kümesinin sonraki sayfasını döndürür.

{@odata.etag: "W/"1035542"", name: "Blue Yonder Airlines", accountid: "aca19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4 
{@odata.etag: "W/"1031348"", name: "City Power & Light", accountid: "aea19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4 
{@odata.etag: "W/"1035543"", name: "Coho Winery", accountid: "b0a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:6 
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%223%22%20pagingcookie=%22%253ccookie%2520page%253d%25222%2522%253e%253caccountid%2520last%253d%2522%257bB0A19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257bACA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E

Önemli

özelliğinin nextLink değeri URI kodlanmış. URI değeri göndermeden önce kodlarsanız, URL'deki XML tanımlama bilgisi bilgileri hataya neden olur.

FetchXML örneği (çevrimiçi senaryo)

Aşağıdaki örnekte FetchXML'de her sayfanın üç kayıt görüntüleneceğini belirtmek için parametresinin nasıl kullanılacağı count gösterilmektedir.

Uyarı

FetchXML disk belleği tanımlama bilgisi yalnızca çevrimiçi retrieveMultipleRecords işlemler için döndürülür. (Xrm.WebApi.online). Çevrimdışı desteklenmez.

var fetchXml = "?fetchXml=<fetch count='3'><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";

Xrm.WebApi.online.retrieveMultipleRecords("account", fetchXml).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }          

        console.log("Paging cookie: " + result.fetchXmlPagingCookie);

        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Bu örnekte üç kayıt görüntülenir ve sonuç kümesinde daha fazla kayıt varsa sonraki sayfanın sonuçlarını almak için FetchXML sayfalama tanımlama bilgisini döndürür. Tarayıcı geliştirici araçlarında Konsol'dan örnek bir çıkış aşağıda verilmiştir:

{
   "entities": [
      {
         "@odata.etag": "W/\"1035542\"",
         "accountid": "aca19cdd-88df-e311-b8e5-6c3be5a8b200",
         "name": "Blue Yonder Airlines"
      },
      {
         "@odata.etag": "W/\"1031348\"",
         "accountid": "aea19cdd-88df-e311-b8e5-6c3be5a8b200",
         "name": "City Power & Light"
      },
      {
         "@odata.etag": "W/\"1035543\"",
         "accountid": "b0a19cdd-88df-e311-b8e5-6c3be5a8b200",
         "name": "Coho Winery"
      }
   ],
   "fetchXmlPagingCookie": "<cookie pagenumber=\"2\" pagingcookie=\"%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b0748C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520first%253d%2522%257bFC47C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520%252f%253e%253c%252fcookie%253e\" istracking=\"False\" />"
}

Sayfalama ile büyük sonuç kümelerini getirmek için aşağıdaki örnekte gösterildiği gibi öğesini kullanın fetchXmlPagingCookie .

function CreateXml(fetchXml, pagingCookie, page, count) {
  var domParser = new DOMParser();
  var xmlSerializer = new XMLSerializer();

  var fetchXmlDocument = domParser.parseFromString(fetchXml, "text/xml");

  if (page) {
    fetchXmlDocument
      .getElementsByTagName("fetch")[0]
      .setAttribute("page", page.toString());
  }

  if (count) {
    fetchXmlDocument
      .getElementsByTagName("fetch")[0]
      .setAttribute("count", count.toString());
  }

  if (pagingCookie) {
    var cookieDoc = domParser.parseFromString(pagingCookie, "text/xml");
    var innerPagingCookie = domParser.parseFromString(
      decodeURIComponent(
        decodeURIComponent(
          cookieDoc
            .getElementsByTagName("cookie")[0]
            .getAttribute("pagingcookie")
        )
      ),
      "text/xml"
    );
    fetchXmlDocument
      .getElementsByTagName("fetch")[0]
      .setAttribute(
        "paging-cookie",
        xmlSerializer.serializeToString(innerPagingCookie)
      );
  }

  return xmlSerializer.serializeToString(fetchXmlDocument);
}

function retrieveAllRecords(entityName, fetchXml, page, count, pagingCookie) {
  if (!page) {
    page = 0;
  }

  return retrievePage(entityName, fetchXml, page + 1, count, pagingCookie).then(
    function success(pageResults) {
      if (pageResults.fetchXmlPagingCookie) {
        return retrieveAllRecords(
          entityName,
          fetchXml,
          page + 1,
          count,
          pageResults.fetchXmlPagingCookie
        ).then(
          function success(results) {
            if (results) {
              return pageResults.entities.concat(results);
            }
          },
          function error(e) {
            throw e;
          }
        );
      } else {
        return pageResults.entities;
      }
    },
    function error(e) {
      throw e;
    }
  );
}

function retrievePage(entityName, fetchXml, pageNumber, count, pagingCookie) {
  var fetchXml =
    "?fetchXml=" + CreateXml(fetchXml, pagingCookie, pageNumber, count);

  return Xrm.WebApi.online.retrieveMultipleRecords(entityName, fetchXml).then(
    function success(result) {
      return result;
    },
    function error(e) {
      throw e;
    }
  );
}

var count = 3;
var fetchXml =
  '<fetch><entity name="account"><attribute name="accountid"/><attribute name="name"/></entity></fetch>';

retrieveAllRecords("account", fetchXml, null, count, null).then(
  function success(result) {
    console.log(result);

    // perform additional operations on retrieved records
  },
  function error(error) {
    console.log(error.message);
    // handle error conditions
  }
);

İlgili tablolardan dönen verileri denetlemek için gezinti özelliklerindeki $expand sistem sorgusu seçeneğini kullanın. Aşağıdaki örnekte, tüm hesap kayıtları için ilgili kişinin nasıl alınacakları gösterilmektedir. İlgili kişi kayıtları için yalnızca ve fullname alanlarını alırsınızcontactid:

Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)", 3).then(
    function success(result) {
        for (var i = 0; i < result.entities.length; i++) {
            console.log(result.entities[i]);
        }        
        // perform additional operations on retrieved records
    },
    function (error) {
        console.log(error.message);
        // handle error conditions
    }
);

Yukarıdaki kod aşağıdaki gibi bir şemayla sonuç döndürür:

{
   "entities": [
      {
         "@odata.etag": "W/\"1459919\"",
         "name": "Test Account",
         "accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
         "primarycontactid": {
            "contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
            "fullname": "Test Contact"
         }
      }
   ]
}

Uyarı

Çevrimiçi senaryoya benzer şekilde, çevrimdışı durumdaki ilgili tablolardan veri almak için $expand sistem sorgusu seçeneğini kullanın. Ancak, çoka çok ilişkileri çevrimdışı olarak desteklenmez.

Mobil çevrimdışı senaryo için kullanım dışı yöntemi

Uyarı

@odata.nextLink mobil çevrimdışı senaryolar için kullanım dışıdır. Mevcut özelleştirmeler için hala destekleniyor olsa da artık kullanmayın.

Çevrimdışı $expand işlemi, ilgili kaydın bilgilerine nasıl ulaşılması konusunda bilgi içeren bir @odata.nextLink ek açıklama döndürür. idBir veya daha fazla ek Xrm.WebApi.offline.retrieveRecord istek oluşturmak için bu ek açıklamanın , entityTypeve options parametrelerini kullanın. Aşağıdaki kod, bunun nasıl yapılacağının tam bir örneğini sağlar:

Xrm.WebApi.offline.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)").then(function(resultSet) {
    /**
     *  resultSet has a structure like:
     *  {
     *      "entities": [
     *          {
     *              "accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
     *              "name": "Test Account",
     *              "primarycontactid@odata.nextLink": {
     *                  "API": "{Xrm.Mobile.offline}.{retrieveRecord}",
     *                  "id": "119edfac-19c6-ea11-a81a-000d3af5e732",
     *                  "entityType": "account",
     *                  "options": "?$select=accountid&$expand=primarycontactid($select=contactid,fullname)&$getOnlyRelatedEntity=true"
     *              },
     *              "primarycontactid": {}
     *          }
     *      ]
     *  }
     *
     *  Notice the empty `primarycontactid` property but an additional `primarycontactid@odata.nextLink` 
     *  annotation that lets us know how to get to the linked data that we need.
     **/

    var promises = resultSet.entities.map(function(outerItem) {
        // We do a retrieveRecord() for every item in the result set of retrieveMultipleRecords() and then
        // combine the results into the retrieveMultipleRecords() result set itself.
       return Xrm.WebApi.offline.retrieveRecord(
           outerItem["primarycontactid@odata.nextLink"].entityType, 
           outerItem["primarycontactid@odata.nextLink"].id,
           outerItem["primarycontactid@odata.nextLink"].options
        ).then(function(innerResult) {            
            if (innerResult.value.length === 0) {
                return outerItem;
            }
            outerItem.primarycontactid = innerResult.value[0];
            return outerItem;
        });
    });

    return Promise.all(promises);
}).then(function(allResults) {
    for (var i = 0; i < allResults.length; i++) {
        console.log(allResults[i]);
    }
    // perform additional operations on retrieved records
}, function(error) {
    console.error(error);
    // handle error conditions
});

Web API'sini kullanarak birden çok kayıt alma hakkında daha fazla örnek için bkz. Web API'sini kullanarak Verileri Sorgulama.

Web API'sini kullanarak Verileri Sorgulama
Xrm.WebApi.retrieveRecord
Xrm.WebApi