Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti 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šų grąžinti puslapyje. Jei nenurodysite šio parametro, numatytoji reikšmė bus maksimali standartinės lentelės 5 000 įrašų riba ir 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 yra 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 įtraukiate 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 šią parinktį ir vienos, ir rinkinio reikšmių naršymo ypatybėms. Neprisijungus palaikoma tik įdėtosios $select parinkties $expand viduje.
Norėdami nurodyti FetchXML užklausą, naudokite fetchXml stulpelį užklausai nurodyti.
Pastaba.
Visada turite naudoti $select sistemos užklausos parinktį, kad apribotumėte pateiktas lentelės įrašo ypatybes, įtraukdami kableliais atskirtų ypatybių pavadinimų sąrašą. Ši praktika svarbi našumui. Jei ypatybių nenurodysite naudodami $select, bus pateikiamos visos ypatybės.
Nurodykite užklausos parinktis, prasidedančius ?. Taip pat galite nurodyti kelias sistemos užklausos parinktis, atskirdami & užklausos parinktis.
Kai nurodote parametro "OData" užklausos eilutę options , užkoduokite specialiųjų simbolių užklausą.
Kai nurodote parametro "FetchXML" options užklausą, neužkoduokite užklausos.
Norėdami sužinoti, kaip nustatyti įvairių scenarijų parametrą options , žr. Pavyzdžiai.
Grąžinama 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žklausos parinkčių atributų tipai mobiliajame neprisijungus
Toliau nurodyti stulpelių tipai nepalaikomi, kai naudojate Xrm.WebApi.retrieveMultipleRecords su "OData" užklausos eilutės parinktimis (pvz., $select ir $filter) mobiliuoju autonominiu režimu. Naudokite FetchXML, jei jums reikia dirbti su atributo tipu šiame nepalaikomų atributų tipų sąraše.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Nepalaikomos "Mobile Offline" funkcijos
Toliau nurodytos funkcijos nepalaikomos neprisijungus prie mobiliojo įrenginio:
- Grupavimo ir agregavimo funkcijos
Palaikomos filtravimo 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
Galite naudoti retrieveMultipleRecords metodą, kad pasiektumėte daugumą scenarijų ir pavyzdžių, paminėtų užklausos duomenyse, naudodami žiniatinklio API. Kai kurie pavyzdžiai pateikti tolesniame skyriuje.
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 galite naudoti konkrečią vienos reikšmės naršymo ypatybės reikšmę. Tačiau šios sintaksės parinktys nepalaikomos mobiliesiems klientams atjungties režimu. Vienos reikšmės naršymo ypatybės pavadinimą naudokite nuskaitydami ir filtruodami. Be to, autonominis režimas nepalaiko naršymo ypatybių palyginimo su neapibrėžta reikšme.
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 naudokite prisijungę arba neprisijungę, kad gautumėte name kliento įrašų, kuriuose yra pirminis kontaktas ir 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, kad kiekviename puslapyje būtų rodomi trys įrašai.
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 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 kito retrieveMultipleRecords iškvietimo parametro reikšmęoptions, kad paprašytumėte kito įrašų rinkinio. Nekeiskite ir neįtraukite į reikšmę daugiau sistemos užklausos parinkčių. Kiekvienai tolesnei užklausai dėl daugiau puslapių naudokite tą pačią maxPageSize reikšmę, kurią naudojote pradiniame nuskaityme keliose užklausose. Be to, išsaugokite grąžintus rezultatus arba ypatybės reikšmę, nextLink kad jūsų taikomoji programa galėtų grąžinti anksčiau nuskaitytus puslapius.
Pavyzdžiui, norėdami gauti kitą įrašų puslapį, perduoti URL užklausos dalį nextLink parametrui 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
}
);
Ši užklausa pateikia kitą rezultatų rinkinio puslapį.
{@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, DĖL XML slapukų informacijos URL atsiranda klaida.
"FetchXML" pavyzdys (internetinis scenarijus)
Toliau pateiktame pavyzdyje parodyta, kaip naudoti parametrą count "FetchXML" norint nurodyti, kad kiekviename puslapyje būtų rodomi trys įrašai.
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 rodomi trys įrašai ir pateikiamas "FetchXML" puslapių kaitos slapukas, kad būtų galima gauti kito puslapio rezultatus, jei rezultatų rinkinyje yra daugiau į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\" />"
}
Norėdami iškviesti didelius rezultatų rinkinius su puslapių kaita, naudokite fetchXmlPagingCookie toliau pateiktame pavyzdyje pateiktą pavyzdį.
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 grąžinami iš susijusių lentelių. Toliau pateiktame pavyzdyje parodyta, kaip gauti visų klientų įrašų kontaktą. Susijusius kontaktų įrašus galima gauti tik iš contactid šių fullname laukų:
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
}
);
Ankstesnis kodas pateikia rezultatą, kurio schema yra panaši į:
{
"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, nebenaudokite jo.
Operacija $expand neprisijungus pateikia komentarą su @odata.nextLink informacija apie tai, kaip gauti susijusio įrašo informaciją. Naudokite šio komentaro idparametrus ir , entityTypeoptions kad sukurtumėte vieną ar kelias papildomas Xrm.WebApi.offline.retrieveRecord užklausas. Šiame 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 gauti 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