Delen via


Vooraf gedefinieerde query's ophalen en uitvoeren

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 biedt een manier voor beheerders om systeemweergaven te maken die beschikbaar zijn voor alle gebruikers. Afzonderlijke gebruikers kunnen de geavanceerde zoekquery´s opslaan voor hergebruik in de toepassing. Beide staan voor vooraf gedefinieerde query's die u kunt ophalen en uitvoeren met de Web-API. U kunt een query ook opstellen met FetchXml en daarmee gegevens ophalen.

In dit onderwerp

Vooraf gedefinieerde query's

Aangepaste FetchXML gebruiken

Vooraf gedefinieerde query's

Met Microsoft Dynamics 365 kunt u twee typen query´s definiëren, opslaan en uitvoeren, zoals hier weergegeven.

Querytype

Beschrijving

Opgeslagen query

Systeemgedefinieerde weergaven voor een entiteit. Deze weergaven worden opgeslagen in savedquery EntityType.Meer informatie:Entiteitweergaven aanpassen

Gebruikersquery

Geavanceerd zoeken-zoekacties opgeslagen door gebruikers voor een entiteit. Deze weergaven worden opgeslagen in userquery EntityType.Meer informatie:UserQuery (opgeslagen weergave) entiteit

De records van beide typen entiteiten bevatten de FetchXML-definitie voor de gegevens die moeten worden geretourneerd. U kunt een query uitvoeren op het respectieve entiteitstype om de primaire sleutelwaarde op te halen. Met de primaire sleutelwaarde kunt u de query uitvoeren door de primaire sleutelwaarde door te geven. Als u bijvoorbeeld de opgeslagen query Actieve accounts wilt uitvoeren, moet u eerst de primaire sleutel ophalen met een query als deze.

GET cc_WebAPI_ServiceURI/savedqueries?$select=name,savedqueryid&$filter=name eq 'Active Accounts'

U kunt vervolgens de waarde savedqueryid gebruiken en als de waarde aan de parameter savedQuery doorgeven aan de entiteitenreeks accounts.

GET cc_WebAPI_ServiceURI/accounts?savedQuery=00000000-0000-0000-00aa-000010001002

Gebruik dezelfde manier om userqueryid op te halen en als waarde door te geven aan de parameter userQuery aan de entiteitenreeks die overeenkomt met de bijbehorende returnedtypecode van de opgeslagen query.

GET cc_WebAPI_ServiceURI/accounts?userQuery=121c6fd8-1975-e511-80d4-00155d2a68d1

Pas een query toe op een verzameling van het juiste type

Naast eenvoudigweg toepassen van de opgeslagen query op de hoofdverzameling van de entiteitenreeks kunt u ook een opgeslagen query of gebruikersquery gebruiken om hetzelfde filter toe te passen op een verzameling van het juiste type entiteiten. Als u bijvoorbeeld een query wilt toepassen op alleen de entiteiten die gerelateerd zijn aan een specifieke entiteit, kunt u hetzelfde patroon toepassen. Met de volgende URL wordt bijvoorbeeld de query Open verkoopkansen toegepast op de verkoopkansen met betrekking tot een specifieke account via de navigatie-eigenschap opportunity_parent_account die op basis van een verzameling is gewaardeerd.

GET cc_WebAPI_ServiceURI/accounts(8f390c24-9c72-e511-80d4-00155d2a68d1)/opportunity_parent_account/?savedQuery=00000000-0000-0000-00aa-000010003001

Aangepaste FetchXML gebruiken

FetchXML is een eigendomsquerytaal die mogelijkheden biedt om aggregatie uit te voeren. De opgeslagen query's en gebruikersquery's die zijn opgeslagen in savedquery EntityType en userquery EntityType bevatten beide respectievelijk een fetchxml-eigenschap waarmee de query wordt gedefinieerd. U kunt FetchXML rechtstreeks gebruiken met IOrganizationService.RetrieveMultiple-methode of met RetrieveMultipleRequest.Meer informatie:Bouw query's met FetchXML

U kunt URL gecodeerde FetchXML als een query doorgeven aan de entiteitenreeks die overeenkomt met de hoofdentiteit van de query met de parameter FetchXML om de resultaten van de Web-API te retourneren. U kunt bijvoorbeeld de volgende FetchXML hebben die een account als de entiteit heeft.

<fetch mapping='logical'> 
   <entity name='account'>
      <attribute name='accountid'/> 
      <attribute name='name'/> 
</entity>
</fetch>

De URL gecodeerde waarde van deze FetchXML is zoals hier weergegeven.

%3Cfetch%20mapping='logical'%3E%3Centity%20name='account'%3E%3Cattribute%20name='accountid'/%3E%3Cattribute%20name='name'/%3E%3C/entity%3E%3C/fetch%3E

De meeste programmeertalen bevatten een functie om URL-codering voor een tekenreeks te gebruiken. In JavaScript gebruikt u bijvoorbeeld de functie encodeURI. U moet URL-codering gebruiken voor elke aanvraag die u stuurt naar een RESTful-webservice. Als u een URL in de adresbalk van uw browser plakt, moet voor het adres automatisch URL-codering worden gebruikt. In het volgende voorbeeld wordt een GET-aanvraag weergegeven met de FetchXML die u eerder met het entiteitenreekspad voor accounts hebt gezien.

  • Aanvraag

    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
    
  • Respons

    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."
        }
      ]
    }
    

    Notitie

    De respons van FetchXML-query's met entiteitskoppelingen en hun kenmerken bevat speciale Unicode-tekens, zodat '.' wordt omgezet in '_x002e_' en '@' in '_x0040_'.

Pagineren met FetchXML

Met fetchXML kunt u paginering toepassen door de kenmerken page en count van het element fetch in te stellen. Als u bijvoorbeeld een query wilt instellen voor accounts en het aantal entiteiten wilt beperken tot 2 en alleen de eerste pagina wilt retourneren, gebruikt u de volgende 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>

Met een aanvraag waarin fetchXML wordt gebruikt, kunt u ook een pagineringscookie aanvragen en bij uw query opnemen.Meer informatie:Paging op grote resultaatsets toepassen met FetchXML

Een pagineringscookie moet als een annotatie worden aangevraagd. Stel de voorkeur odata.include-annotations in die u wilt gebruiken (of opnemen) en een Microsoft.Dynamics.CRM.fetchxmlpagingcookie@Microsoft.Dynamics.CRM.fetchxmlpagingcookie-eigenschap wordt geretourneerd met het resultaat.

Zie ook

Voorbeeld gegevens Web API-query (C#)
Voorbeeld web-API querygegevens (JavaScript op client)
Bewerkingen uitvoeren met de web-API
HTTP-aanvragen opstellen en fouten afhandelen
Querygegevens met behulp van de web-API
Een entiteit maken met de web-API
Een entiteit ophalen met de web-API
Entiteiten bijwerken en verwijderen met de Web-API
Entiteiten koppelen en ontkoppelen met de web-API
Web-API-functies gebruiken
Web-API-acties gebruiken
Batchbewerkingen uitvoeren met de Web API
Zich als een andere gebruiker voordoen die de Web API gebruikt
Voorwaardelijke bewerkingen uitvoer met de web-API

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht