Hente og køre foruddefinerede forespørgsler
Udgivet: januar 2017
Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Microsoft Dynamics 365 gør muligt for administratorer at oprette systemvisninger, der er tilgængelige for alle brugere. Individuelle brugere kan gemme de avancerede søgeforespørgsler, så de kan genbruges i programmet. Begge disse repræsenterer foruddefinerede forespørgsler, du kan hente og afvikle ved hjælp af web-API'et. Du kan også oprette en forespørgsel ved hjælp af FetchXml og bruge den til at hente data.
Dette emne indeholder
Foruddefinerede forespørgsler
Brug brugerdefineret FetchXML
Foruddefinerede forespørgsler
Microsoft Dynamics 365 gør det muligt at definere, gemme og afvikle to typer forespørgsler, som vises her.
Forespørgselstype |
Beskrivelse |
---|---|
Gemt forespørgsel |
Systemdefinerede visninger for et objekt. Disse visninger gemmes i savedquery EntityType.Flere oplysninger:Tilpasse objektvisninger |
Brugerforespørgsel |
Søgninger med Avanceret søgning, der gemmes af brugere for et objekt. Disse visninger gemmes i userquery EntityType.Flere oplysninger:UserQuery-objekt (gemt visning) |
Poster for begge disse typer objekter indeholder FetchXML-definitionen for de data, der skal returneres. Du kan forespørge den respektive objekttype for at hente den primære nøgleværdi. Med den primære nøgleværdi kan du afvikle forespørgslen ved at overføre den primære nøgleværdi. Hvis du f.eks. vil udføre den gemte forespørgsel Aktive konti, skal du første hente den primære nøgle ved hjælp af en forespørgsel som denne.
GET cc_WebAPI_ServiceURI/savedqueries?$select=name,savedqueryid&$filter=name eq 'Active Accounts'
Du kan derefter bruge savedqueryid-værdien og sende den som værdien til savedQuery-parameteren til accounts-objektsættet.
GET cc_WebAPI_ServiceURI/accounts?savedQuery=00000000-0000-0000-00aa-000010001002
Brug den samme fremgangsmåde til at få userqueryid og sende den som værdien til userQuery-parameteren til det objektivsæt, der matcher den tilsvarende returnedtypecode for den gemte forespørgsel.
GET cc_WebAPI_ServiceURI/accounts?userQuery=121c6fd8-1975-e511-80d4-00155d2a68d1
Anvend en forespørgsel til en samling af den rette type
Ud over blot at anvende den gemte forespørgsel til hovedsætsamlingen af objekter kan du også bruge en gemt forespørgsel eller en brugerforespørgsel til at anvende den samme filtrering på en samling af objekter af den relevante type. Hvis du f.eks. vil anvende en forespørgsel mod blot de objekter, der er relateret til et bestemt objekt, kan du anvende det samme mønster. F.eks. anvender følgende URL forespørgslen Åbne salgsmuligheder i forhold til de salgsmuligheder, der er relateret til en bestemt konti, via opportunity_parent_account-navigationsegenskaben med gruppeværdi.
GET cc_WebAPI_ServiceURI/accounts(8f390c24-9c72-e511-80d4-00155d2a68d1)/opportunity_parent_account/?savedQuery=00000000-0000-0000-00aa-000010003001
Brug brugerdefineret FetchXML
FetchXML er et beskyttet forespørgselssprog, der indeholder funktioner til at udføre sammenlægning. De gemte forespørgsler og brugerforespørgsler, der er gemt i henholdsvis savedquery EntityType og userquery EntityType, omfatter en fetchxml-egenskab, der definerer forespørgslen. Du kan bruge FetchXML direkte sammen med IOrganizationService.RetrieveMultiple-metoden eller med RetrieveMultipleRequest.Flere oplysninger:Oprette forespørgsler med FetchXML
Du kan sende URL-kodet FetchXML som en forespørgsel til det objektsæt, der svarer til forespørgslens rodobjekt, ved hjælp af FetchXML-parameteren for at returnere resultaterne fra web-API'et. Du kan f.eks. have følgende FetchXML, der har firma som objektet.
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
</entity>
</fetch>
Den URL-kodede værdi for denne FetchXML er vist her.
%3Cfetch%20mapping='logical'%3E%3Centity%20name='account'%3E%3Cattribute%20name='accountid'/%3E%3Cattribute%20name='name'/%3E%3C/entity%3E%3C/fetch%3E
De fleste programmeringssprog omfatter en funktion til at URL-kode en streng. F.eks. kan du i JavaScript bruge encodeURI-funktionen. Du skal URL-kode enhver anmodning, du sender til en RESTful-webtjeneste. Hvis du indsætter en URL-adresse i adresselinjen i din browser, skal den URL-kode adressen automatisk. Følgende eksempel viser en GET-anmodning med den tidligere viste FetchXML ved hjælp af objektsætstien for konti.
Anmodning
GET cc_WebAPI_ServiceURI/accounts?fetchXml=%3Cfetch%20mapping='logical'%3E%3Centity%20name='account'%3E%3Cattribute%20name='accountid'/%3E%3Cattribute%20name='name'/%3E%3C/entity%3E%3C/fetch%3E HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Svar
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(accountid,name)","value":[ { "@odata.etag":"W/\"506678\"","accountid":"89390c24-9c72-e511-80d4-00155d2a68d1","name":"Fourth Coffee (sample)" },{ "@odata.etag":"W/\"502172\"","accountid":"8b390c24-9c72-e511-80d4-00155d2a68d1","name":"Litware, Inc. (sample)" },{ "@odata.etag":"W/\"502174\"","accountid":"8d390c24-9c72-e511-80d4-00155d2a68d1","name":"Adventure Works (sample)" },{ "@odata.etag":"W/\"506705\"","accountid":"8f390c24-9c72-e511-80d4-00155d2a68d1","name":"Fabrikam, Inc. (sample)" },{ "@odata.etag":"W/\"506701\"","accountid":"91390c24-9c72-e511-80d4-00155d2a68d1","name":"Blue Yonder Airlines (sample)" },{ "@odata.etag":"W/\"502180\"","accountid":"93390c24-9c72-e511-80d4-00155d2a68d1","name":"City Power & Light (sample)" },{ "@odata.etag":"W/\"502182\"","accountid":"95390c24-9c72-e511-80d4-00155d2a68d1","name":"Contoso Pharmaceuticals (sample)" },{ "@odata.etag":"W/\"506704\"","accountid":"97390c24-9c72-e511-80d4-00155d2a68d1","name":"Alpine Ski House (sample)" },{ "@odata.etag":"W/\"502186\"","accountid":"99390c24-9c72-e511-80d4-00155d2a68d1","name":"A. Datum Corporation (sample)" },{ "@odata.etag":"W/\"502188\"","accountid":"9b390c24-9c72-e511-80d4-00155d2a68d1","name":"Coho Winery (sample)" },{ "@odata.etag":"W/\"504177\"","accountid":"0a3238d4-f973-e511-80d4-00155d2a68d1","name":"Litware, Inc." } ] }
Bemærk
Svar på FetchXML-forespørgsler, som indeholder linkobjekter, og deres attributter indeholder Unicode-specialtegn som '.', der bliver '_x002e_' og '@' bliver '_x0040_'.
Sideopdeling med FetchXML
Med FetchXML kan du anvende sideopdeling ved at indstille page- og count-attributterne for fetch-elementet. Du kan f.eks. indstille en forespørgsel for konti og begrænse antallet af objekter til 2 og til blot at returnere den første side, med følgende fetchXML:
<fetch mapping="logical" page="1" count="2">
<entity name="account">
<attribute name="accountid" />
<attribute name="name" />
<attribute name="industrycode" />
<order attribute="name" />
</entity>
</fetch>
Med en anmodning, der anvender fetchXML, kan du også anmode om en sideopdelingscookie og inkludere den i din forespørgsel.Flere oplysninger:Sideopdele store resultatsæt med FetchXML
En sideopdelingscookie skal anmodes om som en anmærkning. Angiv odata.include-annotations-indstillingen, der skal bruges (eller medtages) Microsoft.Dynamics.CRM.fetchxmlpagingcookie, og der returneres en @Microsoft.Dynamics.CRM.fetchxmlpagingcookie-egenskab sammen med resultatet.
Se også
Eksempel på Web API-forespørgselsdata (C#)
Eksempel på Web API-forespørgselsdata (JavaScript på klientsiden)
Udføre operationer ved hjælp af web-API
Skrive HTTP-anmodninger og håndtere fejl
Forespørg på data ved hjælp af Web-API'en
Oprette et objekt ved hjælp af Web-API
Hente et objekt ved hjælp af web-API'et
Opdatere og slette objekter ved hjælp af web-API'et
Tilknytte og fjerne tilknytningen af objekter ved hjælp af web-API'et
Bruge Web-API-funktioner
Brug Web API-handlinger
Udføre batchhandlinger ved hjælp af Web-API
Efterligne en anden bruger ved hjælp af Web-API'en
Udfør betingede operationer ved hjælp af web-API
Microsoft Dynamics 365
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret