Écrire du code pour les formulaires Microsoft Dynamics 365
Date de publication : janvier 2017
S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
La programmation de formulaire fournit des méthodes d’interaction avec les formulaires d’entité à l’aide de JavaScript qui est exécuté pour les événements qui se produisent dans le formulaire.
Contenu de la rubrique
Quand utiliser la programmation de formulaire
Facteurs à considérer lorsque vous utilisez la programmation de formulaire
Gérer les dépendances de bibliothèque
Création de scripts de formulaire qui fonctionnent bien
Les différentes présentations de formulaires
Outils de développement
Quand utiliser la programmation de formulaire
Microsoft Dynamics 365 propose différentes options pour contrôler les processus d’entreprise. La programmation du formulaire est une de ces options. Mais n'oubliez pas que vous avez une autre option : les règles métier. Les règles métier constituent le moyen pour une personne qui ne connaît pas JavaScript et n’est pas développeur d’appliquer la logique de processus d’entreprise dans un formulaire. Pour plus d'informations, voir la rubrique : TechNet : Création et modification des règles métier du Guide de personnalisation.
Le principal avantage de la programmation de formulaire et des règles métier est qu’elles sont immédiates. Elles ne nécessitent pas d’envoyer des données au serveur et assurent donc les meilleures performances pour de nombreux scénarios. Comme elles permettent l’interaction humaine, elles sont également l'option la plus souple.
Alors que les règles métier sont avantageuses car elles peuvent être créées et gérées par une personne qui n’est pas développeur, elles ont certaines limites et ne sont pas destinées à remplacer les scripts de formulaire. La programmation de formulaire vous permet d’obtenir les éléments qui ne peuvent pas encore être créés avec les règles métier.
Les tâches souvent effectuées via une programmation de formulaire sont les suivantes :
Validation des données : Si possible, vous devez effectuer la validation des données pendant que les données sont modifiées. La définition du champ Formulaire effectue la validation des données les plus courantes pour vous. Par exemple, un champ Single Line of Text formaté pour une adresse de messagerie n’accepte pas une valeur non valide.
Utilisez la programmation de formulaire pour effectuer une validation supplémentaire des données qui est propre à votre organisation. Par exemple, votre organisation peut posséder des règles spécifiques sur la façon dont les numéros de téléphone doivent être mis en forme ou sur la longueur minimale du champ Subject dans une activité de service.
Automatisation : Vous pouvez obtenir des améliorations importantes de productivité lorsque vous utilisez les scripts pour automatiser les tâches courantes. Vous pouvez définir les valeurs des champs qui dépendent des données qui sont entrées dans un formulaire, qui permettent de gagner un temps considérable lors de la saisie des données. L’utilisation de la programmation de formulaire pour l’automatisation est précieuse car elle permet à l’utilisateur de vérifier qu’un processus standard est valide dans un cas particulier. Les utilisateurs peuvent apporter les modifications nécessaires avant de sauvegarder un enregistrement.
Amélioration et application de processus : Vous pouvez personnaliser ce que les données affichent dans le formulaire ou la disposition du formulaire pour l'optimiser pour les tâches spécifiques exécutées par les personnes de votre organisation. Utilisez le formulaire de programmation pour afficher ou masquer les éléments de formulaire spécifiques ou pour ouvrir les formulaires qui ont été définis pour une entité. Vous pouvez contrôler les champs obligatoires selon les données figurant dans le formulaire ou dans les enregistrements associés.
Avec Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015, vous pouvez écrire le code pour contrôler les flux de processus métier qui apparaissent en haut des formulaires.Pour plus d'informations :Écriture d'événements pour les flux de processus d'entreprise.
Facteurs à considérer lorsque vous utilisez la programmation de formulaire
La logique appliquée dans la programmation de formulaire peut être exécutée dans le navigateur de quelqu’un qui interagit dans le formulaire d’entité d’application Microsoft Dynamics 365. Ainsi, vous ne devez pas compter uniquement sur la programmation de formulaire pour initier ou appliquer des processus liés à vos données. Les enregistrements peuvent être créés ou mis à jour directement via les API des services Web ou via des workflows hors du contexte du formulaire. La programmation de formulaire doit compléter la logique métier appliquée à l’aide des plug-ins et des processus afin que tous les enregistrements créés ou mis à jour d’une manière ou d’une autre soient conformes aux mêmes processus.
Les règles métier peuvent être configurées pour s'exécuter au niveau de la portée de l'entité afin que la même logique soit appliquée sur le serveur quel que soit l'emplacement initial où l'action a démarré.Pour plus d'informations :TechNet : créer et modifier des règles métier
Alors que la programmation de formulaire fournit des fonctionnalités pour des champs de formulaire afin que les utilisateurs ne puissent pas afficher ou mettre à jour certaines données d’entité, elle n’est pas une solution complète pour appliquer des exigences de sécurité. Un utilisateur peut afficher les données d’entité non visibles sur le formulaire en utilisant diverses méthodes comme Recherche avancée.Pour plus d'informations :Le modèle de sécurité de Microsoft Dynamics 365
Gérer les dépendances de bibliothèque
Pour l'optimisation des performances, les formulaires Microsoft Dynamics 365JavaScript chargent les ressources Web de manière asynchrone et en parallèle. Cela signifie que l'ordre dans lequel les bibliothèques sont configurées pour un formulaire ne garantit pas qu'une bibliothèque sera entièrement téléchargée et initialisée avant qu'une autre bibliothèque puisse tenter d'utiliser un des objets définis.
Si vous avez un code qui dépend d'une autre bibliothèque à télécharger et initialiser entièrement, la solution la plus simple est de centraliser les deux bibliothèques dans une seule ressource Web JavaScript avec votre code en dessous du code de bibliothèque. Une approche plus sophistiquée consiste à utiliser les bibliothèques telles que head.js ou require.js pour contrôler le mode de chargement des bibliothèques distinctes.
Création de scripts de formulaire qui fonctionnent bien
Lorsque vous créez des scripts pour formulaires, utilisez les pratiques suivantes pour obtenir les meilleures performances :
Éviter d'ajouter des bibliothèques de ressource Web JavaScript inutiles
Plus vous ajoutez de scripts au formulaire, plus leur temps de téléchargement est long. Généralement, les scripts sont mis en cache dans le navigateur après leur premier téléchargement, mais les performances d'un formulaire au premier affichage créent souvent une impression durable.Pour un exemple spécifique, n’incluez pas jQuery dans vos scripts de formulaire juste parce que vous souhaitez utiliser XMLHttpRequests. Alors que jQuery intègre la fonction $.ajax qui est bien connue pour effectuer ces demandes, il s’agit d’une préférence de développeur et non d’une nécessité. Il est possible d’effectuer ces requêtes avec l’objet XMLHttpRequest natif figurant dans tous les navigateurs pris en charge par Microsoft Dynamics 365.Pour plus d'informations :Utiliser jQuery
Éviter de télécharger tous les scripts dans l'événement Onload
Si vous avez un code qui prend uniquement en charge les événements OnChange pour les champs ou l'événement OnSave, veillez à définir la bibliothèque de scripts avec le gestionnaire d'événements pour ces événements au lieu de l'événement OnLoad. De cette façon, le chargement des bibliothèques peut être reporté et les performances du formulaire peuvent être améliorées lors du chargement.Nous ne vous recommandons pas d’utiliser la méthode addOnChange dans le gestionnaire d’événements OnLoad simplement pour plus de commodité. Alors que cela peut réduire le nombre d’étapes nécessaires pour ajouter vos gestionnaires d’événements, le formulaire se charge plus lentement.
Utiliser des onglets réduits pour reporter le chargement des ressources Web
Lorsque des ressources Web ou des IFRAME sont inclus dans les sections d’un onglet réduit, ils ne sont pas chargés si l’onglet est réduit. Ils sont chargés lorsque l'onglet est développé. Lorsque le statut de l’onglet change, l’événement TabStateChange se produit. Le code requis pour prendre en charge les ressources Web ou les IFRAME dans les onglets réduits peut utiliser les gestionnaires d’événements pour l’événement TabStateChange et réduire le code autrement susceptible de se produire dans l’événement OnLoad.Définir des options de visibilité par défaut
Évitez d'utiliser des scripts de formulaire dans l'événement OnLoad qui masquent des éléments de formulaire. Définissez plutôt des options de visibilité par défaut pour des éléments de formulaire pouvant être masqués par défaut lors du chargement du formulaire. Utilisez ensuite des scripts dans l'événement OnLoad pour afficher les éléments de formulaire à afficher.
Les différentes présentations de formulaires
Il existe plusieurs manières différentes de présenter les formulaires. Elles affectent le type de code ou les événements disponibles que vous pouvez utiliser pour chacun d’entre eux.
Rendu de formulaire hérité
Dans Mise à jour 1 de Microsoft Dynamics CRM Online 2015 et Dynamics 365 (en local), une nouvelle définition du système : Utiliser le rendu de formulaire hérité a été entré. Dans ces versions, le rendu du rapport a été amélioré et la structure interne de la page est modifiée. Par conséquent, les scripts de formulaire qui utilisaient les méthodes non prises en charge ne pourront pas accéder aux éléments DOM qui étaient disponibles dans les versions précédentes. Si de nouvelles erreurs apparaissent après la mise à niveau vers ces versions, vous pouvez essayer d'appliquer ce paramètre pour voir si les erreurs disparaissent. Si c'est le cas, il y a de fortes chances que les scripts provoquant ces erreurs utilisent les méthodes non prises en charge.
Vous pouvez définir le paramètre Utiliser le rendu de formulaire hérité pour octroyer du temps à la résolution de ces problèmes, mais vous ne pourrez malheureusement pas bénéficier des améliorations de performances fournies par la nouvelle infrastructure du rendu de formulaire.
Notes
Le paramètre Utiliser le rendu de formulaire hérité sera supprimé de la prochaine version majeure. Pour le moment, tous les scripts de formulaire doivent utiliser le nouveau rendu de formulaire.
Entités mises à jour
Toutes les entités personnalisées et certaines entités système possèdent une interface utilisateur mise à jour qui inclut l’utilisation de la barre de commandes et de nouvelles API de formulaire. Les entités système mises à jour sont répertoriées dans le tableau suivant :
Compte |
Rendez-vous |
Campagne |
Activité de campagne |
Réponse de la campagne |
Incident |
Concurrent |
Contact |
Contrat |
Ligne de contrat (ContractDetail) |
Courrier électronique |
Droit |
Modèle de droit |
Télécopie |
Facture |
Produit de la facture (InvoiceDetail) * |
Prospect |
Lettre |
Liste marketing |
Opportunité |
Produit d’opportunité |
Ordre |
Produit de la commande (SalesOrderDetail) * |
Appel téléphonique |
Poste |
Élément tarifaire |
Produit |
Association de produits |
Relation de produit (ProductSubstitute) |
File d'attente |
Campagne rapide (Opération groupée) |
Devis |
Produit du devis (QuoteDetail) * |
Rendez-vous périodique (RecurringAppointmentMaster) |
Documentation commerciale |
Contrat SLA |
Instance de l'indicateur de performance clé du contrat SLA |
Activité sociale |
Profil social |
Tâche |
Équipes |
User |
* Ces entités ont été mises à jour dans Mise à jour 1 de CRM Online 2016 et Dynamics 365 Service Pack 1 (local).
Notes
Certaines entités mises à jour incluent des attributs composés. En revanche, vous devez prendre en compte les quelques points particuliers suivants :Pour plus d'informations :Écrire des scripts pour les attributs composés.
Les formulaires d’entité mis à jour peuvent également inclure un contrôle de collaboration qui donne accès aux notes, activités et publications si elles sont configurées pour l’entité. L’objet Xrm.Page n’autorise pas l’accès au contrôle de collaboration. Vous pouvez accéder à l’élément de la section contenant le contrôle de collaboration si vous souhaitez l’afficher ou le masquer à l’aide de scripts.
Méthodes de programmation des formulaires et événement PreSearch pour les entités mises à jour
Le tableau suivant répertorie les méthodes de programmation de formulaire disponibles pour les entités mises à jour uniquement.
Méthode |
Description |
---|---|
Renvoie une valeur qui indique le client dans lequel le script s’exécute. |
|
Xrm.Page.context.client.getClientState |
Renvoie une valeur qui indique l’état du client. |
Xrm.Page.context.getUserName |
Renvoie le nom de l’utilisateur actuel. |
Xrm.Page.data.entity.getPrimaryAttributeValue |
Obtient une chaîne pour la valeur de l’attribut principal de l’entité. |
Xrm.Page.data.refresh |
Actualise de manière asynchrone les données du formulaire sans recharger la page. |
Xrm.Page.data.Enregistrer |
Stocke l’enregistrement de manière asynchrone avec la possibilité de définir des fonctions de rappel à exécuter une fois l’opération d’enregistrement terminée. |
Xrm.Page.data.entity attribute.getIsPartyList |
Détermine si un attribut de recherche représente une recherche PartyList. |
Xrm.Page.ui control.clearNotification |
Supprime un message déjà affiché pour un contrôle. |
Xrm.Page.ui control.setNotification |
Affiche un message en regard du contrôle pour indiquer que les données ne sont pas valides. |
Xrm.Page.ui.clearFormNotification |
Utilisez cette méthode pour supprimer des notifications au niveau du formulaire. |
Xrm.Page.ui.setFormNotification |
Utilisez cette méthode pour afficher des notifications au niveau du formulaire. |
Xrm.Page.ui control.addCustomFilter |
Utilisez le fetchXml pour ajouter des filtres supplémentaires aux résultats affichés dans la recherche. Chaque filtre est combiné avec tous les filtres précédemment ajoutés sous forme d’une condition « ET ». |
Xrm.Page.ui control.setShowTime |
Spécifie si un contrôle de date doit afficher la partie heure d’une date. |
Xrm.Utility.alertDialog |
Affiche une boîte de dialogue d’alerte non bloquante avec une fonction de rappel. |
Xrm.Utility.confirmDialog |
Affiche une boîte de dialogue de confirmation non bloquante avec différents rappels selon le bouton sur lequel l’utilisateur a cliqué. |
Événement PreSearch
Le nouvel élément Événement PreSearch se produit uniquement avant l’ouverture de la boîte de dialogue de recherche lorsque vous définissez une valeur de recherche. Cet événement n’a pas d’interface utilisateur pour définir un gestionnaire d’événements de l’application. Il ne peut être défini qu’avec la méthode Xrm.Page.ui control.addPreSearch. Utilisez cet événement avec les méthodes addCustomFilter, addCustomView et setDefaultView pour contrôler les vues ouvertes lorsqu’un enregistrement est recherché pour servir de valeur à un champ de recherche.
Entités utilisant des formulaires classiques
Les entités système qui n’ont pas été mises à jour utilisent une présentation de formulaire classique. Les formulaires de ces entités continuent d’utiliser le ruban s’ils le faisaient dans CRM 2011 et n’ont pas accès aux API de formulaire ajoutées dans cette version. Ces entités sont répertoriées dans le tableau suivant :
Adresse |
Article |
Commentaire d’article |
Opération de suppression en bloc |
Division |
Connexion |
Remise |
Types de remises |
Emplacement du document |
Pièce jointe du courrier électronique |
Suivre |
Objectif |
Mesure de l’objectif |
Fichier source d'importation |
Produit de la facture |
Produit de la commande |
Tarifs |
Élément de file d’attente |
Produit du devis |
Champ de report |
Requête de report |
Vue enregistrée |
Service |
Activité de service |
Site SharePoint |
Site |
Secteur de vente |
Unité |
Unité de vente |
Entités activées pour Dynamics 365 pour tablettes
Seules les entités système et les entités personnalisées sélectionnées peuvent être affichées avec Microsoft Dynamics 365 pour tablettes. Les entités système suivantes peuvent avoir des formulaires modifiables dans Dynamics 365 pour tablettes.
Compte |
Activité |
Rendez-vous |
Incident |
Concurrent |
Connexion |
Contact |
Prospect |
Remarque |
Opportunité |
Produit d’opportunité |
Appel téléphonique |
Élément de file d’attente |
Activité sociale |
Profil social |
Tâche |
Comme Dynamics 365 pour tablettes n’a pas les mêmes comportements que les formulaires de l’application Web, certaines API ne sont pas disponibles. Par exemple, dans Dynamics 365 pour tablettes, les onglets ne peuvent pas être développés ou réduits, de sorte que l’événement Événement TabStateChange de l'onglet ne se produit pas et la méthode Xrm.Page.ui tab.setDisplayState ne peut pas être utilisée pour développer ou réduire les onglets.Pour plus d'informations :Écrire et déboguer des scripts pour Dynamics 365 pour téléphones et tablettes.
Outils de développement
Votre expérience en matière d'écriture en JavaScript pour les formulaires Dynamics 365 sera meilleure lorsque vous utiliserez les bons outils.
Utiliser les bons outils de création
Comme JavaScript est un langage interprété, il n'est pas nécessaire d'utiliser des outils de développement spéciaux.JavaScript n'est que du texte et peut donc être modifié dans l'application ou dans un éditeur de texte tel que le Bloc-notes. Toutefois, vous pouvez obtenir des gains de productivité significatifs lorsque vous utilisez les outils de création qui fournissent des fonctionnalités qui prennent spécialement en charge la modification des fichiers JavaScript, notamment Microsoft Visual Studio et Microsoft Visual Studio Express. Vous pouvez accéder à la Communauté Visual Studio 2013 gratuitement.
Utiliser les outils de développement du navigateur
Tous les navigateurs modernes fournissent des outils pour activer les scripts de débogage. Ces outils peuvent également être une aide énorme lors de l'écriture des scripts des formulaires Dynamics 365. Ces outils de développement sont fréquemment appelés outils F12 car c'est la touche utilisée pour les ouvrir. Voir Débogage W3Schools JavaScript pour savoir comment utiliser ces outils.
Utilisez les outils de développement pour vérifier la syntaxe des scripts que vous téléchargerez comme des ressources Web de script. Grâce à ces outils, vous pourrez également obtenir la meilleure compréhension du modèle objet sur la base duquel vous effectuez votre programmation. Par exemple, lorsque vous écrivez du code pour accéder à des objets spécifiques dans un formulaire, vous devez régulièrement y accéder par leur nom. Au lieu de rechercher le nom de l'objet dans l'éditeur de formulaires, utilisez la console dans les outils de développement pour interroger le modèle d'objet Xrm.Page et obtenir le nom des attributs ou des contrôles auxquels vous accédez. Par exemple, si vous voulez accéder à un contrôle de sous-grille spécifique par nom, vous pouvez utiliser la console d'outils de développement de navigateur pour écrire le code suivant :
Xrm.Page.ui.controls.get(
function(ctrl,i){
if(ctrl.getControlType() == "subgrid")
console.log(ctrl.getName()
);
});
Les noms de tous les contrôles de sous-grille seront mentionnés dans le volet de sortie de la console. Ce script tire parti de la fonctionnalité qui permet de passer une fonctionnalité déléguée anonyme à la méthode get présentée dans les collections, ainsi que d'autres méthodes trouvées dans les objets pour appliquer un filtre par type et pour retourner le nom de l'objet, comme Xrm.Page.ui control.getControlType et Xrm.Page.ui control.getName utilisés dans cet exemple.
Important
Les formulairesDynamics 365 sont composés de plusieurs cadres. Pour que le code fonctionne dans la console, vous devez sélectionner le cadre droit. Pour les formulaires Web client de Dynamics 365, sélectionnez le cadre nommé ClientApiWrapper.aspx. Pour les nouveaux formulaires du centre de services interactifs, sélectionnez le cadre nommé engagementhub.aspx.
Voici d'autres exemples.
Afficher les noms de tous les attributs dans un formulaire avec leur type
Xrm.Page.getAttribute( function (att, i) { console.log(att.getName() + " : " + att.getAttributeType()) });
Afficher les valeurs d'options valides pour les attributs optionset
Xrm.Page.getAttribute( function (att, i) { if (att.getAttributeType() == "optionset") { console.log(att.getName()) var options = att.getOptions(); var optionsLength = options.length; for (var i = 0; i < optionsLength; i++) { var option = options[i]; console.log(" value: " + option.value + " Label: " + option.text) } } });
Voir aussi
Étendre Microsoft Dynamics 365 sur le client
Ouvre les formulaires, vues, boîtes de dialogue et rapports avec une URL
Référence rapide des scripts de formulaires
Utilisation de JavaScript avec Microsoft Dynamics 365
Bibliothèques JavaScript pour Microsoft Dynamics 365
Personnaliser les applications Microsoft Dynamics 365
Utiliser des événements de formulaire et de champ
Utiliser le modèle d’objet Xrm.Page
Écrire et déboguer des scripts pour Dynamics 365 pour téléphones et tablettes
Écrire des scripts pour les attributs composés
Écriture d'événements pour les flux de processus d'entreprise
Écriture de scripts pour les sous-grilles
Utiliser le contexte d’exécution et le pipeline d’événements de formulaire
Utiliser les contrôles IFRAME et de ressource Web dans un formulaire
Se familiariser avec l'API Web (JavaScript côté client) Microsoft Dynamics 365
Microsoft Dynamics 365
© 2017 Microsoft. Tous droits réservés. Copyright