Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Dohvaća zbirku zapisa tablice.
Sintaksa
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parametara
| Ime | Tip | Obvezno | Opis |
|---|---|---|---|
entityLogicalName |
String | Da | Logički naziv tablice zapisa koje želite dohvatiti. Na primjer: account. |
options |
String | Ne | Mogućnosti upita sustava OData ili FetchXML upit za dohvaćanje podataka. Pogledajte mogućnosti |
maxPageSize |
Broj | Ne | Navedite pozitivan broj koji označava broj zapisa tablice koji će biti vraćeni po stranici. Ako ne navedete taj parametar, vrijednost je zadana na maksimalno ograničenje od 5000 zapisa za standardne tablice, 500 za elastične tablice. Ako je broj zapisa koji se dohvaćaju maxPageSize veći od navedene vrijednosti ili maksimalnog ograničenja za vrstu tablice, nextLink stupac u vraćenom objektu obećanja sadržavat će vezu za dohvaćanje zapisa. |
successCallback |
Function | Ne | Funkcija koja se poziva prilikom dohvaćanja zapisa tablice. Pogledajte povratnu vrijednost |
errorCallback |
Function | Ne | Funkcija za pozivanje kada operacija ne uspije. Prosljeđuje se objekt sa sljedećim svojstvima: - errorCode:Broj. Kôd pogreške kao pozitivan decimalni broj. Primjerice, kôd pogreške dokumentiran kao 0x80040333 će se vratiti kao 2147746611.- message:Gudački. Poruka o pogrešci koja opisuje problem. |
Mogućnosti
Podržane su sljedeće mogućnosti upita sustava: $select, $top, $filter, $expandi $orderby.
Pomoću mogućnosti $expand upita sustava kontrolirajte koji se podaci iz povezanih tablica vraćaju. Ako samo uvrstite naziv navigacijskog svojstva, primit ćete sva svojstva povezanih zapisa. Svojstva vraćena za povezane zapise možete ograničiti pomoću mogućnosti $select upita sustava u zagradama nakon naziva navigacijskog svojstva. Koristite ovu opciju za navigacijska svojstva s jednom vrijednošću i za svojstva s vrijednošću zbirke . Imajte na umu da za izvanmrežni rad podržavamo samo ugniježđene $select mogućnosti unutar $expand.
Da biste odredili FetchXML upit, koristite stupac fetchXml da biste odredili upit.
Napomena
Uvijek morate koristiti mogućnost upita $selectsustava da biste ograničili svojstva vraćena za zapis tablice uključivanjem popisa naziva svojstava odvojenih zarezom. Ovo je važna najbolja praksa u izvedbi. Ako svojstva nisu navedena pomoću , sva $selectće se svojstva vratiti.
Opcije upita navodite počevši od ?. Možete navesti i više mogućnosti upita sustava tako da razdvojite & mogućnosti upita.
Kada za parametar navedete niz upita options OData, upit je potrebno kodirati za posebne znakove.
Kada za parametar navedete FetchXML options upit, upit se ne smije kodirati.
Pogledajte primjere da biste vidjeli kako definirati parametar options za različite scenarije dohvaćanja više scenarija.
Povratna vrijednost
Nakon uspjeha vraća objekt obećanja sljedećim successCallback svojstvima:
| Ime | Tip | Opis |
|---|---|---|
entities |
Polje JSON objekata | Svaki objekt predstavlja dohvaćeni zapis tablice koji sadrži stupce i njihove vrijednosti kao key: value parove. ID zapisa tablice dohvaća se po zadanom |
nextLink |
String | (nije obavezno) Ako je broj zapisa koji se dohvaćaju maxPageSize veći od vrijednosti navedene u parametru u zahtjevu, vraća URL za vraćanje sljedeće stranice zapisa. |
fetchXmlPagingCookie |
(nije obavezno) Za postupak koji se temelji na fetchXml-u retrieveMultipleRecords s označavanjem stranica gdje je ukupni broj zapisa veći od vrijednosti označavanja stranica, taj atribut vraća kolačić označavanja stranica koji se može koristiti za naknadnu operaciju fetchXml za dohvaćanje sljedeće stranice zapisa. |
Nepodržane vrste atributa za mogućnosti upita OData u mobilnom izvanmrežnom načinu rada
Sljedeće vrste stupaca nisu podržane Xrm.WebApi.retrieveMultipleRecords prilikom operacije s mogućnostima niza upita OData (na primjer i $select$filter) u mobilnom izvanmrežnom načinu rada. FetchXML koristite ako se vrsta atributa s čiju je vrstu atributa potrebno raditi nalazi na popisu nepodržanih vrsta atributa.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Nepodržane značajke u mobilnom izvanmrežnom načinu rada
Mobilna izvanmrežna aplikacija ne podržava sljedeće značajke:
- Značajke grupivanja i agregacije
Podržane operacije filtriranja po vrsti atributa u mobilnom izvanmrežnom načinu pomoću fetchXML-a
Sljedeće su operacije podržane za sve vrste atributa prilikom rada s FetchXML-om:
- Jednako (
eq) - Nije jednako (
neq) - Null (
null) - Nije Null (
not-null)
U sljedećoj su tablici navedene dodatne operacije podržane za svaku vrstu atributa:
| Vrsta atributa | Podržane operacije |
|---|---|
| BigInt, Decimalno, Dvostruko, Cijeli broj | Veće od (gt)Veće od ili jednako ( gte)Manje od ( lt)Manje od ili jednako ( lte) |
| Booleova vrijednost, klijent | U (in)Nije u ( not-in) |
| EntityName, Picklist, State, Status | Sviđa mi se (like)Nije sa "sviđa mi se" ( not-like)Počinje sa ( begins-with)Ne počinje sa ( not-begin-with)Završava sa ( ends-with)Ne završava sa ( not-end-with)U ( in)Nije u ( not-in) |
| Guid, pretraživanje | U (in)Nije u ( not-in)Jednako je korisničkom ID-u ( eq-userid)Nije jednako korisničkom ID-u ( ne-userid) |
| Money | Veće od (gt)Veće od ili jednako ( gte)Manje od ( lt)Manje od ili jednako ( lte)U ( in)Nije u ( not-in) |
| Vlasnik | U (in)Nije u ( not-in)Jednako je korisničkom ID-u ( eq-userid)Nije jednako korisničkom ID-u ( ne-userid)Jednako je korisniku ili timu ( eq-useroruserteams) |
| String | Sviđa mi se (like)Nije sa "sviđa mi se" ( not-like)Počinje sa ( begins-with)Ne počinje sa ( not-begin-with)Završava sa ( ends-with)Ne završava sa ( not-end-with) |
| Datum i vrijeme | Dana ili poslije (on-or-after)Uključeno ( on)Dana ili prije ( on-or-before)Danas ( today)Sutra ( tomorrow)Jučer ( yesterday)Sljedećih sedam dana ( next-seven-days)Zadnjih sedam dana ( last-seven-days)Sljedeći tjedan ( next-week)Prošli tjedan ( last-week)Ovaj tjedan ( this-week)Sljedeći mjesec ( next-month)Prošli mjesec ( last-month)Ovaj mjesec ( this-month)Sljedeća godina ( next-year)Prošla godina ( last-year)Ova godina ( this-year)Zadnjih X dana ( last-x-days)Sljedeći X dani ( next-x-days)Zadnjih X tjedana ( last-x-weeks)Sljedeći X tjedana ( next-x-weeks)Posljednji X mjeseci ( last-x-months)Sljedeći X mjeseci ( next-x-months)Posljednje X godine ( last-x-years)Sljedeće X godine ( next-x-years)Veće od ( gt)Veće od ili jednako ( gte)Manje od ( lt)Manje od ili jednako ( lte) |
Primjeri
Većina scenarija/primjera spomenutih u podacima upita pomoću web-API-ja može se postići pomoću metode retrieveMultipleRecords . Neki od primjera navedeni su u nastavku.
Osnovno dohvaćanje višestrukih
U ovom se primjeru upit o skupu tablica računa i $select$top pomoću mogućnosti upita sustava vraćaju svojstvo naziva za prva tri računa:
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
}
);
Osnovni dohvat višestrukog grafikona s FetchXML-om
U ovom se primjeru entitetu account upiti pomoću fetchXML-a.
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
}
);
Dohvaćanje ili filtriranje po svojstvima pretraživanja
Za većinu svojstava navigacije s jednom vrijednošću pronaći ćete izračunato svojstvo samo za čitanje koje koristi sljedeću konvenciju imenovanja: _<name>_value<name> pri čemu je naziv navigacijskog svojstva s jednom vrijednošću. Za filtriranje se može koristiti i specifična vrijednost svojstva navigacije s jednom vrijednošću. No za mobilne klijente u izvanmrežnom načinu rada te mogućnosti sintakse nisu podržane i za dohvaćanje i filtriranje koristit će se naziv navigacijskog svojstva s jednom vrijednošću. Osim toga, usporedba navigacijskih svojstava s vrijednošću null nije podržana u izvanmrežnom načinu rada.
Dodatne informacije: Svojstva pretraživanja
Evo primjera koda za oba scenarija:
Za mrežni scenarij (povezan s poslužiteljem)
U ovom se primjeru $select$filter upit o skupu tablica računa i pomoću mogućnosti upita sustava vraćaju naziv i svojstvo primarycontactid za račune s određenim primarnim kontaktom:
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
}
);
Za scenarij za mobilni izvanmrežni rad
U ovom se primjeru $select$filter upit o skupu tablica računa i pomoću mogućnosti upita sustava vraćaju naziv i svojstvo primarycontactid za račune s određenim primarnim kontaktom prilikom rada u izvanmrežnom načinu rada:
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
}
);
Korištenje FetchXML-a za dohvaćanje ili filtriranje prema svojstvima pretraživanja (mrežni i izvanmrežni scenarij)
Parametar možete koristiti tijekom mrežnog FetchXML ili nameprimarycontactid izvanmrežnog rada da biste dohvatili i svojstva zapisa računa koji imaju primarni kontakt koji odgovara uvjetu:
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
}
);
Navedite broj tablica koje će se vratiti na stranici
U sljedećem je primjeru prikazano korištenje parametra maxPageSize radi određivanja broja zapisa (3) koji će se prikazivati na stranici.
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
}
);
U ovom će se primjeru prikazati tri zapisa i veza na sljedeću stranicu. Evo primjera izlaza s konzole u alatima za razvojne inženjere preglednika:
{@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
Upotrijebite dio upita u URL-u nextLinkoptions u svojstvu kao vrijednost parametra u sljedećem pozivu retrieveMultipleRecords da biste zatražili sljedeći skup zapisa. Nemojte mijenjati ni dotišati dodatne mogućnosti upita sustava vrijednosti. Za svaki sljedeći zahtjev za više stranica koristite istu vrijednost koja se koristi maxPageSize u izvornom zahtjevu za dohvaćanje više stranica. Osim toga, rezultate koje vraćate ili vrijednost svojstva NextLink predmemoriraj da bi se prethodno dohvaćene stranice mogli vratiti.
Da biste, primjerice, dobili sljedeću stranicu zapisa, u dijelu upita nextLink URL-a proslijedit ćemo parametar options :
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
}
);
Ovo će vratiti sljedeću stranicu skupa rezultata:
{@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
Važno
Vrijednost svojstva je nextLink URI kodirana. Ako URI kodira vrijednost prije nego što je pošaljete, informacije o XML kolačiću u URL-u uzrokovat će pogrešku.
FetchXML primjer (mrežni scenarij)
U sljedećem je primjeru count prikazano korištenje parametra FetchXML radi određivanja broja zapisa (3) koji će se prikazivati na stranici.
Napomena
Kolačić za označavanje mjesta FetchXML vraća se samo za internetske retrieveMultipleRecords operacije. (Xrm.WebApi.online). Nije podržan u izvanmrežnom načinu rada.
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
}
);
U ovom će se primjeru prikazati tri zapisa i vratiti kolačić za dohvaćanje stranica FetchXML da bi se dohvatili rezultati sljedeće stranice ako postoji više zapisa koji pripadaju skupu rezultata. Evo primjera izlaza s konzole u alatima za razvojne inženjere preglednika:
{
"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\" />"
}
Kao što je prikazano u fetchXmlPagingCookie primjeru u nastavku možemo koristiti za dohvaćanje velikih skupova rezultata s označavanjem stranica.
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
}
);
Dohvaćanje povezanih tablica proširivanjem navigacijskih svojstava
Pomoću $expand upita sustava u navigacijskim svojstvima upravljajte podacima koji se vraćaju iz povezanih tablica. U sljedećem se primjeru pokazuje kako dohvatiti kontakt za sve zapise računa. Za povezane zapise kontakata dohvaćamo samo sljedeće podatke contactidfullname:
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
}
);
Gore navedeni dio koda vraća rezultat sa shemom kao što je:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Napomena
Slično mrežnom scenariju, pomoću mogućnosti $expand sustava dohvatite podatke iz povezanih tablica u izvanmrežnom načinu rada. No odnosi više-prema-više nisu podržani u izvanmrežnom načinu rada.
Zastarjela metoda za scenarij za izvanmrežni rad na mobilnim uređajima
Napomena
Zastario @odata.nextLink je za mobilne izvanmrežne scenarije. Iako je još uvijek podržana za postojeće prilagodbe, ne preporučuje se da je više koristite.
Izvanmrežna $expand vraća primjedbu @odata.nextLink koja sadrži informacije o načinu dohvaćanja informacija o povezanom zapisu. Koristimo id, i entityTypeparametar options te primjedbe za sastavljanje jednog ili više dodatnih Xrm.WebApi.offline.retrieveRecord zahtjeva. Sljedeći dio koda nudi potpuni primjer kako to učiniti:
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
});
Dodatne primjere dohvaćanja više zapisa pomoću web-API-ja potražite u članku Podaci upita pomoću WEB API-ja.
Povezani članci
Upitanje podataka pomoću web-API-ja
Xrm.WebApi.retrieveRecord
Xrm.WebApi