Blog

  • Accueil
  • Blog
  • Fenêtres modales dans Dynamics 365 et formulaires d'applications pilotées par modèle

Fenêtres modales dans Dynamics 365 et formulaires d'applications pilotées par modèle

20 February 2024
En utilisant un système CRM comme Dynamics 365, il est assez courant d'avoir besoin d'afficher des fenêtres modales aux utilisateurs pour diverses raisons :

  • Afficher un message
  • Afficher des informations enrichies (HTML / Power Apps)
  • Poser une question
  • Alerter en fonction de critères

Dans cet article, je vais présenter les différentes manières possibles d'afficher des fenêtres modales ou des messages à un utilisateur sur un formulaire.

1. Notifications globales

Une fenêtre modale est utile lorsqu'une action a été effectuée, mais un trop grand nombre de fenêtres modales peut gâcher l'expérience utilisateur. Avant de décider d'en afficher une dans un formulaire, une solution à envisager pour afficher des informations à un utilisateur est la « Notification globale ». L'utilisateur voit le message apparaître au-dessus du formulaire. Le message peut être de type :

  • Succès : en vert
  • Erreur : en rouge
  • Avertissement : en jaune
  • Information : en bleu
N'oubliez pas d'effacer les messages une fois terminé. Sinon, vous risquez de les voir s'empiler les uns en dessous des autres, au-dessus du formulaire.

// define notification object var notification = { type: 2, level: 2, //error message: "Test error notification" }; Xrm.App.addGlobalNotification(notification).then( function success(result) { console.log("Notification created with ID: " + result); // perform other operations as required on notification display }, function (error) { console.log(error.message); // handle error conditions } );

Lien vers la documentation ici

2. Boîte de dialogue d'alerte

La boîte de dialogue d'alerte est la fenêtre modale la plus basique possible avec juste une information. Il est possible de configurer la taille de la fenêtre. De plus, vous pouvez personnaliser le titre, le message de l'alerte, ainsi que le titre du bouton d'action. De plus, vous pouvez définir des méthodes en cas d'erreur ou de réussite.
Voici comment l'implémenter ci-dessous :

var alertStrings = { confirmButtonLabel: "Yes", text: "This is an alert.", title: "Sample title" }; var alertOptions = { height: 120, width: 260 }; Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then( function (success) { console.log("Alert dialog closed"); }, function (error) { console.log(error.message); } );

Lien vers la documentation ici

3. confirmDialog

La fenêtre confirmDialog est plus riche. Ici, nous pourrons attendre une réponse de l'utilisateur telle que "Oui"/"Non" ou "OK"/"Annuler". Il est toujours possible de configurer la taille de la fenêtre. Mais surtout en fonction de la réponse, d'exécuter différentes fonctions.
Voici comment l'implémenter ci-dessous :

var confirmStrings = { text:"Ceci est une confirmation.", title:"Boîte de dialogue de confirmation" }; var confirmOptions = { height: 200, width: 450 }; Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then( function (success) { if (success.confirmed) console.log("Dialogue fermé à l'aide du bouton OK."); else console.log("Dialogue fermé à l'aide du bouton Annuler ou de X."); } );


Lien vers la documentation ici

4. ErrorDialog

Ce type de fenêtre, comme son nom l'indique, est conçu pour afficher des messages d'erreur à l'écran. L'utilisateur identifiera clairement qu'il s'agit d'une erreur et non d'un simple message standard.
Voici comment l'implémenter ci-dessous :

Xrm.Navigation.openErrorDialog({ errorCode:1234 }).then( function (success) { console.log(success); }, function (error) { console.log(error); } );

Lien vers la documentation ici

5. NavigateTo

C'est mon préféré. Il permet à lui seul plusieurs actions possibles avec une fenêtre modale. Par exemple, il permet d'afficher :

  • Liste de tables
  • Enregistrement de tables
  • Ressource Web HTML
  • Page personnalisée

Ci-dessous un exemple de la façon d'ouvrir

Xrm.Navigation.navigateTo({ pageType:"entityrecord", entityName:"account", formType:2, entityId:"71f0728d-c25f-ea11-a811-000d3a3be299" }, { target: 2, position: 2, width: {value: 50, unit:"%"} });

Lien vers la documentation ici

6. Ouvrir le formulaire

La méthode OpenForm permettra d'ouvrir un formulaire de manière modale dans un nouvel onglet par-dessus celui actuellement ouvert.
A aucun moment nous ne perdons le focus pour utiliser la fenêtre principale. Cela peut être utile si nous devons effectuer des opérations en parallèle entre les deux fenêtres.

var entityFormOptions = {}; entityFormOptions["entityName"] = "contact"; entityFormOptions["entityId"] = "8DA6E5B9-88DF-E311-B8E5-6C3BE5A8B200"; // Open the form. Xrm.Navigation.openForm(entityFormOptions).then( function (success) { console.log(success); }, function (error) { console.log(error); } );

Lien vers la documentation ici

7. SidePanes

Ce n'est techniquement pas une fenêtre modale, mais elle peut être tout aussi intéressante pour afficher un enregistrement.

Avec SidesPanes, vous pouvez afficher un formulaire CRM sur le côté de votre écran actuellement ouvert. Il est assez facile de fermer la fenêtre une fois la consultation terminée.
Xrm.App.sidePanes.createPane({ title: "Reservation: Ammar Peterson", imageSrc: "WebResources/sample_reservation_icon", hideHeader: true, canClose: true, width: 600 }).then((pane) => { pane.navigate({ pageType: "entityrecord", entityName: "account", entityId: "a16b3f4b-1be7-e611-8101-e0071b6af231", }) });

Lien vers la documentation ici

Conclusion

Voici quelques pistes pour afficher des informations dans un formulaire sans quitter la fenêtre courante. Bien entendu, il faudra échanger avec les équipes métiers avant de décider quelle solution choisir.
J'espère que cet article vous aura aidé.