Share via


Abrufen und Ausführen von vordefinierten Abfragen

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 bietet Administratoren eine Möglichkeit, Systemansichten zu erstellen, die für alle Benutzer verfügbar sind. Einzelne Benutzer können die erweiterten Suchanfragen speichern und in der Anwendung wiederverwenden. Beide stellen vordefinierte Abfragen dar die Sie mit der Web-API abrufen und ausführen können. Sie können eine Abfrage auch mit FetchXml erstellen und zum Abfragen von Daten nutzen.

In diesem Thema

Vordefinierte Abfragen

Benutzerdefiniertes FetchXML verwenden

Vordefinierte Abfragen

Microsoft Dynamics 365 erlaubt Ihnen, zwei Arten von Abfragen zu definieren, zu speichern und durchzuführen, wie hier aufgelistet.

Abfragetyp

Beschreibung

Gespeicherte Abfrage

System-definierte Ansichten für eine Entität Diese Ansichten werden in savedquery EntityType gespeichert.Weitere Informationen:Anpassen von Entitätsansichten

Benutzerabfrage

Erweiterte Suchen, die vom Benutzer für eine Entität gespeichert wurden Diese Ansichten werden in userquery EntityType gespeichert.Weitere Informationen:UserQuery (gespeicherte Ansicht)-Entität

Datensätze für beide Arten von Entitäten enthalten die FetchXML-Definition für das Zurückgeben der Daten. Sie können den jeweiligen Entitätstyp abfragen, um den Wert des Primärschlüssels abzurufen. Mit dem Primärschlüsselwert können Sie die Abfrage durchführen, indem Sie den Primärschlüsselwert übergeben. Um beispielsweise die gespeicherte Abfrage Aktive Firmen auszuführen, müssen Sie erst den Primärschlüssel mit einer Abfrage wie dieser abrufen.

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

Sie können dann den savedqueryid-Wert verwenden und als Wert an den savedQuery-Parameter an den accounts-Entitätssatz übergeben.

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

Verwenden Sie diesen Ansatz auch, um userqueryid zu erhalten und als Wert für den userQuery-Parameter an den Entitätssatz zu übergeben, der mit dem entsprechenden returnedtypecode der gespeicherten Abfrage übereinstimmt.

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

Anwenden einer Abfrage auf eine Sammlung des entsprechenden Typs

Neben dem einfachen Anwenden der gespeicherten Abfrage auf die hauptsächliche Entitätssatz-Sammlung können Sie auch eine gespeicherte Abfrage oder gespeicherte Benutzerabfrage nutzen, um dieselbe Filterung auf eine Sammlung des entsprechenden Typs der Entitäten anzuwenden. Wenn Sie beispielsweise eine Abfrage auf die Entitäten anwenden möchten, die mit einer bestimmten Entität zusammenhängen, können Sie dasselbe Muster anwenden. Zum Beispiel wendet die folgende URL die Abfrage Offene Verkaufschancen auf die Verkaufschancen an, die mit einem bestimmen Konto über eine als Sammlung bewertete Navigationseigenschaft von opportunity_parent_account zusammenhängen.

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

Benutzerdefiniertes FetchXML verwenden

FetchXML ist eine herstellereigene Abfragesprache, die Möglichkeiten zur Durchführung einer Aggregation bieten. Die gespeicherten Abfragen und Benutzerabfragen, die in savedquery EntityType und/oder userquery EntityType gespeichert werden, enthalten eine fetchxml-Eigenschaft, die die Abfrage definiert. Sie können FetchXML direkt mit IOrganizationService verwenden.RetrieveMultiple-Methode oder mit RetrieveMultipleRequest verwenden.Weitere Informationen:Abfragen erstellen mit FetchXML

Sie können URL-verschlüsseltes FetchXML als Abfrage an den Entitätssatz übergeben, der der Root-Entität der Abfrage entspricht, indem Sie den FetchXML-Parameter nutzen, um die Ergebnisse von der Web-API zurückzugeben. Zum Beispiel können Sie das folgende FetchXML haben, das Konto als Entität hat.

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

Der URL-verschlüsselte Wert von diesem FetchXML ist wie hier gezeigt.

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

Die meisten Programmiersprachen umfassen eine Funktion zum URL-Codieren einer Zeichenfolge. Beispiel: In JavaScript verwenden Sie die encodeURI-Funktion. Sie sollten jede Anforderung URL-Codieren, die Sie an einen RESTful-Webdienst senden. Wenn Sie eine URL in die Adressleiste Ihres Browsers eingeben, sollte diese die Adresse automatisch URL-codieren. Das folgende Beispiel zeigt eine GET-Anforderung, die das vorher gezeigte FetchXML einsetzt, die den Entitätspfad für Konten verwendet.

  • Anforderung

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

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

    Hinweis

    Antwort von FetchXML-Abfragen, die Link-Entitäten und deren Attributen enthalten, enthalten auch Unicode-Sonderzeichen Fall, sodass '.' zu '_x002e_' und '@' zu '_x0040_' wird.

Paging mit FetchXML

Mit fetchXML können Sie Paging anwenden, indem Sie die Attribute page und count des Elements fetch anwenden. Beispiel: Um eine Abfrage für Konten festzulegen und die Anzahl der Entitäten auf 2 zu reduzieren und nur die erste Seite wiederzugeben, sollte das folgende 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>

Mit einer Anforderung, die fetchXML verwendet, können Sie auch ein Paging-Cookie anfordern und in die Abfrage einschließen.Weitere Informationen:Auslagern von umfangreichen Ergebnissätzen mit FetchXML

Ein Paging-Cookie muss als Anmerkung (Annotation) angefordert werden. Stellen Sie die odata.include-annotations-Präferenz für das Verwenden (oder Einschließen) von Microsoft.Dynamics.CRM.fetchxmlpagingcookie ein und eine @Microsoft.Dynamics.CRM.fetchxmlpagingcookie -Eigenschaft wird mit dem Ergebnis zurückgegeben.

Siehe auch

Web API-Abfragedatenbeispiel (C#)
Web API-Abfragedatenbeispiele (clientseitiges JavaScript)
Vorgänge mithilfe der Web-API ausführen
HTTP-Anforderungen verfassen und Fehler beheben
Datenabfrage mit Web-API
Erstellen einer Entität mithilfe des Web-API
Abrufen einer Entität mithilfe des Web-API
Entitäten aktualisieren und löschen mithilfe der Web API
Entitäten zuordnen und Zuordnungen aufheben mithilfe der Web API
Nutzen von Web-API-Funktionen
Nutzen von Web-API-Aktionen
Ausführen von Batchbetrieben mithilfe der Web-API
Annehmen eines anderen Benutzerkontos mit Web API
Bedingte Vorgänge mithilfe der Web-API ausführen

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright