Partager via


retrieveMultipleRecords (référence de l’API client)

Récupère une collection d’enregistrements de table.

Syntaxe

Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);

Paramètres

Nom Type Requise Description
entityLogicalName String Oui Nom logique de la table des enregistrements à récupérer. Par exemple : account.
options String No Options de requête système OData ou FetchXML requête pour récupérer vos données. Voir options
maxPageSize Chiffre No Spécifiez un nombre positif qui indique le nombre d’enregistrements de table à retourner par page. Si vous ne spécifiez pas ce paramètre, la valeur par défaut est la limite maximale de 5 000 enregistrements.

Si le nombre d’enregistrements récupérés excède la valeur maxPageSize spécifiée ou 5 000 enregistrements, la colonne nextLink dans l’objet promise retourné contient un lien pour récupérer les enregistrements.
successCallback Function Non Fonction à appeler lorsque des enregistrements de table sont récupérés. Voir Valeur renvoyée
errorCallback Function Non Fonction à appeler lorsque l’opération échoue.

Options

Les options de requête système suivantes sont prises en charge : $select, $top, $filter, $expand, et $orderby.

Utilisez l’option de requête système $expand pour contrôler quelles données des tables associées sont renvoyées. Si vous incluez uniquement le nom de la propriété de navigation, vous recevrez toutes les propriétés des enregistrements associés. Vous pouvez limiter les propriétés retournées pour les enregistrements associés à l’aide de l’option de requête système $select entre parenthèses après le nom de propriété de navigation. Utilisez cette procédure pour les propriétés de navigation à valeur unique et avec valeur de collection. Notez que pour le mode hors connexion, nous ne prenons en charge que l’option imbriquée $select à l’intérieur de l’option $expand.

Pour spécifier une FetchXML requête, utilisez la fetchXml colonne destinée à spécifier la requête.

Notes

Vous devez toujours utiliser l’option de requête système $select pour limiter les propriétés retournées pour un enregistrement de table en y insérant une liste de noms de propriété séparés par des virgules. C’est une pratique recommandée importante. Si des propriétés ne sont pas spécifiées à l’aide de $select, toutes les propriétés sont renvoyées.

Vous spécifiez les options de requête à partir de ?. Vous pouvez spécifier également plusieurs options de requête système en utilisant & pour séparer les options de requête.

Si vous spécifiez une chaîne de requête OData pour le paramètre options, la requête doit être codée pour les caractères spéciaux.

Lorsque vous spécifiez une FetchXML requête pour le options paramètre, la requête ne doit pas être codée.

Consultez les exemples plus loin dans cette rubrique pour savoir comment définir le paramètre options pour différents scénarios de récupération multiple.

Valeur renvoyée

En cas de réussite, retourne un objet de promesse à successCallback avec les propriétés suivantes :

Nom Type Description
entities Tableau d’objets JSON Chaque objet représente les enregistrements de table récupérés contenant des colonnes et leurs valeurs comme paires key: value. L’ID de l’enregistrement de table est extrait par défaut
nextLink String (facultatif) Si le nombre d’enregistrements récupérés est supérieur à la valeur spécifiée dans le paramètre maxPageSize de la demande, cet retourne l’URL pour retourner la prochaine page d’enregistrements.
fetchXmlPagingCookie (facultatif) Pour une opération retrieveMultipleRecords basée sur fetchXml avec pagination où le nombre total d’enregistrements est supérieur à la valeur de pagination, cet attribut renvoie le cookie de pagination qui peut être utilisé pour une opération fetchXml ultérieure pour récupérer la page d’enregistrements suivante.

Types d’attributs non pris en charge pour les options de requête OData dans Mobile Offline

Les types de colonnes suivants ne sont pas pris en charge lors d’une opération Xrm.WebApi.retrieveMultipleRecords avec les options de chaîne de requête OData (par exemple, $select et $filter) en mode mobile hors connexion. Vous devez utiliser FetchXML si le type d’attribut avec lequel vous devez travailler figure dans cette liste de types d’attributs non pris en charge.

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

Fonctionnalités non prises en charge dans Mobile Offline

Les fonctionnalités suivantes ne sont pas prises en charge dans Mobile Offline :

  • Fonctionnalités de regroupement et d’agrégation

Opérations de filtrage prises en charge par type d’attribut dans Mobile Offline à l’aide de FetchXML

Les opérations suivantes sont prises en charge pour tous les types d’attributs lorsque vous travaillez avec FetchXML :

  • Égal (eq)
  • Différent de (neq)
  • Null (null)
  • Not Null (not-null)

Le tableau suivant répertorie davantage d’opérations prises en charge pour chaque type d’attribut :

Type d’attribut Opérations non prises en charge
BigInt, Décimal, Double, Entier Supérieur à (gt)
Supérieur ou égal à (gte)
Inférieur à (lt)
Inférieur ou égal à (lte)
Booléen, Client Dans (in)
Pas dans (not-in)
EntityName, liste de sélection, état, statut Identique (like)
Non identique (not-like)
Commence par (begins-with)
Ne commence pas par (not-begin-with)
Se termine par (ends-with)
Ne se termine pas par (not-end-with)
Dans (in)
Pas dans (not-in)
GUID, Recherche Dans (in)
Pas dans (not-in)
Est égal à l’ID d’utilisateur (eq-userid)
N’est pas égal à l’ID d’utilisateur (ne-userid)
Money Supérieur à (gt)
Supérieur ou égal à (gte)
Inférieur à (lt)
Inférieur ou égal à (lte)
Dans (in)
Pas dans (not-in)
Owner Dans (in)
Pas dans (not-in)
Est égal à l’ID d’utilisateur (eq-userid)
N’est pas égal à l’ID d’utilisateur (ne-userid)
Égal à l’utilisateur OR à une équipe (eq-useroruserteams)
String Identique (like)
Non identique (not-like)
Commence par (begins-with)
Ne commence pas par (not-begin-with)
Se termine par (ends-with)
Ne se termine pas par (not-end-with)
DateTime Le ou après le (on-or-after)
Le (on)
Le ou avant le (on-or-before)
Aujourd’hui (today)
Demain (tomorrow)
Hier (yesterday)
Sept prochains jours (next-seven-days)
Sept derniers jours (last-seven-days)
Semaine prochaine (next-week)
La semaine dernière (last-week)
Cette semaine (this-week)
Mois suivant (next-month)
Le mois dernier (last-month)
Ce mois-ci (this-month)
Année prochaine (next-year)
L’année dernière (last-year)
Cette année (this-year)
X derniers jours (last-x-days)
X prochains jours (next-x-days)
X dernières semaines (last-x-weeks)
X prochaines semaines (next-x-weeks)
X derniers mois (last-x-months)
X prochains mois (next-x-months)
X dernières années (last-x-years)
X prochaines années (next-x-years)
Supérieur à (gt)
Supérieur(e) OU égal(e) à (gte)
Inférieur à (lt)
Inférieur ou égal à (lte)

Exemples

La plupart des scénarios/exemples mentionnés dans Interroger les données à l’aide de l’API Web peuvent être réalisés à l’aide de la méthode retrieveMultipleRecords . Certains des exemples sont répertoriés ci-dessous.

Récupération multiple de base

Cet exemple interroge la table des comptes définie et utilise les options de requête système $select et $top pour renvoyer la propriété name pour les trois premiers comptes :

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

Récupération de base multiple avec FetchXML

Cet exemple interroge l’entité account à l’aide de fetchXML.

var fetchXml = "?fetchXml=<fetch mapping='logical'><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
    }
);

Récupérer ou filtrer par les propriétés de recherche

Pour la plupart des propriétés de navigation à valeur unique, vous trouverez une propriété en lecture seule calculée qui utilise la convention d’affectation de noms suivante : _<name>_value<name> est le nom de la propriété de navigation à valeur unique. Aux fins du filtrage, la valeur spécifique de la propriété de navigation à valeur unique peut également être utilisée. Cependant, pour les clients mobiles en mode hors connexion, ces options de syntaxe ne sont pas prises en charge et le nom de la propriété de navigation à valeur unique doit être utilisé à la fois pour la récupération et le filtrage. En outre, la comparaison des propriétés de navigation à Null n’est pas prise en charge en mode hors connexion.

Pour plus d’informations : Propriétés de recherche

Voici des exemples de codes pour les scénarios suivants :

Pour le scénario en ligne (connecté au serveur)

Cet exemple interroge la table des comptes définie et utilise les options de requête système $select et $filter pour renvoyer le nom et la propriété primarycontactid pour les comptes qui ont un contact principal spécifique :

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

Pour le scénario hors ligne mobile

Cet exemple interroge la table des comptes définie et utilise les options de requête système $select et $filter pour renvoyer le nom et la propriété primarycontactid pour les comptes qui ont un contact principal spécifique dans le cas du mode hors ligne :

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

Utilisation FetchXML pour récupérer ou filtrer par propriétés de recherche (scénario en ligne et hors ligne)

Vous pouvez utiliser le paramètre FetchXML en ligne ou hors ligne pour récupérer la propriété name et primarycontactid pour les enregistrements de compte dont le contact principal correspond à une condition :

var fetchXml = `?fetchXml=
    <fetch mapping='logical'>
       <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
    }
);

Spécifier le nombre de tables à renvoyer dans une page

L’exemple suivant montre l’utilisation du paramètre maxPageSize pour spécifier le nombre d’enregistrements (3) à afficher dans une page.

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

Cet exemple affiche trois enregistrements et un lien vers la page suivante. Voici un exemple de résultat de la Console dans les outils de développement de navigateur :

{@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

Utilisez la partie de la requête dans l’URL dans la propriété nextLink comme valeur pour le paramètre options dans votre appel suivant retrieveMultipleRecords pour demander le prochain jeu d’enregistrements. Ne modifiez ou n’ajoutez aucune autre option de requête système à la valeur. Pour chaque demande de pages supplémentaires consécutive, vous devez utiliser la même valeur maxPageSize que celle utilisée dans la requête de récupération multiple. En outre, placez les résultats renvoyés ou la valeur de la propriété nextLink dans le cache de sorte que les pages récupérées précédemment puissent être renvoyées.

Par exemple, pour obtenir la page d’enregistrements suivante, vous devez passer dans la partie de la requête de l’URL nextLink le paramètre 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
    }
);

Cela renvoie la page suivante du resultset :

{@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

Important

La valeur de la propriété nextLink est encodée URI. Si vous encodez par l’URI la valeur avant de l’envoyer, les informations des cookies XML dans l’URL entraîneront une erreur.

FetchXML Exemple (scénario en ligne)

L’exemple suivant illustre l’utilisation du paramètre count du paramètre FetchXML pour spécifier le nombre d’enregistrements (3) à afficher dans une page.

Notes

Le cookie de pagination n’est renvoyé que pour les opérations en ligne. FetchXML retrieveMultipleRecords (Xrm.webApi.online). Il n’est pas pris en charge hors connexion.

var fetchXml = "?fetchXml=<fetch mapping='logical' 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
    }
);

Cet exemple affichera trois enregistrements et renverra un cookie de pagination pour récupérer les résultats de la page suivante s’il existe plusieurs enregistrements appartenant à l’ensemble de résultats. FetchXML Voici un exemple de résultat de la Console dans les outils de développement de navigateur :

{
   "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\" />"
}

Nous pouvons utiliser le fetchXmlPagingCookie comme indiqué dans l’exemple ci-dessous pour récupérer de grands ensembles de résultats avec pagination.

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 mapping="logical"><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
  }
);

Utilisez l’option de requête système $expand dans les propriétés de navigation pour contrôler quelles données sont renvoyées à partir des tables liées. L’exemple suivant montre comment récupérer le contact pour tous les enregistrements de compte. Pour les enregistrements de contact associés, nous récupérons uniquement contactid et fullname :

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

Le morceau de code ci-dessus renvoie un résultat avec un schéma comme suit :

{
   "entities": [
      {
         "@odata.etag": "W/\"1459919\"",
         "name": "Test Account",
         "accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
         "primarycontactid": {
            "contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
            "fullname": "Test Contact"
         }
      }
   ]
}

Notes

Comme pour le scénario en ligne, utilisez l’option de requête système $expand pour extraire des données de tables connexes hors ligne. Toutefois, les relations de plusieurs à plusieurs ne sont pas prises en charge en mode hors ligne.

Méthode obsolète pour le scénario hors ligne mobile

Notes

@odata.nextLink est obsolète pour les scénarios mobiles hors ligne. Bien qu’il soit toujours pris en charge pour les personnalisations existantes, il est désormais déconseillé de l’utiliser.

Une opération $expand hors connexion retourne une annotation @odata.nextLink contenant des informations sur la façon d’accéder aux informations de l’enregistrement associé. Nous utilisons les paramètres id, entityType et options de cette annotation pour construire une ou plusieurs requêtes Xrm.WebApi.offline.retrieveRecord supplémentaires. Le morceau de code suivant fournit un exemple complet de la façon de procéder :

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

Pour plus d’exemples de récupération de plusieurs enregistrements à l’aide de l’API Web, voir Interroger des données à l’aide de l’API Web.

Interroger des données à l’aide de l’API Web
Xrm.webApi.retrieveRecord
Xrm.webApi

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).