Rechercher dans ce blog

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;}  
}
}

mercredi 13 avril 2011

Modification de la couleur des rendez-vous du calendrier de service

Par défaut les couleurs des rendez-vous sont :
- Blanc pour le statut Libre,
- Bleu pour le statut Occupé,
- Gris pour le statut Absent.








Le mappage des couleurs se situe dans la personnalisation Configuration ISV entre les balises .
Le code du type de l'entité Appointment (Rendez-vous) est le 4201.














Les valeurs des statuts sont définies dans l'aide du SDK.











Pour les trois exemples de statut : 
- Blanc pour le statut Libre - valeur : 1 - CssClass : gantBlockAppointmentStatus1,

- Bleu pour le statut Occupé - valeur : 5 - CssClass : gantBlockAppointmentStatus5,
- Gris pour le statut Absent - valeur : 6 - CssClass : gantBlockAppointmentStatus6.

La définition des CssClass se trouve dans le fichier :
../Microsoft Dynamics CRM\CRMWeb\SM\Gantt\style\GanttControl.css.aspx




 
Nous allons modifier la couleur des trois statuts, en s'appuyant sur le site http://www.color-hex.com/color/ pour définir les nouvelles valeurs hexadécimales des couleurs.  

Le fichier de définition des  CssClass devient :
































Résultat :

Après le redémarrage de IIS et le vidage du cache IE, le calendrier de service devient :

dimanche 10 avril 2011

LINQ pour Microsoft Dynamics CRM 4.0

LINQ (Language Integrated Query) est un ensemble de fonctionnalités introduites dans Visual Studio 2008 qui étend les fonctions de requête puissantes à la syntaxe des langages C# et Visual Basic.
LINQ introduit des modèles standard et facilement assimilables pour l'interrogation et la mise à jour de données.

Connexion au CRM.
var crm = new Xrm.XrmDataContext("CRM");

Voici deux exemples d'interrogation avec LINQ.

Le premier exemple implémente une condition.
System.Console.WriteLine("Liste des comptes situés à PARIS");
 System.Console.WriteLine("=========================================================");
var queryAccounts = from a in crm.accounts
                                where a.address1_city == "PARIS"
                                select a;

foreach (var a in queryAccounts)
{
    System.Console.WriteLine(a.name);
}
System.Console.ReadLine();

Le deuxième exemple implémente une condition sur une jointure.
System.Console.WriteLine("Liste des comptes qui ont au moins un contact à PARIS");
System.Console.WriteLine("====================================================");

var queryAccounts = from a in crm.accounts
                                join c in crm.contacts
                                    on a.accountid equals c.parentcustomerid.Value
                                where c.address1_city == "PARIS" 
                                select a;

foreach (var a in queryAccounts)
{
 System.Console.WriteLine(a.name);
 }
System.Console.ReadLine();

jeudi 7 avril 2011

Correctif cumulatif 1 pour Microsoft Dynamics CRM 2011

Version : 05.00.9688.1045
  • Service Asynchrone
  • Workflow
  • Création d'email
  • Mise à jour et l'import lors d'un déploiement
  • Export Excel au niveau de la grille des activités
  • Mode offline avec Microsoft Office 2007
  • Fichier XML du rubban
  • Création d'un incident
  • Chargement de JavaScript
  • Les vues de grille
  • Liste marketing
  • Ajout d'un contact à une liste d'attente en mode offline
  • Suppression de contact dans Microsoft Office Outlook
  • Chargement du rubban CRM dans Microsoft Office Outlook
  • Synchronisation Outlook
  • Gestion d'une ressource web Silverlight
  • Création d'un devis d'une opportunité
  • Ajout d'une connexion à un lead
  • disparition des boutons d'aide en mode offline
  • Import/Export de solution
  • Migration issue de CRM4.0
  • Fonctionnement avec Internet Explorer 9
  • Création de relation
  • Assembly
  • Export de données vers Microsoft Excel 2003
  • Recherche avancée