Utiliser JavaScript avec Microsoft Dynamics CRM 2015

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015 fournissent de nombreuses opportunités pour utiliser JavaScript. Tous les JavaScript utilisés dans Microsoft Dynamics 365 sont ajoutés en créant des ressources Web JScript. Cette rubrique fournit des informations pour les développeurs qui utilisent JavaScript et inclut des liens vers les rubriques concernées dans SDK Microsoft Dynamics CRM et d’autres sources.

Contenu de la rubrique

Zones dans lesquelles vous pouvez utiliser JavaScript dans Microsoft Dynamics CRM

Utiliser jQuery

Écrire en JavaScript pour plusieurs navigateurs

Accéder aux données en utilisant JavaScript

Meilleures pratiques en matière de programmation JavaScript

Débogage de JavaScript dans Microsoft Dynamics CRM

Zones dans lesquelles vous pouvez utiliser JavaScript dans Microsoft Dynamics CRM

Vous pouvez utiliser JavaScript pour effectuer des actions dans des scripts de formulaire, la barre de commandes (ruban) et les ressources Web.

Scripts de formulaires

L’utilisation la plus courante de JavaScript dans Microsoft Dynamics 365 consiste à ajouter des fonctionnalités en tant que gestionnaires d’événements pour les événements de formulaire d’entité. Pour plus d'informations, voir Écrire du code pour les formulaires Microsoft Dynamics CRM 2015.

Commandes de la barre de commandes (ruban)

Lorsque vous personnalisez la barre de commande Microsoft Dynamics 365, vous pouvez configurer les commandes pour les contrôles que vous ajoutez. Ces commandes contiennent les règles qui vérifient si le contrôle est activé et la nature de l’action qui est effectuée lorsque le contrôle est utilisé. Pour plus d'informations, voir Personnaliser les commandes et le ruban.

Ressources Web

Microsoft Dynamics 365 fournit une entité détenue par une organisation qui stocke une représentation binaire d’un fichier accessible via une URL. Ce fichier est appelé une ressource Web. Il existe plusieurs types de ressources Web. Une ressource Web qui représente une bibliothèque JavaScript est appelée une ressource Web JScript. Vous pouvez utiliser une ressource Web (HTML) de page Web pour fournir une interface utilisateur avec des bibliothèques JavaScript incluses de la même manière que pour des fichiers sur un serveur Web. Ces fichiers font partie de Microsoft Dynamics 365, les utilisateurs qui y accèdent sont déjà authentifiés. Par conséquent, vous pouvez utiliser les services Web Microsoft Dynamics 365 sans devoir entrer de code pour authentifier l’utilisateur. Pour plus d'informations, voir Ressources Web pour Microsoft Dynamics CRM 2015.

Utiliser jQuery

  • Utiliser JQuery avec des ressources Web HTML
    Nous recommandons d’utiliser jQuery avec des ressources Web HTML pour fournir des interfaces utilisateur, car il s’agit d’une excellente bibliothèque multi-navigateur.

    Les ressources Web HTML vous permettent de contrôler les bibliothèques qui sont présentes, et il n’y a aucune restriction dans la gestion des éléments DOM. Sentez-vous libre d’utiliser jQuery dans vos ressources Web HTML.

  • Évitez d’utiliser jQuery avec des scripts de formulaire ou des commandes du ruban
    Nous ne vous recommandons pas d’utiliser jQuery dans les scripts de formulaire ni les commandes du ruban.

    Le plus grand atout de jQuery est qu’il permet une gestion facile des éléments DOM multi-navigateurs. Cette fonctionnalité est explicitement non prise en charge dans les scripts de formulaire et les commandes du ruban. Restreignez vos scripts pour utiliser les bibliothèques Xrm.Page et Xrm.Utility disponibles dans les scripts de formulaire et les commandes du ruban. Si vous décidez d’utiliser les fonctionnalités suivantes de jQuery qui sont utiles avec Microsoft Dynamics 365 et d’inclure la possibilité d’utiliser $.ajax, prenez en compte les éléments suivants :

    • Pour obtenir les meilleures performances, ne chargez pas jQuery dans la page si vous n’en avez pas besoin

    • L’utilisation de $.ajax pour exécuter des requêtes dans OData et le point de terminaison SOAP d’applications modernes, est prise en charge, mais il existe des solutions de remplacement. L’alternative à l’utilisation de $.ajax consiste à utiliser l’objet XMLHttpRequest des navigateurs directement. La méthode $.ajax jQuery est un simple wrapper pour cet objet. Si vous utilisez l’objet XMLHttpRequest natif directement, vous n’avez pas besoin de télécharger jQuery.

      Comparez les bibliothèques d’exemples SDK.REST.js et SDK.JQuery.js disponibles dans Exemple : créer, extraire, mettre à jour et supprimer le point de terminaison OData avec JavaScript et Exemple : créer, extraire, mettre à jour et supprimer le point de terminaison OData avec JavaScript et jQuery. Les deux permettent d’effectuer les mêmes opérations, mais SDK.REST.js n’a pas besoin de jQuery.

    • Chaque version de jQuery qui est chargée dans une page peut être une version différente. Différentes versions de jQuery ont différents comportements qui peuvent générer des problèmes lorsque plusieurs versions de jQuery sont chargées sur la même page. Il existe une technique permettant de pallier à cela, mais elle dépend de la modification de la bibliothèque jQuery et des autres bibliothèques en fonction de jQuery.Pour plus d'informations :jQuery et l’interface utilisateur jQuery avec Dynamics CRM 2011 et 2013, jQuery.noConflict()

      Notes

      Avec Mise à jour 1 de Microsoft Dynamics CRM Online 2015, les scripts de formulaire s'exécutent dans une étendue autre que l'instance de jQuery utilisée par l'application. Cela signifie qu'il est possible qu'aucune instance de jQuery ne soit disponible lorsque votre code tente d'utiliser jQuery.noConflict. Si vous devez utiliser jQuery, vous devez d'abord détecter si une instance de jQuery existe avant de tenter d'utiliser jQuery.noConflict.

Écrire en JavaScript pour plusieurs navigateurs

Comme vous ne connaissez pas quel navigateur est opérationnel, vous devez vous assurer que tous les scripts utilisés fonctionnent avec tous les navigateurs pris en charge. La plupart des différences importantes entre Internet Explorer et un autre navigateur concernent la gestion des éléments HTML et DOM XML. Comme la gestion des éléments DOM HTML n’est pas prise en charge, si la logique de script effectue uniquement des actions prises en charge et utilise l’API Xrm.Page, les modifications requises pour la prise en charge d’autres navigateurs peuvent être réduites. Utilisez Outil de validation de code personnalisé pour identifier le code qui est exécuté uniquement pour Internet Explorer.

Une bibliothèque multi-navigateur comme jQuery est une excellente solution pour développer des ressources Web mais ne doit pas être nécessaire pour les scripts de formulaire ou les commandes du ruban.Pour plus d'informations :Utiliser jQuery

Prendre en charge d’autres navigateurs

Comme Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015prend en charge les normes W3C, l’application est accessible avec n’importe quel navigateur moderne et à partir de n’importe quelle plateforme compatible avec ces normes. Cependant, Microsoft Dynamics 365 est uniquement testé avec un ensemble de navigateurs et de plateformes. Pour obtenir la liste des plateformes et des navigateurs pris en charge, voir TechNet : Navigateurs Web pris en charge.

Si vous utilisez un navigateur, ou la version d’un navigateur, qui n’est pas pris(e) en charge et que vous entrez uniquement le nom du serveur ou le nom du serveur avec l’organisation comme URL, vous serez redirigé(e) vers la page Microsoft Dynamics CRM pour téléphones. Les pages CRM pour téléphones peuvent fonctionner correctement dans la plupart des navigateurs, tels que les navigateurs utilisés par les appareils mobiles, avec des fonctionnalités limitées.

Contrôler la prise en charge des navigateurs de votre organisation ou solution

Bien que la création des sites Web publics nécessite que vous preniez en charge la plupart des navigateurs modernes, peu de sites Web publics prennent en charge les navigateurs déjà existants. Vous devez définir les navigateurs que vous prendrez en charge. Pour économiser en coûts de développement et de test, de nombreuses applications professionnelles requièrent que les utilisateurs utilisent des navigateurs spécifiques.

Si vous êtes un (e) ISV préparant des solutions pour une organisation qui utilise Microsoft Dynamics 365, vous devrez prévoir que l’organisation pourrait utiliser un des navigateurs que Mise à jour de Microsoft Dynamics CRM 2015 et de Microsoft Dynamics CRM Online 2015 prendra en charge. Toutefois, si vous préparez des personnalisations uniquement pour une organisation qui nécessite que les utilisateurs utilisent un navigateur spécifique, il n’y a aucune raison de développer et tester vos personnalisations pour les navigateurs que l’organisation ne prend pas en charge.

Les administrateurs système peuvent utiliser TechNet : Stratégies de restriction logicielle et/ou TechNet : AppLocker pour spécifier quelles applications peuvent être exécutées ou à installées sur un domaine.

Analyse XML

Dans de nombreux cas, vous devez effectuer une analyse XML à l’aide de JavaScript. Sachez qu’il existe d’importantes différences dans la façon d’effectuer l’analyse XML en utilisant Internet Explorer et d’autres navigateurs.Internet Explorer utilise Microsoft XML Core Services (MSXML) APIs pour interagir avec des objets de document XML. Ces APIs incluent un grand nombre d’extensions aux éléments W3C DOM qui ne sont pas disponibles dans les autres navigateurs. En voici deux exemples :

  • Deux méthodes courantes utilisées pour extraire les données d’un document XML utilisant Internet Explorer sont selectNodes et selectSingleNode. Les deux méthodes utilisent une expression XPath comme paramètre et renvoient un nœud ou une liste de nœuds. Pour d’autres navigateurs, utilisez la méthode evaluate lorsque vous souhaitez utiliser une expression XPath. Par ailleurs, vous pouvez refactoriser votre code pour naviguer dans la hiérarchie des documents et utiliser la méthode getElementsByTagNameNS.

  • Internet Explorer utilise la propriété texte pour accéder au texte d’un élément. D’autres navigateurs utilisent la propriété textContent.

Il existe plusieurs méthodes diverses pour traiter ces différences. L’approche que vous utilisez dépend de vos préférences et des besoins de votre code.

La bibliothèque SDK.MetaData.js disponible dans Exemple : récupérer les métadonnées de l’entité à l’aide de JavaScript utilise les fonctionnalités d’assistance. Cette bibliothèque utilise le point de terminaison SOAP pour que les ressources Web puissent récupérer les métadonnées d’entité et d’attribut. Cette bibliothèque dépend de l’analyser des données du document XML renvoyé en tant que XMLHttpRequest.responseXML. Dans cette bibliothèque, les fonctionnalités d’assistance suivantes ont été ajoutées et utilisées dans toutes les autres fonctionnalités de la bibliothèque.

Avec ces fonctionnalités d’assistance, le code existant qui a été écrit uniquement pour Internet Explorer a été mis à jour comme illustré :

Code Internet Explorer d’origine uniquement

Nouvelle fonctionnalité pour prendre en charge plusieurs navigateurs

node.selectNodes(XPathExpr);

SDK.MetaData._selectNodes(node,XpathExpr);

node.selectSingleNode(XPathExpr);

SDK.MetaData._selectSingleNode(node, XPathExpr);

node.selectSingleNode(ElementName).text;

SDK.MetaData._selectSingleNodeText(node, ElementName);

node.text

SDK.MetaData._getNodeText(node);

Accéder aux données en utilisant JavaScript

Vous pouvez utiliser deux services Web au sein de l’application pour accéder aux données à l’aide de JavaScript.

Point de terminaison OData (REST)

Précédemment appelé « point de terminaison REST pour les ressources Web ». Vous pouvez utiliser le point de terminaison OData pour exécuter des demandes HTTP à l’aide d’un service Web qui est basé sur un URI (Uniform Resource Identifier). Les services Web « RESTful » sont couramment utilisés car ils permettent de simplifier la programmation.

L’implémentation actuelle du point de terminaison OData est limitée pour créer, extraire, mettre à jour et supprimer des opérations.Exemple : créer, extraire, mettre à jour et supprimer le point de terminaison OData avec JavaScript comprend une bibliothèque SDK.REST.js qui fournit un exemple de bibliothèque réutilisable qui simplifie encore plus l’utilisation du point de terminaison OData.

Un des avantages du point de terminaison OData est qu’il implémente le protocole OData, qui fournit la manière d’interroger et de mettre à jour des données. Lorsque vous utilisez JavaScript, vous récupérez généralement des objets au format JSON (JavaScript Object Notation). Cela facilite l’utilisation des résultats. La principale limitation du point de terminaison OData est que vous ne pouvez pas utiliser la méthode IOrganizationService.Execute pour exécuter les messages (classes Request et Response). Utilisez le point de terminaison SOAP des ressources Web pour exécuter les messages.

Pour plus d'informations, voir Utiliser le point de terminaison OData avec les ressources Web.

Point de terminaison SOAP

Le point de terminaison SOAP vous permet d’exécuter des messages car le point de terminaison REST ne permet pas encore d’effectuer l’opération. Vous pouvez également appeler les méthodes Create, Retrieve, Update, Delete et RetrieveMultiple de ce service Web, mais leur utilisation n’est pas aussi facile que l’utilisation du point de terminaison REST.

Microsoft Dynamics 365 n’est pas une bibliothèque JavaScript qui facilite l’utilisation du point de terminaison SOAP. Lors de l’utilisation du point de terminaison SOAP, vous devez publier les demandes http contenant l’élément XML définissant la demande, puis vous devez analyser l’élément XML renvoyé dans la réponse.

L'exemple de bibliothèque Sdk.Soap.js autres exemples connexes fournissent un exemple de bibliothèque que vous pouvez utiliser avec le point de terminaison SOAP.

SDK fournit une solution Microsoft Visual C# intitulée SoapLogger qui vous permet de capturer l’élément XML envoyé et reçu lorsque vous effectuez des opérations avec les services Web Microsoft Dynamics 365 à l’aide de Visual C#. Avec ces informations, vous pouvez générer vos propres bibliothèques JavaScript.

Pour plus d'informations, voir Utilisez le point de terminaison SOAP d’application moderne pour les applications modernes avec des ressources Web.

Meilleures pratiques en matière de programmation JavaScript

Les sections suivantes décrivent les meilleures pratiques lorsque vous utilisez JavaScript avec Microsoft Dynamics 365.

Évitez d’utiliser les méthodes non compatibles.

Sur Internet, vous pouvez rechercher plusieurs exemples ou suggestions qui décrivent l’utilisation des méthodes non prises en charge. Ils peuvent inclure l’optimisation de la fonctionnalité interne non documentée pour les contrôles de page. Ces méthodes peuvent fonctionner mais parce qu’elles ne sont pas prises en charge, vous ne pourrez envisager qu’elles continuent de fonctionner dans les futures versions de Microsoft Dynamics 365.

Utilisez Outil de validation de code personnalisé pour identifier le code qui utilise les méthodes non prises en charge.

Utiliser une bibliothèque JavaScript multi-navigateur pour les interfaces utilisateur de ressources Web HTML

Une bibliothèque JavaScript multi-navigateur, comme jQuery, fournit de nombreux avantages lors du développement de ressources Web HTML qui doivent prendre en charge plusieurs navigateurs. Les bibliothèques JavaScript comme jQuery fournissent une expérience de développement unifiée pour tous les navigateurs pris en charge par Microsoft Dynamics 365. Ces fonctionnalités sont appropriées lorsque vous utilisez des ressources Web HTML pour fournir des interfaces utilisateur. Les bibliothèques JavaScript comme jQuery fournissent des méthodes cohérentes permettant d'interagir avec le DOM (Document Object Model).

Ne pas utiliser jQuery pour les scripts ou commandes de formulaire

Nous ne vous recommandons la prise en charge de jQuery pour les pages de l’application. Cela inclut les scripts de formulaire et les commandes du ruban.Pour plus d'informations :Utiliser jQuery.

Identifier les limitations pour les bibliothèques CDN (Content Delivery Network)

Les bibliothèques CDN JavaScript fournissent de nombreux avantages pour les sites Web publiques. Parce que ces bibliothèques sont hébergées sur Internet, il est inutile de créer des ressources Web contenant le contenu des bibliothèques. Pour Microsoft Dynamics 365, vous devez prendre en compte les éléments suivants avant d’utiliser une bibliothèque CDN JavaScript.

  • Les utilisateurs du client Microsoft Dynamics CRM pour Microsoft Office Outlook avec accès hors connexion ont la possibilité de travailler sans aucune connexion Internet, en mode hors connexion. Si vos bibliothèques JavaScript dépendent de votre connexion Internet, votre code échouera.

  • Certaines organisations peuvent restreindre l’accès Internet à leurs employés. À moins de configurer le réseau pour autoriser l’accès aux sites de bibliothèques CDN, votre code peut échouer pour ces organisations.

L’alternative à utiliser les bibliothèques CDN consiste à créer une ressource Web (JavaScript) de script avec le contenu de la bibliothèque. Comme les ressources Web sont des entités appartenant à l’organisation, elles sont synchronisées lorsqu’un utilisateur Microsoft Dynamics CRM pour Outlook avec accès hors connexion passe en mode hors connexion. Parce que ces ressources Web font désormais partie de l’application, elles ne sont pas bloquées si une organisation limite l’accès à Internet.

Utiliser la détection de fonctionnalités lors de l’écriture de fonctions pour plusieurs navigateurs

Même si vous utilisez une bibliothèque multi-navigateur comme jQuery, vous devez tenir compte des différences entre les navigateurs. Vous pouvez généralement détecter quel navigateur est utilisé lors de l’interrogation de la propriété navigator.useragent. Ce champ est appelé détection de navigateur. Dans la plupart des cas, la détection de navigateur n’est pas la meilleure stratégie car elle ne peut pas prendre en compte la dernière version des fonctionnalités d’un navigateur. Par ailleurs, certains navigateurs offrent la possibilité de modifier la propriété navigation.useragent pour apparaître sous la forme d’un autre navigateur.

La fonctionnalité de détection est la solution recommandée. En détectant les fonctionnalités disponibles, vous pouvez créer des chemins d’accès au code pour les navigateurs compatibles sans savoir exactement quel navigateur est utilisé. Pour plus d’informations sur la détection de fonctionnalités, voir la section relative au mode de détection des fonctionnalités au lieu des navigateurs.

Ne pas accéder aux éléments DOM

Les développeurs JavaScript ont l’habitude d’interagir avec les éléments DOM (Document Object Model) au sein du code. Vous pouvez utiliser la méthode window.getElementById ou la bibliothèque jQuery. Vous êtes libre d’utiliser ces techniques dans vos ressources Web HTML, mais elles ne seront pas prises en charge pour accéder aux éléments des pages d’applications ou des formulaires d’entités Microsoft Dynamics 365. Par contre, l’accès aux éléments de formulaire d’entité sont exposés via le modèle d’objet Xrm.Page. L’équipe de développement Microsoft Dynamics 365 se réserve le droit de modifier le mode de composition des pages, notamment les valeurs ID des éléments, donc l’utilisation du modèle d’objet Xrm.Page protège votre code des modifications d’implémentation des pages. Pour plus d'informations, voir Utiliser le modèle d’objet Xrm.Page.

Définir des noms uniques pour les fonctionnalités JavaScript

Lorsque vous êtes seul(e) à développer une page HTML, vous pouvez aisément gérer les noms des fonctions JavaScript utilisées. Dans Microsoft Dynamics 365, d’autres solutions peuvent ajouter des fonctions JavaScript à la page sur laquelle votre fonction est utilisée.

Si deux fonctions JavaScript d’une page ont le même nom, la première fonction définie est remplacée par la seconde. Pour cette raison, veillez à définir des noms uniques pour vos fonctions JavaScript. Pour plus d'informations, voir Création de bibliothèques de script.

Utiliser des méthodes d’accès aux données asynchrones

Si vous accédez aux données à l’aide des services Web Microsoft Dynamics 365 qui utilisent le point de terminaison REST ou SOAP pour des ressources Web, utilisez toujours XMLHttpRequest qui est configuré pour une exécution asynchrone. La raison est que le navigateur fonctionne sur un thread unique. Si ce thread est en cours d’utilisation pour l’exécution d’un long processus de façon synchrone, le navigateur arrêtera de répondre.

Débogage de JavaScript dans Microsoft Dynamics CRM

Chaque navigateur fournit un certain type d'extension de débogage.Internet Explorer fournit les outils de développement nécessaires pour déboguer des scripts dans Microsoft Dynamics 365. Les outils de développement Internet Explorer peuvent être ouverts en appuyant sur F12 lors de la consultation d’une page avec Internet Explorer. Pour plus d'informations, voir Utiliser les outils de développement F12.

Pour Google Chrome, appuyez sur F12 pour ouvrir les outils de développement.Firebug est une extension de navigateur populaire pour le développement Web à l’aide de Mozilla Firefox. Pour Apple Safari, vous devez choisir Développez l’afficher le menu de la barre de menus dans Préférences avancées. Vous pouvez choisir Afficher Web Inspector dans le menu Développer.

Vous pouvez également utiliser Microsoft Visual Studio. Pour plus d'informations, voir la section relative au mode de débogage de JScript dans Microsoft Dynamics CRM 2011.

Lorsque vous utilisez les bibliothèques JavaScript dans Microsoft Dynamics 365, vos bibliothèques sont ajoutées à une page qui inclut de nombreuses bibliothèques. Il peut être parfois difficile d’isoler votre bibliothèque spécifique dans l’environnement de débogage. Lors de l’utilisation des outils de débogage dans Internet Explorer, sous l’onglet Script, développez les scripts disponibles et recherchez celui portant le nom qui correspond au nom de votre ressource Web JavaScript, telle que la ressource Web new_debugging_example_script.js indiquée ci-dessous.

Débogage de JavaScript

Les outils de débogage des différents navigateurs ont des fonctionnalités similaires. Une fois que vous avez trouvé votre bibliothèque, vous pouvez définir un point d’arrêt et recréer l’événement qui permet l’exécution de votre code.

Écrire des messages sur la console

L’utilisation de la méthode window.alert lors du débogage JavaScript est toujours un moyen courant de résoudre les problèmes liés au code dans l’application. Une fois que tous les navigateurs modernes fournissent un accès rapide aux outils de débogage, ce qui n’est pas la meilleure pratique, surtout lorsque d’autres peuvent utiliser l’application que vous déboguez.

Envisagez plutôt d’écrire vos messages sur la console. Voici une petite fonction que vous pouvez ajouter aux bibliothèques que vous pouvez utiliser pour envoyer des messages à afficher sur la console, lors de son ouverture.

function writeToConsole(message)
{
 if (typeof console != 'undefined') {
  console.log(message);
 }
}

Contrairement à l’utilisation de la méthode d’alerte, si vous oubliez de supprimer du code qui utilise cette fonction, les utilisateurs de l’application ne verront pas vos messages.

Voir aussi

Écrire des extensions d’application cliente
Utiliser des données du service Web dans les ressources Web (point de terminaison OData et SOAP d’applications modernes)
Écrire des applications et des extensions de serveur
Écrire du code pour les formulaires Microsoft Dynamics CRM 2015
Personnaliser les commandes et le ruban
Ressources Web pour Microsoft Dynamics CRM 2015
Utiliser le point de terminaison OData avec les ressources Web
Utilisez le point de terminaison SOAP d’application moderne pour les applications modernes avec des ressources Web
Utiliser le modèle d’objet Xrm.Page

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