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 sivukohtaisen palautettavien taulukkotietueiden määrän. Jos et määritä tätä parametria, oletusarvo on vakiotaulukoiden 5 000 tietueen ja joustavan taulukon 500 tietueen enimmäisraja. 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 liittyvien tietueiden kaikki ominaisuudet. Voit rajoittaa liittyvien tietueiden palauttamia ominaisuuksia käyttämällä $select järjestelmäkyselyasetusta sulkeissa siirtymisominaisuuden nimen jälkeen. Käytä tätä asetusta sekä yksiarvoisille että kokoelma-arvoisille siirtymisominaisuuksille. Offline-tilassa tuetaan 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ä $select järjestelmäkyselytoimintoa taulukkotietueelle palautettujen ominaisuuksien rajoittamiseksi sisällyttämällä mukaan pilkuin eroteltu ominaisuusnimien luettelo. Tämä käytäntö on tärkeä suorituskyvyn kannalta. Jos et määritä ominaisuuksia -toiminnolla, $selectkaikki ominaisuudet palautetaan.
Määritä kyselyasetukset alkaen määrityksestä ?. 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, koodaa erikoismerkkien kysely.
Kun määrität FetchXML-kyselyn parametrille options , älä koodaa kyselyä.
Lisätietoja parametrin määrittämisestä usean skenaarion options noutamista varten on kohdassa Esimerkkejä.
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 käytät Xrm.WebApi.retrieveMultipleRecords OData-kyselymerkkijonoasetuksia (kuten $select ja $filter) mobiilimuotoisessa offline-tilassa. Käytä FetchXML:ää, jos haluat käyttää määritetyyppiä tässä tukemattomien määritetyyppien luettelossa.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Ominaisuudet, joita ei tueta mobiililaitteiden offline-tilassa
Seuraavia ominaisuuksia ei tueta mobiililaitteiden 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
Käyttämällä retrieveMultipleRecords-menetelmää voit hyödyntää useimpia Kyselytiedot-kohdassa mainittuja skenaarioita ja esimerkkejä WWW-ohjelmointirajapinnan avulla. Osa esimerkeistä on lueteltu seuraavassa osiossa.
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 voit käyttää myös yksiarvoisen siirtymisominaisuuden tiettyä arvoa. Näitä syntaksiasetuksia ei kuitenkaan tueta mobiiliohjelmissa offline-tilassa. Käytä yksiarvoista siirtymisominaisuuden nimeä sekä noutamisessa että suodattamisessa. Offline-tila ei myöskään tue siirtymisominaisuuksien vertaamista tyhjäarvoihin.
Lisätietoja: Haun ominaisuudet
Tässä on kummankin skenaarion koodiesimerkkejä:
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)
Nouda - ja primarycontactid -nameominaisuus tilitietueille, joiden ensisijainen yhteyshenkilö vastaa ehtoa, käyttämällä -FetchXMLparametria online- tai offline-tilassa:
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 voit määrittää parametrin maxPageSize avulla, että kukin sivu näyttää kolme tietuetta.
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ä url-osoitteen kyselyosaa -ominaisuudessa nextLink parametrin options arvona seuraavassa retrieveMultipleRecords-kutsussa seuraavan tietuejoukon pyytämiseksi. Älä muuta tai lisää enää järjestelmäkyselyasetuksia arvoon. Käytä jokaista seuraavaa useamman sivun pyyntöä varten samaa maxPageSize arvoa, jota käytit alkuperäisessä usean pyynnön noutamisessa. Tallenna myös palautetut tulokset tai -ominaisuuden arvo välimuistiin nextLink , jotta sovelluksesi voi palauttaa aiemmin noudettuja sivuja.
Voit esimerkiksi saada seuraavan tietuesivun välittämällä 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ä pyyntö palauttaa tulosjoukon 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ä näytetään, miten voit fetchXML-parametrin count avulla määrittää, että jokaisella sivulla näkyy kolme tietuetta.
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-sivutuseväste, jolla haetaan seuraavan sivun tulokset, jos tulosjoukossa on 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\" />"
}
Jos haluat noutaa suuret tulosjoukot sivutusta käyttäen, käytä fetchXmlPagingCookie -merkkiä seuraavassa esimerkissä esitetyllä tavalla.
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 liittyviä taulukoita palauttavat tiedot. Seuraavassa esimerkissä näytetään, miten voit noutaa kaikkien tilitietueiden yhteyshenkilön. Liittyvien yhteyshenkilötietueiden osalta nouda vain - ja fullname -contactidkentät:
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
}
);
Edellinen koodi palauttaa tuloksen, jonka rakenne on seuraavanlainen:
{
"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, älä enää käytä sitä.
Offline-tilassa oleva $expand toiminto palauttaa @odata.nextLink huomautuksen, joka sisältää tietoja siitä, miten pääset liittyvän tietueen tietoihin. Käytä kyseisen idhuomautuksen -, entityType- ja options -parametreja 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 Kyselytiedot WWW-ohjelmointirajapinnan avulla.
Aiheeseen liittyviä artikkeleita
Tietojen kyseleminen WWW-ohjelmointirajapinnan avulla
Xrm.WebApi.retrieveRecord
Xrm.WebApi