Écrire du code pour les formulaires Microsoft Dynamics CRM 2015

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

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

  • Automatisation

  • Amélioration et application de processus

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.

Avec Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015, 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 :Modèle de sécurité de Microsoft Dynamics CRM 2015

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é

Avec Mise à jour 1 de Microsoft Dynamics CRM Online 2015, il existe un nouveau paramètre système : Utiliser le rendu de formulaire hérité. Avec cette version, le rendu du formulaire 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 cette version, 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 campagne

Incident

Concurrent

Contact

Contrat

Ligne de contrat

Courrier électronique

Droit

Modèle de droit

Télécopie

Facture

Prospect

Lettre

Liste marketing

Opportunité

Produit d’opportunité

Commande

Appel téléphonique

Poste

Élément tarifaire

Produit

Association de produit

Relation de produit

File d’attente

Campagne rapide

Devis

Rendez-vous périodique

Documentation commerciale

Contrat SLA

Instance de l'indicateur de performance clé du contrat SLA

Activité sociale

Profil social

Tâche

Équipe

Utilisateur

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

Xrm.Page.context.client.getClient

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é

Groupe d’unités

Entités activées pour CRM pour tablettes

Seules les entités système et les entités personnalisées sélectionnées peuvent être affichées avec Microsoft Dynamics CRM pour tablettes. Les entités système suivantes peuvent avoir des formulaires modifiables dans CRM 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 CRM 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 CRM 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 CRM pour tablettes.

Outils de développement

Votre expérience en matière d'écriture en JavaScript pour les formulaires CRM 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 Mise à jour 1 de CRM Online 2015, sélectionnez le cadre nommé ClientApiWrapper.aspx. Pour les versions antérieures, utilisez le cadre nommé main.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

Écrire des extensions d’application cliente
Ouvre les formulaires, vues, boîtes de dialogue et rapports avec une URL
Référence rapide des scripts de formulaires
Utiliser JavaScript avec Microsoft Dynamics CRM 2015
Bibliothèques JavaScript pour Microsoft Dynamics CRM 2015
Guide destiné aux développeurs chargés de la personnalisation de Microsoft Dynamics CRM 2015
Utiliser des événements de formulaire et de champ
Utiliser le modèle d’objet Xrm.Page
Écrire et déboguer des scripts pour CRM pour 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
Utiliser le point de terminaison OData avec les ressources Web Ajax et JScript

© 2017 Microsoft. Tous droits réservés. Copyright