Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Hakee taulukkotietueiden kokoelman.
Syntaksi
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parametrit
| Nimi | Tyyppi | Pakollinen | Description |
|---|---|---|---|
entityLogicalName |
Merkkijono | Kyllä | Noudettavan tietueen looginen nimi taulukossa. Esimerkki: account. |
options |
Merkkijono | Ei | OData-järjestelmän kyselyasetukset tai FetchXML-kysely tietojen noutamiseksi. Näytä asetukset |
maxPageSize |
Numero | Ei | Määritä positiivinen luku, joka ilmaisee sivulla palautettavien taulukkotietueiden määrän. Jos et määritä tätä parametria, arvon oletusarvoksi asetetaan vakiotaulukoiden 5 000 tietueen enimmäismäärä, elastic-taulukoille 500. Jos noudettavien tietueiden määrä on suurempi kuin määritetty maxPageSize arvo tai taulukkotyypin enimmäisraja, nextLink palautetun lupausobjektin sarake sisältää linkin tietueiden noutamiseen. |
successCallback |
Function | Ei | Funktio, jota kutsutaan, kun taulukon tietueet noudetaan. Katso Palautusarvo |
errorCallback |
Function | Ei | Funktio, jota kutsutaan, kun toiminto epäonnistuu. Objekti, jolla on seuraavat ominaisuudet, välitetään: - errorCode:Numero. Virhekoodi positiivisena desimaalilukuna. Esimerkiksi virhekoodi, joka on dokumentoitu muodossa 0x80040333 , palautetaan muodossa 2147746611.- message:Merkkijono. Ongelmaa kuvaava virheilmoitus. |
Asetukset
Seuraavia järjestelmän kyselyvaihtoehtoja tuetaan: $select, , $top$filter, $expand, ja $orderby.
Järjestelmäkysely-asetuksen $expand avulla voit hallita, mitä tietoja liittyvistä taulukoista palautetaan. Jos sisällytät vain siirtymisominaisuuden nimen, saat kaikki liittyvien tietueiden ominaisuudet. Voit rajoittaa liittyvien tietueiden palautettuja ominaisuuksia käyttämällä $select järjestelmäkyselyasetusta sulkeissa siirtymisominaisuuden nimen jälkeen. Käytä tätä sekä yksiarvoisissa että kokoelma-arvoisissa siirtymisominaisuuksissa. Huomaa, että offline-tilassa tuemme vain sisäkkäistä $select asetusta -palvelussa $expand.
Määritä FetchXML-kysely fetchXml käyttämällä saraketta kyselyn määrittämiseen.
Note
Sinun on aina käytettävä $selectjärjestelmäkyselytoimintoa taulukkotietueelle palautettujen ominaisuuksien rajoittamiseksi sisällyttämällä mukaan pilkuin eroteltu ominaisuusnimien luettelo. Tämä on tärkeä suorituskyvyn paras käytäntö. Jos ominaisuuksia ei määritetä -toiminnolla $select, kaikki ominaisuudet palautetaan.
Määrität kyselyn asetukset, jotka alkavat .? Voit myös määrittää useita järjestelmäkyselyasetuksia käyttämällä - & menetelmää kyselyn asetusten erottamiseen.
Kun määrität parametrille options OData-kyselymerkkijonon, kysely tulee koodata erikoismerkkejä varten.
Kun määrität FetchXML-kyselyn parametrille options , kyselyä ei pidä koodata.
Katso esimerkeistä , miten voit määrittää parametrin usean skenaarion options noutamiseen.
Palautusarvo
Kun onnistuminen onnistuu, palauttaa lupausobjektin kohteeseen successCallback seuraavilla ominaisuuksilla:
| Nimi | Tyyppi | Description |
|---|---|---|
entities |
JSON-objektien matriisi | Jokainen objekti edustaa noudettua taulukon tietuetta, joka sisältää sarakkeet ja niiden arvot pareina key: value . Taulukkotietueen tunnus noudetaan oletusarvoisesti |
nextLink |
Merkkijono | (valinnainen) Jos noudettavien tietueiden määrä on suurempi kuin pyynnössä parametrissa maxPageSize määritetty arvo, tämä palauttaa URL-osoitteen, joka palauttaa seuraavan tietuesivun. |
fetchXmlPagingCookie |
(valinnainen) FetchXml-pohjainen retrieveMultipleRecords toiminto sivutustoiminnolla, jossa tietueiden kokonaismäärä on suurempi kuin sivutusarvo, tämä määrite palauttaa sivutusevästeiden, jota voidaan käyttää seuraavassa fetchXml-toiminnossa seuraavan tietuesivun noutamiseen. |
OData-kyselyasetusten määritetyypit, joita ei tueta mobiililaitteiden offline-tilassa
Seuraavia saraketyyppejä ei tueta, kun suoritat Xrm.WebApi.retrieveMultipleRecords OData-kyselymerkkijonoasetuksia (esimerkiksi $select ja $filter) offline-mobiilitilassa. Käytä FetchXML:ää, jos käsiteltävä määritetyyppi on tässä tukemattomien määritetyyppien luettelossa.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Ominaisuudet, joita ei tueta Mobile Offlinessa
Seuraavia ominaisuuksia ei tueta mobile offline -tilassa:
- Ryhmittely- ja koostamisominaisuudet
Tuetut suodatustoiminnot määritetyyppiä kohden mobiili-offline-tilassa FetchXML:n avulla
Seuraavia toimintoja tuetaan kaikille määritetyypeille, kun käytät FetchXML:ää:
- Yhtä suuri kuin (
eq) - Ei yhtä suuri kuin (
neq) - Tyhjäarvo (
null) - Ei tyhjäarvoinen (
not-null)
Seuraavassa taulukossa on lueteltu jokaisen määritetyypin tukemat lisätoiminnot:
| Määritetyyppi | Tuetut toiminnot |
|---|---|
| BigInt, Decimal, Double, Integer | Suurempi kuin (gt)Suurempi tai yhtä suuri kuin ( gte)Pienempi kuin ( lt)Pienempi tai yhtä suuri kuin ( lte) |
| Totuusarvo, asiakas | Kohteessa (in)Ei kohteessa ( not-in) |
| Entiteetin nimi, valintaluettelo, osavaltio, tila | Like (like)Not Like ( not-like)Alkaa merkkijonolla ( begins-with)Ei ala merkkijonolla ( not-begin-with)Päättyy merkkijonoon ( ends-with)Ei pääty merkkijonoon ( not-end-with)Kohteessa ( in)Ei kohteessa ( not-in) |
| Guid, Lookup | Kohteessa (in)Ei kohteessa ( not-in)On yhtä suuri kuin käyttäjätunnus ( eq-userid)Ei ole yhtä suuri kuin käyttäjätunnus ( ne-userid) |
| Money | Suurempi kuin (gt)Suurempi tai yhtä suuri kuin ( gte)Pienempi kuin ( lt)Pienempi tai yhtä suuri kuin ( lte)Kohteessa ( in)Ei kohteessa ( not-in) |
| Omistaja | Kohteessa (in)Ei kohteessa ( not-in)On yhtä suuri kuin käyttäjätunnus ( eq-userid)Ei ole yhtä suuri kuin käyttäjätunnus ( ne-userid)On yhtä suuri kuin käyttäjä tai ryhmä ( eq-useroruserteams) |
| Merkkijono | Like (like)Not Like ( not-like)Alkaa merkkijonolla ( begins-with)Ei ala merkkijonolla ( not-begin-with)Päättyy merkkijonoon ( ends-with)Ei pääty merkkijonoon ( not-end-with) |
| Päivämäärä ja aika | Käytössä tai sen jälkeen (on-or-after)Päivänä ( on)Käytössä tai ennen ( on-or-before)Tänään ( today)Huomenna ( tomorrow)Eilen ( yesterday)Seuraavat seitsemän päivää ( next-seven-days)Viimeiset seitsemän päivää ( last-seven-days)Ensi viikko ( next-week)Viime viikko ( last-week)Tämä viikko ( this-week)Ensi kuussa ( next-month)Viime kuukausi ( last-month)Tämä kuukausi ( this-month)Ensi vuosi ( next-year)Viime vuosi ( last-year)Tänä vuonna ( this-year)Edelliset X päivää ( last-x-days)Seuraavat X päivää ( next-x-days)Edelliset X viikkoa ( last-x-weeks)Seuraavat X viikkoa ( next-x-weeks)Edelliset X kuukautta ( last-x-months)Seuraavat X kuukautta ( next-x-months)Edelliset X vuotta ( last-x-years)Seuraavat X vuotta ( next-x-years)Suurempi kuin ( gt)Suurempi tai yhtä suuri ( gte)Pienempi kuin ( lt)Pienempi tai yhtä suuri ( lte) |
Esimerkit
Useimmat VERKKO-ohjelmointirajapintaa käyttävissä kyselytiedoissa /esimerkeissä voidaan tehdä käyttämällä retrieveMultipleRecords-menetelmää . Osa esimerkeistä on lueteltu alla.
Perustodennon monikerta
Tässä esimerkissä lähetetään kysely accounts-taulukkoon ja käytetään - $select ja $top -järjestelmäkyselyasetuksia palauttamaan kolmen ensimmäisen tilin nimiominaisuus:
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
}
);
Perussaata useita FetchXML:n avulla
Tässä esimerkissä account entiteetti kyselee 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
}
);
Nouda tai suodata hakuominaisuuksien mukaan
Useimmille yksiarvoisille siirtymisominaisuuksille on laskettu vain luku -ominaisuus, joka käyttää seuraavaa nimeämiskäytäntöä: _<name>_value jossa <name> on yksiarvoisen siirtymisominaisuuden nimi. Suodatuksessa voidaan käyttää myös yksiarvoisen siirtymisominaisuuden tiettyä arvoa. Mobiiliohjelmissa offline-tilassa näitä syntaksiasetuksia ei kuitenkaan tueta, ja yksiarvoisen siirtymisominaisuuden nimeä tulee käyttää sekä noutamiseen että suodattamiseen. Myöskään siirtymisominaisuuksien vertaamista tyhjäarvoon ei tueta offline-tilassa.
Lisätietoja: Haun ominaisuudet
Tässä on koodiesimerkkejä kummastakin syystä:
Online-skenaario (yhdistetty palvelimeen)
Tässä esimerkissä lähetetään kysely accounts-taulukkoon ja käytetään $select - ja $filter -järjestelmäkyselyasetuksia palauttamaan nimi- ja primarycontactid-ominaisuus tileille, joilla on tietty ensisijainen yhteyshenkilö:
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
}
);
Mobiililaitteiden offline-skenaario
Tässä esimerkissä lähetetään kysely accounts-taulukkoon ja käytetään $select - ja $filter -järjestelmäkyselyasetuksia, joilla palautetaan nimi- ja primarycontactid-ominaisuus tileille, joilla on tietty ensisijainen yhteyshenkilö offline-tilassa toimittaessa:
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:n käyttäminen hakuominaisuuksien perusteella noutamiseen tai suodattamiseen (online- ja offline-skenaario)
-parametria FetchXML voidaan käyttää online- tai offline-tilassa - ja primarycontactid -ominaisuuden name noutamiseen niille tilitietueille, joiden ensisijainen yhteyshenkilö vastaa ehtoa:
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
}
);
Sivulla palautettavien taulukoiden määrän määrittäminen
Seuraavassa esimerkissä näytetään, miten parametria maxPageSize käytetään määrittämään sivulla näytettävien tietueiden määrä (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
}
);
Tässä esimerkissä näytetään kolme tietuetta ja linkki seuraavalle sivulle. Tässä on esimerkki tuloste konsolista selaimen kehittäjätyökaluissa:
{@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
Käytä -ominaisuuden URL-osoitteen kyselyosaa nextLink parametrin options arvona myöhemmässä retrieveMultipleRecords-kutsussa seuraavan tietuejoukon pyytämiseksi. Älä muuta tai liitä enää järjestelmäkyselyasetuksia arvoon. Jokaisessa myöhemmässä useamman sivun pyynnössä tulee käyttää samaa maxPageSize arvoa, jota käytetään alkuperäisessä usean pyynnön noutamisessa. Tallenna myös palautetut tulokset välimuistiin tai NextLink-ominaisuuden arvo, jotta aiemmin noudetut sivut voidaan palauttaa.
Jos haluat esimerkiksi seuraavan tietuesivun, välitämme URL-osoitteen kyselyosan nextLink parametriin 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
}
);
Tämä palauttaa tulosjoukkoon seuraavan sivun:
{@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
Tärkeää
Ominaisuuden nextLink arvo on URI-koodattu. Jos URI koodata arvon ennen sen lähettämista, URL-osoitteen XML-evästetiedot aiheuttavat virheen.
FetchXML-esimerkki (online-skenaario)
Seuraavassa esimerkissä esitellään FetchXML-parametrin käyttöä count sivulla näytettävien tietueiden määrän (3) määrittämiseen.
Note
FetchXML-sivutuseväste palautetaan vain verkkotoimintoja retrieveMultipleRecords varten. (Xrm.WebApi.online). Sitä ei tueta offline-tilassa.
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
}
);
Tässä esimerkissä näytetään kolme tietuetta ja palautetaan FetchXML Paging -eväste seuraavan sivun tulosten noutamiseksi, jos tulosjoukkoon kuuluu enemmän tietueita. Tässä on esimerkki tuloste konsolista selaimen kehittäjätyökaluissa:
{
"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\" />"
}
Voimme käyttää - fetchXmlPagingCookie kohdetta alla olevan esimerkin mukaisesti suurten tulosjoukkojen noutamiseen sivutusta käyttäen.
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
}
);
Liittyvien taulukoiden noutaminen laajentamalla siirtymisominaisuuksia
Siirtymisominaisuuksien $expand järjestelmäkyselytoiminnolla voit hallita liittyvistä taulukoista palautettavat tiedot. Seuraavassa esimerkissä näytetään, miten voit noutaa kaikkien tilitietueiden yhteyshenkilön. Liittyvien yhteystietotietueiden osalta noudetaan vain ja 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
}
);
Yllä oleva koodiyksikkö palauttaa tuloksen, jossa on seuraavankaltainen rakenne:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Note
Kuten verkkoskenaariossa, nouda tietoja aiheeseen liittyvistä taulukoista offline-tilassa $expand järjestelmäkyselytoiminnon avulla. Moni-moneen-yhteyksiä ei kuitenkaan tueta offline-tilassa.
Vanhentunut menetelmä mobiililaitteiden offline-skenaariossa
Note
@odata.nextLink on poistettu käytöstä offline-mobiilikäyttötilanteissa. Vaikka sitä tuetaan edelleen olemassa olevissa mukautuksissa, sitä ei enää suositella käytettäväksi.
Offline-tilassa oleva $expand toiminto palauttaa @odata.nextLink huomautuksen, joka sisältää tietoja siitä, miten pääset liittyvän tietueen tietoihin.
idKäytämme tämän huomautuksen -, entityType- ja options -parametria yhden tai useamman lisäpyynnön Xrm.WebApi.offline.retrieveRecord muodostamiseen. Seuraavassa koodissa on täydellinen esimerkki siitä, miten tämä tehdään:
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
});
Lisää esimerkkejä useiden tietueiden noutamisesta WWW-ohjelmointirajapinnan avulla on kohdassa Tietojen kyseleminen WWW-ohjelmointirajapinnan avulla.
Aiheeseen liittyviä artikkeleita
Tietojen kyseleminen WWW-ohjelmointirajapinnan avulla
Xrm.WebApi.retrieveRecord
Xrm.WebApi