Rechercher dans ce blog
Affichage des articles dont le libellé est Personnalisation. Afficher tous les articles
Affichage des articles dont le libellé est Personnalisation. Afficher tous les articles
mercredi 11 septembre 2013
Définir la page d'accueil
Dans CRM 2013, les utilisateurs ont la possibilité de choisir leur page d’accueil. Ouvrir le menu par un click sur le boulon à coté du nom. Puis sélectionner Options.
mardi 10 septembre 2013
samedi 9 mars 2013
Affichage des groupes de liens Marketing et Outils dans l'Espace de travail
Dans le volet Espace de travail, les groupes de liens Marketing et Planification ne sont plus visibles par défaut. Le lien Importations n'est plus dans le groupe Mes tâches.
jeudi 10 janvier 2013
Techdays 2013 : Sessions Dynamics CRM
Sessions concernant Dynamics CRM
Mercredi
11h00-12h00 : Industrialisation des développements CRM 2011
Tanguy Touzard (MVP Javista), Philippe Laloum (Microsoft), Aymeric Mouillé (Microsoft)
Jeudi
11h00-12h00 : Solutions Email Marketing et Mobilité dans Dynamics CRM
Tanguy Touzard (MVP Javista), Imad Hajjar (Javista)
11h00-12h00 : Démo des nouvelles versions Dynamics CRM, l'utilisateur au centre des innovations
13h00-14h00 : La haute disponibilité avec Dynamics CRM 2011 et SQL Server 2012
Lassaad Attig (Microsoft), Karim Benzaghou (Microsoft)
13h00-14h00 : Lync + Skype + CRM = Centre de Contact UC avec témoignage client
16h00-17h00 : Comment orienter l'entreprise autour du client et générer du business ?
Découvrez l'association Microsoft Dynamics CRM et l'offre CCM Steria
jeudi 4 octobre 2012
Add-on gratuit : Universal Search
Sonoma Partners fournit un add-on gratuit permettant de faire des recherches sur plusieurs entités à la fois.
mercredi 4 juillet 2012
Message de connexion : Erreur de licence
Lorsqu'un utilisateur tente de se connecter au CRM et obtient le message ci-avant, le profil de cet utilisateur ne possède pas de rôle. Il faut alors lui associer un rôle.
Avec le profil Administrateur, sélectionner le profil de l'utilisateur. Dans la liste de gauche, choisir Rôles de sécurité. Cliquer sur Gérer les rôles.
Sélectionner le rôle correspondant à l'utilisateur puis valider en cliquant sur le bouton OK.
L'utilisateur peut maintenant se connecter au CRM.
LinkedIn pour Dynamics CRM
LinkedIn fournit un guide d'installation pour sa solution Linked for Microsoft Dynamics CRM et paramétrer le formulaire "Intégration LinkedIn" au niveau des entités.
Le lien a été ajouté à la liste Outils CRM.
Le lien a été ajouté à la liste Outils CRM.
lundi 4 juin 2012
Résoudre les problèmes de script suite à la prochaine mise à jour
Resolve breaking script Issues when upgrading to the next release of Microsoft Dynamics CRM
Pour supporter les différents navigateurs, beaucoup de changements internes ont été réalisés.
Voici des exemples de modification de script à faire:
Pour supporter les différents navigateurs, beaucoup de changements internes ont été réalisés.
Voici des exemples de modification de script à faire:
- getElementById
- Problèmes avec crmForm:
- crmForm.SetFieldReqLevel
- crmForm.SubmitCrmForm
- crmForm.detachCloseAlert
- crmForm.IsValid
- crmForm.
.Clear - Problèmes avec crmGrid
- crmGrid.innerGrid
- crmGrid.GetParameter
- Problèmes avec le contrôle Lookup
- LookupControl.AddParam
- LookupControl.AddItems
samedi 14 janvier 2012
jeudi 22 décembre 2011
Création d'un bouton dans un formulaire
Dans cette exemple, nous allons remplacer le champ Salutations du formulaire Contact par un bouton.
Créer une Web Resource nommée new_bouton de type jscript contenant le code suivant.
Dans le formulaire Contact, ajouter l'appel de la fonction ConvertToButton sur le OnLoad avec comme paramètres : 'salutation','ButtonText','100px','FunctionName','Button Label'.
Après publication des modifications, nous obtenons l'écran suivant sur un contact.
Créer une Web Resource nommée new_bouton de type jscript contenant le code suivant.
/* sample */ /* 'salutation','ButtonText','100px','functionName','Button Label' */ function ConvertToButton(fieldname, buttontext, buttonwidth,clickevent, title){ /* check if object exists; else return */ if (document.getElementById(fieldname) == null) { return; } functiontocall=clickevent; crmForm.all[fieldname].DataValue = buttontext; crmForm.all[fieldname].readOnly = true; crmForm.all[fieldname].style.borderRight="#3366cc 1px solid"; crmForm.all[fieldname].style.paddingRight="5px"; crmForm.all[fieldname].style.borderTop="#3366cc 1px solid"; crmForm.all[fieldname].style.paddingLeft="5px"; crmForm.all[fieldname].style.fontSize="11px"; crmForm.all[fieldname].style.backgroundImage="url(/_imgs/btn_rest.gif)"; crmForm.all[fieldname].style.borderLeft="#3366cc 1px solid"; crmForm.all[fieldname].style.width=buttonwidth; crmForm.all[fieldname].style.cursor="hand"; crmForm.all[fieldname].style.lineHeight="18px"; crmForm.all[fieldname].style.borderBottom="#3366cc 1px solid"; crmForm.all[fieldname].style.backgroundRepeat="repeat-x"; crmForm.all[fieldname].style.fontFamily="Tahoma"; crmForm.all[fieldname].style.height="20px"; crmForm.all[fieldname].style.backgroundColor="#cee7ff"; crmForm.all[fieldname].style.textAlign="center"; crmForm.all[fieldname].style.overflow="hidden"; crmForm.all[fieldname].attachEvent("onmousedown",push_button); crmForm.all[fieldname].attachEvent("onmouseup",release_button); crmForm.all[fieldname].attachEvent("onclick",functiontocall); crmForm.all[fieldname].style.lineHeight="14px"; crmForm.all[fieldname+'_c'].style.visibility = 'hidden'; crmForm.all[fieldname].title=title; window.focus(); function push_button(){ window.event.srcElement.style.borderWidth="2px"; window.event.srcElement.style.borderStyle="groove ridge ridge groove"; window.event.srcElement.style.borderColor="#3366cc #4080f0 #4080f0 #3366cc"; } function release_button(){ window.event.srcElement.style.border="1px solid #3366cc"; } } /* now the definition of the function to call on button click */ function FunctionName(){ alert("coucou"); }
Dans le formulaire Contact, ajouter l'appel de la fonction ConvertToButton sur le OnLoad avec comme paramètres : 'salutation','ButtonText','100px','FunctionName','Button Label'.
Après publication des modifications, nous obtenons l'écran suivant sur un contact.
vendredi 25 novembre 2011
Affichage de plus de 4 zones de liste
A partir de 4 zones de liste (ou de graphique associé une liste), le message "Pour charger les enregistrements ****, cliquez ici".
Si on souhaite afficher toutes les listes, charger le code suivant dans le Unload de l'entité.
Charger au préalable le fichier jquery1.4.1.min.js
Toutes les listes sont maintenant chargées.
Si on souhaite afficher toutes les listes, charger le code suivant dans le Unload de l'entité.
Charger au préalable le fichier jquery1.4.1.min.js
/* Sub-Grid Load */ function SubGridLoad () { $(document).ready(function(){ var links = $("a.ms-crm-List-LoadOnDemand") for (i=0;i<= links.length;i++){ try{links[i].click();} catch(e){} } }); }
Toutes les listes sont maintenant chargées.
vendredi 4 novembre 2011
Ajout d'un groupe de navigation dans un formulaire
Voici la version pour CRM 2011 de mon précédent article http://dynamicscrmcustomization.blogspot.com/2011/10/ajouter-un-groupe-de-relation-dans-un.html
D'après l'article Change Form Navigation du SDK :
La zone de navigation est divisée en cinq zone : Éléments Communs, Ventes, Service, Marketing et Processus. Dans l'éditeur de formulaire, tu peux changer les éléments des groupes et aussi les noms des groupes. Tu peux obtenir le même résultat en utilisant FormXml, en localisant l'élément .
Tu ne peux pas ajouter de nouveau groupe de navigation ou en supprimer. Si un groupe de navigation ne contient pas d'éléments, il n'est pas affiché.
Nous allons créés un nouveau groupe de navigation nommé Demo dans le formulaire de Compte.
Créer d'abord une ressource jscript contenant le code suivant :
Lancer la fonction sur le OnLoad de l'entité Compte.
Le nouveau groupe a bien les mêmes fonctionnalités que les groupes standards.
D'après l'article Change Form Navigation du SDK :
La zone de navigation est divisée en cinq zone : Éléments Communs, Ventes, Service, Marketing et Processus. Dans l'éditeur de formulaire, tu peux changer les éléments des groupes et aussi les noms des groupes. Tu peux obtenir le même résultat en utilisant FormXml, en localisant l'élément
Tu ne peux pas ajouter de nouveau groupe de navigation ou en supprimer. Si un groupe de navigation ne contient pas d'éléments, il n'est pas affiché.
Nous allons créés un nouveau groupe de navigation nommé Demo dans le formulaire de Compte.
Créer d'abord une ressource jscript contenant le code suivant :
// ===================================================== // JsNavBar v1.0 - 11/04/2011 (CRM 2011) // ===================================================== JsNavBar = function(displayName) { var navBarDisplayName = displayName; var navBarItemArray = new Array(); JsNavBar.prototype.AddNavBarItem = function(navBarItemId) { navBarItemArray[navBarItemArray.length] = document.getElementById(navBarItemId);}; JsNavBar.prototype.Show = function() { var crmNavBar = document.getElementById("crmFormNavSubareas"); if (crmNavBar != null) { var navBarItems = document.createElement("UL"); navBarItems.style.display = "inline"; navBarItems.className = "ms-crm-Nav-Group-Subareas"; for (i = 0; i < navBarItemArray.length; i++) { if (navBarItemArray[i] != null) { navBarItems.appendChild(navBarItemArray[i].parentNode); } } if (navBarItems.hasChildNodes()) { var newNavBar = document.createElement("LI"); newNavBar.className = "ms-crm-Nav-Group"; newNavBar.innerHTML = 'Ajouter aussi la fonction d'appel :' + navBarDisplayName + ' '; newNavBar.appendChild(navBarItems); if (crmNavBar.childNodes.length > 1) { var secondNav = crmNavBar.childNodes[1]; crmNavBar.insertBefore(newNavBar, secondNav); } else { crmNavBar.appendChild(newNavBar); } } } }; };
AjouteNav = function(){ var demoNavBar = new JsNavBar("Demo"); demoNavBar.AddNavBarItem("navContacts"); demoNavBar.AddNavBarItem("navRelationships"); demoNavBar.Show(); };
Lancer la fonction sur le OnLoad de l'entité Compte.
Le nouveau groupe a bien les mêmes fonctionnalités que les groupes standards.
lundi 31 octobre 2011
Ajout d'une zone de navigation
Dans cet article, nous allons ajouter une zone de navigation.
Il faut créer une solution avec l'entité SiteMap. Puis exporter cette solution en non managée.
Ajouter ensuite la section comme indiquer ci-dessous.
L'exemple est issu du Kit de développement http://msdn.microsoft.com/en-us/library/gg327933.aspx
Mettre à jour la solution puis l'import. Faire un F5 pour voir la nouvelle zone de navigation.
Il faut créer une solution avec l'entité SiteMap. Puis exporter cette solution en non managée.
Ajouter ensuite la section comme indiquer ci-dessous.
L'exemple est issu du Kit de développement http://msdn.microsoft.com/en-us/library/gg327933.aspx
Mettre à jour la solution puis l'import. Faire un F5 pour voir la nouvelle zone de navigation.
samedi 29 octobre 2011
Ajouter un ToolTip à un champ de saisi
Ce code permet d'ajouter un ToolTip à un champ de saisi, comme pour informer l'utilisateur du format du numéro de téléphone.
L'exemple fourni affiche un ToolTip au niveau du Téléphone principal d'un compte.
Ajouter ce code dans le OnLoad d'une entité.
L'exemple fourni affiche un ToolTip au niveau du Téléphone principal d'un compte.
Ajouter ce code dans le OnLoad d'une entité.
function AddToolTip(controlId, toolTip){ var ctl = document.getElementById( controlId ); ctl.ToolTip = toolTip; ctl.attachEvent( "onfocus" , ShowToolTip ); } function ShowToolTip(){ var ctl = event.srcElement; TooltipPopup = window.createPopup(); var ToolTipHTML = "" + ctl.ToolTip + ""; TooltipPopup.document.body.innerHTML = ToolTipHTML; var Pos = GetControlPosition ( ctl ); TooltipPopup.show( Pos.X + 8 , Pos.Y + 2 , 230 , 19 , null ); } function GetControlPosition( ctl ){ var Pos = new Object(); var ctlHeight = ctl.offsetHeight; var iY = 0, iX = 0; while( ctl != null ) { iY += ctl.offsetTop; iX += ctl.offsetLeft; ctl = ctl.offsetParent; } Pos.X = iX + screenLeft; Pos.Y = iY + screenTop + ctlHeight; return Pos;} AddToolTip('telephone1', 'Le format est : \"+33 01 23 45 67 89\"');
Ajouter un groupe de relation dans un formulaire
En standard, le CRM offre que quatre groupes de relation dans un formulaire : Détails, Ventes, Service et Marketing.
Le code suivant permet d'ajouter un nouveau groupe de relation. Il doit être ajouté dans l'événement OnLoad d'une entité.
Le code suivant permet d'ajouter un nouveau groupe de relation. Il doit être ajouté dans l'événement OnLoad d'une entité.
// ===================================================== // JsNavBar v1.0 - 10/30/2009 (CRM 4.0) // ===================================================== JsNavBar = function(displayName) { var navBarDisplayName = displayName; var navBarItemArray = new Array(); JsNavBar.prototype.AddNavBarItem = function(navBarItemId) { navBarItemArray[navBarItemArray.length] = document.getElementById(navBarItemId);}; JsNavBar.prototype.Show = function() { var crmNavBar = document.getElementById("crmNavBar"); if (crmNavBar != null) { var navBarItems = document.createElement("UL"); navBarItems.style.display = "inline"; navBarItems.className = "ms-crm-Nav-Group-Subareas"; for (i = 0; i < navBarItemArray.length; i++) { if (navBarItemArray[i] != null) { navBarItems.appendChild(navBarItemArray[i]).parentNode; } } if (navBarItems.hasChildNodes()) { var newNavBar = document.createElement("LI"); newNavBar.className = "ms-crm-Nav-Group"; newNavBar.innerHTML = 'L'appel de la fonction pour la création et l'ajout de groupe.' + navBarDisplayName + ': '; newNavBar.appendChild(navBarItems); if (crmNavBar.childNodes.length > 1) { var secondNav = crmNavBar.childNodes[1]; crmNavBar.insertBefore(newNavBar, secondNav); } else { crmNavBar.appendChild(newNavBar); } } } }; };
var demoNavBar = new JsNavBar("Demo"); demoNavBar.AddNavBarItem("navSubAct"); demoNavBar.AddNavBarItem("navRelationships"); demoNavBar.Show();Nous obtenons le groupe nommé Demo contenant les deux relations ajoutées.
Cacher le bouton Télécopie
Ce message explique comment cacher le bouton Télécopie dans le menu Nouveau des activités.
Créer une solution avec comme éléments : Activité et Rubans de l'application.
Ajouter dans le fichier customizations.xml, la partie
Après modification de la solution, l'importer. Le bouton Télécopie n'est plus là.
lundi 15 août 2011
Changer la couleur et la police du texte de l'intitulé d'un attribut
Comme exemple, nous allons changer la couleur et la police de l'intitulé du champ Téléphone principal de l'entité Compte.
document.all.telephone1_c.style.color = 'red'; document.all.telephone1_c.style.fontWeight = 'bold';
Nous obtenons le formulaire pour l'entité Compte.
samedi 6 août 2011
Développer avec le Framework xRM : conseils, astuces et bonnes pratiques
http://www.xrmvirtual.com/events/tips_and_tricks_CRM2011
Se former sur Dynamics CRM
- Planification
- Files d'attente
- Listes marketing
- Réorientation des entités
- Gestion de la sécurité
- Les utilisateurs peuvent avoir des fonctionnalités complétement différentes
- Gestion des doublons
Les projets ne sont pas tous xRM.
Penser xRM
-Déterminer le x dans ton xRM.
-Le x est normalement le nœud central de ton application
Bonnes pratiques
- Éviter d'utiliser du JavaScript qui appelle le serveur.
- Utiliser les Plug-ins PreCreate et PreUpdate.
- Modifier une entité sur le déclenchement de Plug-ins.
- Renseigner ou valider les champs à travers des Plug-ins.
- Établir des projets standards.
- Inclure des commentaires dans le code des Plug-ins.
- Ne pas sur dimensionner.
- Utiliser des messages d'exception personnalisés pour la validation.
- Utiliser des Plug-ins Asynchrones pour lancer des longs traitements.
- Enregistrer les résultats du Plug-in dans une entité.
- Générer les classes des entités avec CRMSVCUtil.
- Étendre les classes des entités pour un code réutilisable.
- Faire une bonne gestion du cache des Plug-ins.
Nettoyer le cache
- Créer des relations par ID non par objet
A la place de Account.PrimaryContact=ContactEntity utiliser Account.PrimaryContactId=Contactentity.ContactID
- Suivre les changements de personnalisation
- Planifier à l'avance
- Créer des checklists du déploiement
- Utiliser une seule organisation de développement pour le déploiement
- Enregistrer les Plug-ins dans la base de données.
- Enregistrer les Dlls dans le GAC.
- Placer tous les points de terminaisons et les fichiers de configuration Async.
Non supporté
- Documenter les modifications non supportées
- Les niveaux : Modification d'interface, changement de code
- Important pour les mises à jour
Débogage du CRM
- Visual Studio Remote Debugger
- Activer les fichiers de trace avec CRMDiagTool
Se former sur Dynamics CRM
- Planification
- Files d'attente
- Listes marketing
- Réorientation des entités
- Gestion de la sécurité
- Les utilisateurs peuvent avoir des fonctionnalités complétement différentes
- Gestion des doublons
Les projets ne sont pas tous xRM.
Penser xRM
-Déterminer le x dans ton xRM.
-Le x est normalement le nœud central de ton application
Bonnes pratiques
- Éviter d'utiliser du JavaScript qui appelle le serveur.
- Utiliser les Plug-ins PreCreate et PreUpdate.
- Modifier une entité sur le déclenchement de Plug-ins.
- Renseigner ou valider les champs à travers des Plug-ins.
- Établir des projets standards.
- Inclure des commentaires dans le code des Plug-ins.
- Ne pas sur dimensionner.
- Utiliser des messages d'exception personnalisés pour la validation.
- Utiliser des Plug-ins Asynchrones pour lancer des longs traitements.
- Enregistrer les résultats du Plug-in dans une entité.
- Générer les classes des entités avec CRMSVCUtil.
- Étendre les classes des entités pour un code réutilisable.
- Faire une bonne gestion du cache des Plug-ins.
Nettoyer le cache
public static void ClearCache(string entityName) { const string format ="adxdependency:crm:entity:{0}"; var dependency = string.Format(format,entityName).ToLower(); var cache = Microsoft.Xrm.Client;Caching.CacheManager.GetBaseCache(); cache.Remove(dependency); }
- Créer des relations par ID non par objet
A la place de Account.PrimaryContact=ContactEntity utiliser Account.PrimaryContactId=Contactentity.ContactID
- Suivre les changements de personnalisation
- Planifier à l'avance
- Créer des checklists du déploiement
- Utiliser une seule organisation de développement pour le déploiement
- Enregistrer les Plug-ins dans la base de données.
- Enregistrer les Dlls dans le GAC.
- Placer tous les points de terminaisons et les fichiers de configuration Async.
Non supporté
- Documenter les modifications non supportées
- Les niveaux : Modification d'interface, changement de code
- Important pour les mises à jour
Débogage du CRM
- Visual Studio Remote Debugger
- Activer les fichiers de trace avec CRMDiagTool
dimanche 31 juillet 2011
Accent dans les menus personnalisés
Pour créer un menu personnalisé, nous modifions le fichier ISV.config.
Si le titre du menu contient un accent, le caractère accentué ne sera pas affiché dans l'interface du CRM.
Pour résoudre ce problème, il faut utiliser le code numérique du caractère.
Voici une liste non exhaustive des caractères accentués avec leur code numérique.
Lien avec Twitter - Partie 3
Dans cet article, nous allons utiliser le gadget de profil pour afficher les tweets du profil portant le même nom que le compte sélectionné.
Le paramétrage du gadget se trouve : http://twitter.com/about/resources/widgets/widget_profile
Tout d'abord, créons une page HTML avec le code suivant :
Le paramétrage du gadget se trouve : http://twitter.com/about/resources/widgets/widget_profile
Tout d'abord, créons une page HTML avec le code suivant :
Dans l'onglet Twitter, nous obtenons les tweets du profil Microsoft.
Pour l'entreprise Contoso :
Inscription à :
Articles (Atom)