Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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, değer varsayılan olarak standart tablolar için en fazla 5.000 kayıt sınırına, elastik tablolar için 500'e ayarlanır. Alınan 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. Bunu hem tek değerli hem de koleksiyon değerli gezinti özellikleri için kullanın. Çevrimdışı için yalnızca içinde $expandiç içe $select yerleştirilmiş seçeneği desteklediğimizi unutmayın.
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 $selectvirgülle ayrılmış bir listesini ekleyerek sınırlamak için her zaman sistem sorgusu seçeneğini kullanmanız gerekir. Bu, önemli bir performans en iyi uygulamasıdır. özellikleri kullanılarak $selectbelirtilmezse, tüm özellikler döndürülür.
ile başlayan ?sorgu seçeneklerini belirtirsiniz. 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 , sorgu özel karakterler için kodlanmalıdır .
parametresi için bir FetchXML sorgusu belirttiğinizde options , sorgu kodlanmamalıdır.
Çeşitli alma senaryoları için parametreyi nasıl tanımlayabileceğinizi options görmek için örneklere bakın.
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ışı'nda OData sorgu seçenekleri için desteklenmeyen Öznitelik Türleri
Mobil çevrimdışı modda OData sorgu dizesi seçenekleriyle (örneğin $select ve $filter) bir Xrm.WebApi.retrieveMultipleRecords işlem yaparken aşağıdaki Sütun türleri desteklenmez. Birlikte çalışmanız gereken öznitelik türü bu desteklenmeyen öznitelik türleri listesindeyse FetchXML kullanmalısınız.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Mobil Çevrimdışı'nda desteklenmeyen özellikler
Mobil Çevrimdışı'nda aşağıdaki özellikler desteklenmez:
- Gruplandırma ve Toplama özellikleri
FetchXML kullanılarak Mobil Çevrimdışında Öznitelik Türü Başına Desteklenen Filtre İş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/örneklerin çoğu retrieveMultipleRecords yöntemi kullanılarak gerçekleştirilebilir. Örneklerden bazıları aşağıda 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ğeri de kullanılabilir. Ancak, çevrimdışı modda mobil istemciler için bu söz dizimi seçenekleri desteklenmez ve hem alma hem de filtreleme için tek değerli gezinti özelliği adı kullanılmalıdır. Ayrıca, gezinti özelliklerinin null ile karşılaştırılması çevrimdışı modda desteklenmez.
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 kullanabilirsiniz:
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 örnek, bir sayfada görüntülenecek kayıt sayısını (3) belirtmek için parametresinin kullanımını maxPageSize gösterir.
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çinoptions, 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 alma birden çok istekte kullanılan değeri kullanmanız maxPageSize gerekir. Ayrıca, daha önce alınan sayfaların döndürülebilmesi için döndürülen sonuçları veya nextLink özelliğinin değerini önbelleğe alın.
Örneğin, kayıtların sonraki sayfasını almak için URL'nin sorgu bölümünü nextLink parametresine options geçireceğiz:
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, 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 örnek, bir sayfada görüntülenecek kayıt sayısını (3) belirtmek için FetchXML parametresinin kullanımını count gösterir.
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ümesine ait daha fazla kayıt varsa sonraki sayfanın sonuçlarını almak için FetchXML Sayfalama Tanımlama Bilgisi döndürülecektir. 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 kullanabiliriz 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
}
);
Gezinti özelliklerini genişleterek ilgili tabloları alma
İlgili tablolardan döndürülen verileri denetlemek için gezinti özelliklerindeki $expand sistem sorgusu seçeneğini kullanın. Aşağıdaki örnek, tüm hesap kayıtları için ilgili kişinin nasıl alınduğunu gösterir. İlgili kişi kayıtları için yalnızca ve fullnamedeğerini contactid alıyoruz:
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 parçası 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 kullanılması önerilmez.
Ç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. Bir veya daha fazla ek Xrm.WebApi.offline.retrieveRecord istek oluşturmak için bu ek açıklamanın , entityTypeve options parametresini kullanırızid. Aşağıdaki kod parçası, 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 kaydı alma hakkında daha fazla örnek için bkz. Web API'sini kullanarak Verileri Sorgulama.
İlgili makaleler
Web API'sini kullanarak Verileri Sorgulama
Xrm.WebApi.retrieveRecord
Xrm.WebApi