Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple PowerShell montre comment créer et utiliser des colonnes de recherche multi-tables, parfois appelées recherches polymorphes, à l’aide de l’API Web Dataverse.
Cet exemple illustre les opérations décrites dans Utiliser des colonnes de recherche à plusieurs tables et utilise les fonctions d’assistance PowerShell de l’API Web Dataverse pour gérer l’authentification et fournir des fonctions réutilisables pour effectuer des opérations courantes. L’exemple référence ces scripts à l’aide du dot sourcing.
. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.ps1
. $PSScriptRoot\..\MetadataOperations.ps1
Note
Cet exemple doit fonctionner avec Windows, Linux et macOS, mais l’auteur l’a testé uniquement sur Windows.
Prerequisites
Avant d’exécuter cet exemple, vous devez lire ces articles qui expliquent les concepts et les modèles utilisés par ces exemples :
- Quick Start Web API avec PowerShell et Visual Studio Code
- Utilisez PowerShell et Visual Studio Code avec l’API Web Dataverse
Ces articles ont les mêmes conditions préalables.
Installer ou vérifier que les éléments suivants sont installés
Installez Visual Studio Code. Consultez Download Visual Studio Code
Installez l’extension PowerShell pour Visual Studio Code. Consultez PowerShell pour Visual Studio Code
Installez PowerShell 7.4 ou version ultérieure. Consultez Installer PowerShell sur Windows, Linux et macOS
Installez le module Az PowerShell version 11.1.0 ou ultérieure. Consultez How to install Azure PowerShell
Pour mettre à jour une installation existante vers la dernière version, utilisez
Update-Module -Name Az -Force
Vérifier l’installation
Ouvrez Visual Studio Code.
Dans le menu Terminal, sélectionnez Nouveau terminal.
Dans Visual Studio Code volet de navigation, sélectionnez l’icône
pour l’extension PowerShell.Copiez et collez le script suivant dans la fenêtre de terminal Visual Studio Code :
Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString() Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).VersionAppuyez sur Entrée. La sortie doit ressembler à ce qui suit :
PowerShell Version: 7.4.0 PowerShell Az version: 11.1.0
Si vous ne voyez pas les résultats comme celui-ci, installez ou mettez à jour les prérequis.
Vous aurez également besoin de
- Un compte d’utilisateur valide pour un environnement Dataverse
- URL de l’environnement Dataverse auquel vous souhaitez vous connecter. Consultez Afficher les ressources du développeur pour découvrir comment le trouver. Il semble quelque chose comme ceci :
https://yourorg.crm.dynamics.com/, oùyourorg.crmest différent. - Compréhension de base du langage de script PowerShell
Comment exécuter cet exemple
Clonez ou téléchargez le référentiel PowerApps-Samples .
Ouvrez le fichier
/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1à l’aide de Visual Studio Code.Modifiez la ligne suivante pour utiliser l’URL de l’environnement auquel vous souhaitez vous connecter :
Connect 'https://yourorg.crm.dynamics.com/' # change this(Facultatif) Définissez la
$deleteCreatedRecordsvariable$falsesi vous ne souhaitez pas supprimer les enregistrements créés par cet exemple.Appuyez sur F5 pour exécuter l’exemple.
La première fois que vous exécutez l’exemple, une fenêtre de navigateur s’ouvre. Dans la fenêtre du navigateur, entrez ou sélectionnez les informations d’identification que vous souhaitez utiliser pour vous authentifier.
Pour vous connecter en tant qu’utilisateur différent, exécutez la commandeDisconnect-AzAccount et réessayez.
Code informatique
Le code de cet exemple est à : PowerApps-Samples/dataverse/webapi/PS/PolymorphicLookup/PolymorphicLookupSample.ps1
Montre ce qui suit
Cet exemple comporte neuf sections :
Section 0 : Créer un éditeur et une solution
Opérations:
- Recherchez un éditeur existant avec le
examplepublishernom unique en effectuant uneGETrequête à/publishers. - Créez l’éditeur s’il n’existe pas déjà en envoyant une
POSTdemande à/publishers. - Requête d’une solution existante nommée
polymorphiclookupexamplesolutionen envoyant uneGETrequête à/solutions. - Créez la solution si elle n’existe pas déjà en envoyant une
POSTdemande à/solutions.
Note
Vous pouvez exporter tous les composants de solution créés dans cet exemple en les associant à la solution. Pour les opérations sans message nommé, définissez l’en-tête de requête sur le nom unique de la MSCRM.SolutionUniqueName solution pour créer cette association.
Préfixez tous les noms des composants de solution à l’aide du préfixe de personnalisation de l’éditeur.
Section 1 : Créer des tables référencées
Opérations:
- Créez une
sample_Booktable en envoyant unePOSTdemande à/EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principalsample_nameet unesample_CallNumbercolonne de chaîne. - Créez une
sample_Audiotable en envoyant unePOSTdemande à/EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principalsample_nameet unesample_AudioFormatcolonne de chaîne. - Créez une
sample_Videotable en envoyant unePOSTdemande à/EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principalsample_nameet unesample_VideoFormatcolonne de chaîne.
Ces trois tables servent de tables référencées vers laquelle la colonne de recherche polymorphe peut pointer.
Section 2 : Créer une table de référencement
Opérations : créez une sample_Media table en envoyant une POST demande à /EntityDefinitions, s’il n’existe pas déjà. Cette table inclut un attribut principal sample_name et héberge la colonne de recherche polymorphe.
La sample_Media table sert de table de référencement : la table qui contient la colonne de recherche à plusieurs tables.
Section 3 : Créer un attribut de recherche polymorphe
Opérations:
- Créez une
sample_MediaPolymorphicLookupcolonne de recherche sur lasample_Mediatable avec des relations un-à-plusieurs avec chacune des trois tables référencées (sample_Book,sample_Audioetsample_Video) à l’aide de l’action CreatePolymorphicLookupAttribute. Cette action unique crée l’attribut et les trois relations à la fois. - Récupérez le
ReferencingEntityNavigationPropertyNamepour chacune des trois relations (sample_media_sample_book,sample_media_sample_audio,sample_media_sample_video) en envoyant des requêtesGETà/RelationshipDefinitions. Vous avez besoin de ces noms de propriétés de navigation pour associer des enregistrements à l'aide de la syntaxe@odata.bind.
Section 4 : Créer des exemples d’enregistrements de données
Opérations:
- Récupérez le
EntitySetNamede chacune des quatre tables en envoyantGETdes requêtes à/EntityDefinitions. - Créez deux
sample_Bookenregistrements en envoyant desPOSTrequêtes àsample_books. - Créez deux
sample_Audioenregistrements en envoyant desPOSTrequêtes àsample_audios. - Créez deux
sample_Videoenregistrements en envoyant desPOSTrequêtes àsample_videos. - Créez quatre
sample_Mediaenregistrements en envoyantPOSTdes demandes àsample_medias. Chaque enregistrement multimédia utilise le nom de la propriété de navigation récupéré dans la section 3 et la syntaxe@odata.bindpour configurer la recherche polymorphe et pointer vers un enregistrement de l'une des trois tables référencées.
Section 5 : Récupérer des exemples de données
Opérations:
- Interrogez tous les enregistrements
sample_Media, en sélectionnant les colonnessample_nameet_sample_mediapolymorphiclookup_valueen envoyant une requêteGETà/sample_medias. La requête utilise les annotations ODataMicrosoft.Dynamics.CRM.lookuplogicalnameetOData.Community.Display.V1.FormattedValuepour afficher le type d’entité et le nom mis en forme de chaque valeur de recherche. - Filtrer les enregistrements
sample_Mediaoù la recherche polymorphe pointe vers un enregistrement spécifiquesample_Booken envoyant une requêteGETà/sample_mediasavec un$filterapproprié. - Filtrer les enregistrements
sample_Mediaoù la recherche polymorphe pointe vers un enregistrement spécifiquesample_Audioen envoyant une requêteGETà/sample_mediasavec un$filterapproprié.
Section 6 : Exporter une solution managée
Opérations : exportez la solution que vous avez créée dans la section 0 : Créez un serveur de publication et une solution en tant que package de solution managée à l’aide de l’action ExportSolution. Enregistrez le fichier exporté .zip localement à utiliser dans la section 8.
Section 7 : Supprimer des exemples de tables et de solutions
Opérations:
- Supprimez la
sample_Mediatable en envoyant uneDELETEdemande à/EntityDefinitions. Vous devez supprimer la table de référencement avant les tables référencées. - Supprimez les tables
sample_Book,sample_Audioetsample_Videoen envoyant des requêtesDELETEà/EntityDefinitions. - Interrogez la solution non managée en envoyant une
GETrequête à/solutionsfiltrer par nom unique. - Supprimez la solution non managée en envoyant une
DELETEdemande à/solutions(<solutionid>).
Section 8 : Importer et supprimer une solution managée
Opérations:
- Importez la solution managée exportée dans la section 6 : Exporter une solution managée à l’aide de l’action ImportSolution.
- Interrogez la solution importée en envoyant une
GETrequête à/solutionsfiltrer par nom unique. - Supprimez la solution managée importée en envoyant une
DELETEdemande à/solutions(<solutionid>).
Nettoyage
Par défaut, cet exemple supprime tous les enregistrements qu’il crée. Si vous souhaitez afficher les enregistrements créés une fois l’exemple terminé, remplacez la $deleteCreatedRecords variable $falsepar . Vous êtes alors invité à décider si vous souhaitez supprimer les enregistrements.
Voir aussi
Utiliser des colonnes de recherche multi-tables
Utiliser l’API web Dataverse
Utiliser l’API Web avec les définitions de table
Exemples d’API web
Exemple d’opérations sur le schéma de la table de l’API web (PowerShell)