Rechercher dans ce blog

samedi 14 mai 2011

Modifier le filtre de la recherche rapide

La recherche rapide pour certaines entités n'est pas bien paramétrée.
Dans le cas suivant, nous avons deux incidents, un résolu et un actif.

lundi 9 mai 2011

Correctif cumulatif 17 pour Microsoft Dynamics CRM 4.0

Version: 04.00.7333.3414
  • Recherche rapide
  • Recherche avançée
  • Gestion des Emails dans un rendez-vous
  • Sélection des heures dans une tâche
  • Déplacement d'un utilisateur vers une division
  • Code personnalisé pour définir un Email
  • Export Excel en mode hors connexion
  • Fonctionnement avec Internet Explorer 9 avec une campagne rapide

lundi 2 mai 2011

Créer une liste personnalisée d'utilisateurs dans le calendrier de service

Par défaut, dans le calendrier de service, la liste des utilisateurs est celle des utilisateurs activés.




L'exemple permet d'afficher seulement les commerciaux.
Les commerciaux sont les utilisateurs qui possèdent le rôle Commercial.



Dans la Zone Paramètres, sélectionner Personnalisation, puis Personnaliser les entités, cliquer sur la ligne 'Utilisateur'.
Sélectionner Formulaires et vues pour afficher la liste des vues.


Créer une nouvelle vue nommée Commerciaux.


Modifier le critère de filtre pour sélectionner seulement les utilisateurs possédant le rôle Commercial.

Enregistrer et publier l'entité.

Au niveau du Calendrier de service, nous avons maintenant la vue Commerciaux sur les Utilisateurs.

En sélectionnant cette vue, nous visualisons le planning des commerciaux. 

dimanche 1 mai 2011

Dynamics CRM intégré à Microsoft Office Word 2010

Voici la version CRM2011 intégré à Microsoft Office Word 2011.
C'est la suite du message Dynamics CRM intégré à Microsoft Office Word 2007.

Créer un nouveau projet en choisissant le modèle "Complément Word 2010".
  
Ajouter les références suivantes:
  • microsoft.crm.sdk.proxy.dll
  • microsoft.xrm.client.dll
  • microsoft.xrm.sdk.dll

Le résultat :




Voici les deux fonctions principales utilisées :
Les fonctions utilisent LINQ pour CRM.

Fonction de recherche des contacts :
private void prvLectureContacts()
        {
          CrmConnection connection = new CrmConnection("Crm");
            OrganizationService loService = new OrganizationService(connection);
            ServiceContext loServiceContext = new ServiceContext(loService);

            WhoAmIRequest loRequest = new WhoAmIRequest();
            WhoAmIResponse loResponse =  (WhoAmIResponse) loService.Execute(loRequest);  

            var loRequet = from c in loServiceContext.ContactSet
                            where c.FullName ==  txtRecherche.Text
                            && c.OwnerId.Id  ==  loResponse.UserId  
                            select c;

            cbResultat.Items.AddRange(loRequet.ToArray());
            cbResultat.DisplayMember = "fullname";
        }

Fonction d'insertion de l'adresse du contact:
private void buInsererAdresse_Click(object sender, EventArgs e)
        {
            poRange = Globals.ThisAddIn.Application.ActiveDocument.Content;
            try
            {
                string lsAdresse = ((Contact)cbResultat.SelectedItem).FullName + "\n" ;
                lsAdresse += ((Contact)cbResultat.SelectedItem).Address1_Line1 + "\n";
                lsAdresse += ((Contact)cbResultat.SelectedItem).Address1_PostalCode + " ";
                lsAdresse += ((Contact)cbResultat.SelectedItem).Address1_City + "\n";

                poRange.InsertAfter(lsAdresse);   
            }
            catch
            { 
            }
        }

Code source disponible : ContactAddIn_CRM2011

Créer un rôle de connexion

Les rôles de connexion sont une nouveauté dans CRM 2011.
Les connexions permettent de définir des relations entre les entités.

Par exemple, nous allons créer une connexion de type membre d'une association.

Par défaut, la catégorie de rôle Association n'existe pas dans la liste disponible pendant la création d'un rôle de connexion.

Pour ajouter une nouvelle catégorie, modifier le groupe d'option Catégorie.


Ajouter une option Association dans la liste des options. Enregistrer et publier.




 Maintenant dans la création d'un rôle de connexion, sélectionner comme Catégorie : Association et nommer ce rôle Membre.

Nous avons maintenant un rôle de type membre d'une association.


mardi 26 avril 2011

Cacher les volets mise en route pour tous les utilisateurs

Voici la suite du message Cacher les volets mise en route.

Cette fois, les volets mise en route ne sera pas visible pour tous les utilisateurs.
 

Ouvrir dans la zone dans Paramètres, la section Administration et sélectionner Paramètres du système. Dans  l'onglet Général, mettre à non la section Activer l'option d'affichage pour les volets Mise en route.
 

mardi 19 avril 2011

Désactiver un champ Lookup

Lookup normal

Lookup en lecture seul et désactivé


La fonction a mettre dans le OnLoad d'une entité.
function DesactiveLookup(sNomAttribut){

crmForm.all[sNomAttribut].Disabled=true;

var loSpan = document.getElementById(sNomAttribut + '_d').getElementsByTagName('SPAN');
for (var liSpan = 0; liSpan < loSpan.length; liSpan++){
loSpan[liSpan].onclick = function(){};
loSpan[liSpan].style.textDecoration ='none';
loSpan[liSpan].style.color = '#000000';
}}
Pour l'utiliser, il suffit d'appeler la fonction avec en argument le nom de l'attribut Lookup.
DesactiveLookup('parentcustomerid');

Dynamics CRM intégré à Microsoft Office Word 2007

Préalablement le composant Visual Studio pour Office doit être installé.

Le complément créé recherche les contacts par rapport au Nom complet.
Après sélection du contact, l'adresse est insérée au niveau du pointeur dans le document Office Word.


Voici les deux fonctions principales utilisées :
Les fonctions utilisent LINQ pour CRM.

Fonction de recherche des contacts :
        private void prvLectureContacts()
        {
            var loCrm = new Xrm.XrmDataContext("CRM");

            // Setup the Authentication Token
            CrmAuthenticationToken loToken = new CrmAuthenticationToken();
            loToken.AuthenticationType = AuthenticationType.AD;  
            loToken.OrganizationName =  "entreprise";

            CrmService loCrmService = new CrmService();
            
            UriBuilder loBuilder = new UriBuilder("http://entreprise:5555/entreprise");
            loBuilder.Path = "//MSCRMServices//2007//CrmService.asmx";
            loCrmService.Url = loBuilder.Uri.ToString();
            loCrmService.CrmAuthenticationTokenValue = loToken;
            

            loCrmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
            loCrmService.CrmAuthenticationTokenValue = loToken;

            WhoAmIRequest loRequest = new WhoAmIRequest();
            WhoAmIResponse loResponse = (WhoAmIResponse)loCrmService.Execute(loRequest); 

            var loRequetContact = from c in loCrm.contacts
                                  where c.ownerid.Value == loResponse.UserId
                                  && c.fullname == txtRecherche.Text  
                                select c;

            cbResultat.Items.AddRange(loRequetContact.ToArray());
            cbResultat.DisplayMember = "fullname"; 
        }

Fonction d'insertion de l'adresse du contact:
         private void buInsererAdresse_Click(object sender, EventArgs e)
        {
            poRange = Globals.ThisAddIn.Application.ActiveDocument.Content;

            try
            {
                String loAdresseSelectionnee = ((Xrm.contact)cbResultat.SelectedItem).fullname + "\n";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_line1 + "\n";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_postalcode + " ";
                loAdresseSelectionnee += ((Xrm.contact)cbResultat.SelectedItem).address1_city + "\n";
                poRange.InsertAfter(loAdresseSelectionnee);
            }
            catch
            {
                MessageBox.Show("L'adresse du contact ne peut pas être ajoutée au document.");  
            }
        }

Code source disponible : ContactAddIn_mscrm4

dimanche 17 avril 2011

Division dans Reporting Services

Le problème dans Reporting Services, c'est que l'expression comprenant une division suivant ne fonctionne pas :
= IIF(Fields!Second.Value = 0, 0, Fields!First.Value/ Fields!Second.Value))

Pour le corriger, il faut créer une fonction personnalisée pour la division
(Sélectionner le menu Rapport -> Propriété -> Code):
Public Function Divide(ByVal first As Double, ByVal second As Double) As Double
If second = 0 Then
Return 0
Else
Return first / second
End If
End Function

L'expression devient :
= Code.Divide(Fields!First.Value, Fields!Second.Value)

vendredi 15 avril 2011

Mettre en lecture seule tous les champs d'un formulaire

function LectureSeule(){
var iLen = crmForm.all.length;
for (i = 0; i < iLen; i++)
{
   o = crmForm.all[i]; 
   if (o.id != ""){o.Disabled=true;}  
}
}