Nata
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti prisijungti arba pakeisti katalogus.
Norint pasiekti šį puslapį, reikalingas leidimas. Galite pabandyti pakeisti katalogus.
Nuskaito lentelės įrašų rinkinį.
Sintaksė
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parametrus
| Pavadinimas / vardas ir pavardė | Tipas | Privalomas | Aprašą |
|---|---|---|---|
entityLogicalName |
String | Taip | Lentelės loginis norimų gauti įrašų pavadinimas. Pavyzdžiui: account. |
options |
String | Ne | "OData" sistemos užklausos parinktys arba "FetchXML" užklausa jūsų duomenims gauti. Žr . parinktis |
maxPageSize |
Skaičius | Ne | Nurodykite teigiamą skaičių, nurodantį, kiek lentelės įrašų turi būti pateikta puslapyje. Jei nenurodysite šio parametro, numatytoji reikšmė bus maksimali standartinės lentelės 5 000 įrašų riba, 500 elastingų lentelių. Jei nuskaitomų įrašų skaičius yra didesnis nei nurodyta maxPageSize reikšmė arba maksimali lentelės tipo riba, nextLink grąžinamo pažado objekto stulpelyje bus saitas įrašams gauti. |
successCallback |
Funkcija | Ne | Funkcija, iškviečiama, kai nuskaitomi lentelės įrašai. Žr. grąžinamą reikšmę |
errorCallback |
Funkcija | Ne | Funkcija, kurią reikia iškviesti, kai operacija nepavyksta. Perduotas objektas su šiomis ypatybėmis: - errorCode:Numeris. Klaidos kodas kaip teigiamas dešimtainis skaičius. Pavyzdžiui, klaidos kodas, dokumentuotas kaip 0x80040333 bus grąžintas kaip 2147746611.- message:Eilutės. Klaidos pranešimas, apibūdinantis problemą. |
Parinktys
Palaikomos šios sistemos užklausų parinktys: $select, $top, $filter, ir $expand$orderby.
$expand Naudokite sistemos užklausos parinktį, kad valdytumėte, kokie duomenys iš susijusių lentelių pateikiami. Jei tiesiog įtrauksite naršymo ypatybės pavadinimą, gausite visas susijusių įrašų ypatybes. Galite apriboti susijusių įrašų pateiktas ypatybes naudodami $select sistemos užklausos parinktį skliausteliuose po naršymo ypatybės pavadinimo. Naudokite tiek vienos reikšmės, tiek kolekcijos vertės naršymo ypatybėms. Atkreipkite dėmesį, kad neprisijungus palaikome tik įdėtąją $select$expandparinktį viduje .
Norėdami nurodyti FetchXML užklausą, naudokite fetchXml stulpelį užklausai nurodyti.
Pastaba.
Visada turite naudoti $selectsistemos užklausos parinktį, kad apribotumėte pateiktas lentelės įrašo ypatybes, įtraukdami kableliais atskirtų ypatybių pavadinimų sąrašą. Tai yra svarbi geriausia veiklos praktika. Jei ypatybės nenurodytos naudojant $select, bus grąžintos visos ypatybės.
Užklausos pasirinktis galite nurodyti pradėdami nuo ?. Taip pat galite nurodyti kelias sistemos užklausos parinktis, atskirdami & užklausos parinktis.
Kai nurodote parametro "OData" užklausos eilutę options , užklausa turi būti užkoduota specialiesiems simboliams.
Kai nurodote parametro "FetchXML" options užklausą, užklausa neturėtų būti užkoduota.
Žr . Pavyzdžiai , kaip galite apibrėžti parametrą options įvairiems scenarijams nuskaityti.
Grąžinimo reikšmė
Sėkmingai grąžins pažado objektą successCallback su šiomis ypatybėmis:
| Pavadinimas / vardas ir pavardė | Tipas | Aprašą |
|---|---|---|
entities |
JSON objektų masyvas | Kiekvienas objektas nurodo nuskaitytą lentelės įrašą, kuriame yra stulpelių, o jų reikšmės – kaip key: value poros. Lentelės įrašo ID nuskaitomas pagal numatytuosius parametrus |
nextLink |
String | (pasirinktinai) Jei nuskaitomų įrašų skaičius yra didesnis nei reikšmė, maxPageSize nurodyta užklausos parametre, grąžinamas URL, kad būtų pateiktas paskesnis įrašų puslapis. |
fetchXmlPagingCookie |
(pasirinktinai) Atliekant fetchXml pagrįstą retrieveMultipleRecords operaciją su puslapių kaita, kai bendras įrašų skaičius yra didesnis už puslapių kaitos reikšmę, šis atributas pateikia puslapių kaitos slapuką, kurį galima naudoti tolesnei fetchXml operacijai gauti kitame įrašų puslapyje. |
Nepalaikomi "OData" užklausų parinkčių atributų tipai "Mobile Offline"
Toliau nurodyti stulpelių tipai nepalaikomi atliekant Xrm.WebApi.retrieveMultipleRecords operaciją su "OData" užklausos eilutės parinktimis (pvz., $select ir $filter) mobiliuoju autonominiu režimu. Turėtumėte naudoti FetchXML, jei atributo tipas, su kurio reikia dirbti, yra šiame nepalaikomų atributų tipų sąraše.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Nepalaikomos "Mobile Offline" funkcijos
"Mobile Offline" nepalaiko šių funkcijų:
- Grupavimo ir agregavimo funkcijos
Palaikomos filtro operacijos pagal atributo tipą mobiliajame neprisijungus naudojant "FetchXML"
Dirbant su "FetchXML", palaikomos šios visų atributų tipų operacijos:
- Lygu (
eq) - Nelygu (
neq) - Neapibrėžta reikšmė (
nullNull) - Not Null (
not-null)
Šioje lentelėje pateikiama daugiau operacijų, palaikomų su kiekvienu atributo tipu:
| Atributo tipas | Palaikomos operacijos |
|---|---|
| BigInt, Decimal, Double, Integer | Daugiau nei (gt)Daugiau arba lygu ( gte)Mažiau nei ( lt)Mažiau arba lygu ( lte) |
| Bulio logika, klientas | Lauke (in)Nėra ( not-in) |
| EntityName, Picklist, State, Status | Patinka (like)Nepatinka ( not-like)Prasideda ( begins-with)Neprasidedus ( not-begin-with)Baigiasi ( ends-with)Nesibaigia ( not-end-with)Lauke ( in)Nėra ( not-in) |
| Guid, peržvalga | Lauke (in)Nėra ( not-in)Lygu vartotojo ID ( eq-userid)Nelygu vartotojo ID ( ne-userid) |
| Money | Daugiau nei (gt)Daugiau arba lygu ( gte)Mažiau nei ( lt)Mažiau arba lygu ( lte)Lauke ( in)Nėra ( not-in) |
| Savininkas | Lauke (in)Nėra ( not-in)Lygu vartotojo ID ( eq-userid)Nelygu vartotojo ID ( ne-userid)Lygu vartotojui arba komandai ( eq-useroruserteams) |
| String | Patinka (like)Nepatinka ( not-like)Prasideda ( begins-with)Neprasidedus ( not-begin-with)Baigiasi ( ends-with)Nesibaigia ( not-end-with) |
| DateTime | On or After (on-or-after)Įjungta ( on)Įjungta arba ankstesnė ( on-or-before)Šiandien ( today)Rytoj ( tomorrow)Vakar ( yesterday)Paskesnės septynios dienos ( next-seven-days)Pastarosios septynios dienos ( last-seven-days)Kitą savaitę ( next-week)Praėjusią savaitę ( last-week)Šią savaitę ( this-week)Kitą mėnesį ( next-month)Praėjusį mėnesį ( last-month)Šį mėnesį ( this-month)Kitais metais ( next-year)Praėjusiais metais ( last-year)Šiais metais ( this-year)Paskutinės X dienos ( last-x-days)Kitos X dienos ( next-x-days)Paskutinės X savaitės ( last-x-weeks)Kitos X savaitės ( next-x-weeks)Paskutiniai X mėnesiai ( last-x-months)Kiti X mėnesiai ( next-x-months)Paskutiniai X metai ( last-x-years)Kiti X metai ( next-x-years)Daugiau nei ( gt)Daugiau arba lygu ( gte)Mažiau nei ( lt)Mažiau arba lygu ( lte) |
Pavyzdžiai
Daugumą scenarijų / pavyzdžių, paminėtų užklausos duomenyse naudojant žiniatinklio API , galima pasiekti naudojant metodą retrieveMultipleRecords . Kai kurie pavyzdžiai pateikti toliau.
Bazinis nuskaitymas keliems
Šiame pavyzdyje pateikiamas paskyrų lentelės rinkinio užklausų rinkinys ir naudojamos $select sistemos $top užklausos parinktys, kad būtų pateikta pirmųjų trijų paskyrų pavadinimo ypatybė:
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
}
);
Basic retrieve multiple with FetchXML
Šiame pavyzdyje užklausas subjekto account naudojant fetchXML.
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
}
);
Nuskaityti arba filtruoti pagal peržvalgos ypatybes
Daugumoje vienos reikšmės naršymo ypatybių rasite apskaičiuojamą, tik skaityti skirtą ypatybę, kuri naudoja šią vardų suteikimo konvenciją: _<name>_value kur <name> yra vienos reikšmės naršymo ypatybės pavadinimas. Filtravimo tikslais taip pat galima naudoti konkrečią vienos reikšmės naršymo ypatybės reikšmę. Tačiau mobiliesiems klientams atjungties režimu šios sintaksės parinktys nepalaikomos, todėl vienos reikšmės naršymo ypatybės pavadinimas turėtų būti naudojamas tiek nuskaitant, tiek filtruojant. Be to, naršymo ypatybių palyginimas su neapibrėžta reikšme neprisijungus nepalaikomas.
Daugiau informacijos: Peržvalgos ypatybės
Toliau pateikiami abiejų scenarijų kodų pavyzdžiai:
Internetinio scenarijaus (prijungto prie serverio) atveju
Šiame pavyzdyje pateikiamas užklausų paskyrų lentelių rinkinys ir naudojamos $select sistemos $filter užklausos parinktys, kad būtų pateiktas paskyrų, kuriose yra konkretus pirminis kontaktas, pavadinimas ir pirminėkontaktoidinė ypatybė:
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
}
);
Jei naudojate mobiliojo įrenginio autonominį scenarijų
Šiame pavyzdyje pateikiama paskyrų lentelės rinkinio užklausa ir naudojamos $select sistemos $filter užklausos parinktys, kad būtų pateiktas paskyrų, kuriose yra konkretus pirminis kontaktas dirbant autonominiu režimu, pavadinimas ir pirminė kontaktoidinė ypatybė:
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
}
);
"FetchXML" naudojimas norint nuskaityti arba filtruoti pagal peržvalgos ypatybes (internetinis ir autonominis scenarijus)
Parametrą FetchXML galite naudoti prisijungę arba neprisijungę, kad gautumėte name kliento įrašų, kuriuose yra pirminis kontaktas, atitinkantis sąlygą, ypatybę ir primarycontactid :
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
}
);
Nurodykite puslapyje pateikiamų lentelių skaičių
Toliau pateiktame pavyzdyje parodyta, kaip naudoti parametrą maxPageSize norint nurodyti puslapyje rodomų įrašų skaičių (3).
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
}
);
Šiame pavyzdyje bus rodomi trys įrašai ir saitas į kitą puslapį. Štai pavyzdys, kaip išvestis iš konsolės naudojant naršyklės kūrėjo įrankius:
{@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
Naudokite užklausos dalį ypatybės URL nextLink kaip parametro options reikšmę paskesniame retrieveMultipleRecords iškvietime, kad paprašytumėte kito įrašų rinkinio. Nekeiskite ir nepridėkite prie reikšmės daugiau sistemos užklausos parinkčių. Kiekvienai tolesnei užklausai dėl daugiau puslapių turėtumėte naudoti tą pačią maxPageSize reikšmę, kuri naudojama pradiniame nuskaityme keliose užklausose. Be to, išsaugokite grąžintus rezultatus arba ypatybės NextLink reikšmę, kad būtų galima grąžinti anksčiau nuskaitytus puslapius.
Pavyzdžiui, norėdami gauti kitą įrašų puslapį, URL užklausos dalyje nextLink pereisime prie parametro 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
}
);
Bus pateiktas paskesnis rezultatų rinkinio puslapis:
{@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
Svarbu
Ypatybės reikšmė nextLink yra užkoduota URI. Jei URI koduojate reikšmę prieš ją išsiųsdami, XML slapuko informacija URL sukels klaidą.
"FetchXML" pavyzdys (internetinis scenarijus)
Toliau pateiktame pavyzdyje parodytas FetchXML parametro naudojimas count norint nurodyti puslapyje rodomų įrašų skaičių (3).
Pastaba.
"FetchXML" puslapių kaitos slapukas grąžinamas tik internetinėms retrieveMultipleRecords operacijoms atlikti. (Xrm.WebApi.online). Jis nepalaikomas neprisijungus.
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
}
);
Šiame pavyzdyje bus rodomi trys įrašai ir pateikiamas FetchXML puslapių kaitos slapukas, kad gautumėte kito puslapio rezultatus, jei yra daugiau rezultatų rinkiniui priklausančių įrašų. Štai pavyzdys, kaip išvestis iš konsolės naudojant naršyklės kūrėjo įrankius:
{
"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\" />"
}
Kaip parodyta toliau pateiktame pavyzdyje, galime naudoti fetchXmlPagingCookie norėdami iškviesti didelius rezultatų rinkinius su puslapių kaita.
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
}
);
Susijusių lentelių gavimas išplečiant naršymo ypatybes
Naršymo ypatybėse naudokite $expand sistemos užklausos parinktį, kad valdytumėte duomenis, kurie pateikiami iš susijusių lentelių. Toliau pateiktame pavyzdyje parodyta, kaip gauti visų paskyros įrašų kontaktą. Susijusių kontaktų įrašų atveju nuskaitome contactid tik ir fullname:
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
}
);
Aukščiau pateikta kodo dalis pateikia rezultatą su schema, pvz.:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Pastaba.
Panašiai kaip naudojant internetinį scenarijų, naudokite $expand sistemos užklausos parinktį, kad gautumėte duomenis iš susijusių lentelių neprisijungę. Tačiau ryšiai "daugelis su daugeliu" nepalaikomi neprisijungus.
Nebenaudojamas "Mobile Offline" scenarijaus metodas
Pastaba.
"" @odata.nextLink nebenaudojama "Mobile Offline" scenarijams. Nors jis vis dar palaikomas esamiems tinkinimams, nerekomenduojama jo naudoti.
Operacija $expand neprisijungus pateikia komentarą su @odata.nextLink informacija apie tai, kaip gauti susijusio įrašo informaciją. Naudojame komentaro idparametrą , entityTypeir options , kad sukurtume vieną ar kelias papildomas Xrm.WebApi.offline.retrieveRecord užklausas. Toliau pateiktame kode pateikiamas išsamus pavyzdys, kaip tai padaryti:
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
});
Daugiau pavyzdžių, kaip nuskaityti kelis įrašus naudojant žiniatinklio API, žr. Užklausos duomenys naudojant žiniatinklio API.
Susiję straipsniai
Duomenų užklausa naudojant žiniatinklio API
Xrm.WebApi.retrieveRecord
Xrm.WebApi