retrieveMultipleRecords (asiakas-ohjelmointirajapinnan viittaus)

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.

  • MultiSelectPicklist
  • File
  • Image
  • ManagedProperty
  • CalendarRules
  • PartyList
  • Virtual

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
  }
);

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.

Tietojen kyseleminen WWW-ohjelmointirajapinnan avulla
Xrm.WebApi.retrieveRecord
Xrm.WebApi