Rechercher dans ce blog

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

dimanche 3 avril 2011

Erreur : Une autre application a déjà inscrit cette URL auprès de HTTP.SYS.

Lors de l’exécution en débogue d'un service WCF. L'exception Une autre application a déjà inscrit cette URL auprès de HTTP.SYS. est levée.

Résolution :
Ouvrir les propriétés du projet Service.
Parcourir l'onglet Options WCF.
Décocher l'option Démarrer l'hôte de service WCF lors du débogage d'un autre projet dans la même solution.
Relancer le mode débogage de la solution.

samedi 2 avril 2011

Mettre en surbrillance un champ

Comme exemple, nous allons mettre en surbrillance le champ Téléphone principal de l'entité Compte.

Dans la personnalisation du formulaire de l'entité compte, insérer dans le OnLoad le code:
document.all.telephone1_c.style.backgroundColor = 'yellow';
document.all.telephone1_d.style.backgroundColor = 'yellow';
Enregistrer et publier l'entité Compte.

Nous obtenons le formulaire pour l'entité Compte.

dimanche 20 mars 2011

Pilotage de la valeur d'un attribut par un composant Silverlight

1. Création du composant Silverlight

Pour créer un composant Silverlight, l'utilisation de Visual Studio Express 2010 avec Silverlight Tools est suffisant.


Appeler le projet CRMSilverlightSlider.

Sélectionner le fichier MainPage.xaml pour modifier la couleur de fond de la zone d'affichage. Choisir la propriété Background pour l'initialiser à #FFF6F8FA.

Glisser le contrôle Slider dans la zone d'affichage.

Modifier les propriétés du Slider avec Margin à 0 et Width à 300.

Dans le fichier MainPage.xaml.cs, copier le code suivant :

using System.Windows.Browser;
 
namespace CRMSilverlightSlider
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
        {
            dynamic xrm = (ScriptObject)HtmlPage.Window.GetProperty("Xrm");
            var fieldName = Application.Current.Resources["InitParm_data"];
            var numAttr = xrm.Page.data.entity.attributes.get(fieldName);
            numAttr.setValue(Math.Round(slider1.Value, 0));
        }
    }
}

Dans le fichier App.xaml.cs, Ajouter le code suivant :
public void CaptureInitValues(IDictionary values)
{
foreach (var val in values)
{
if (!Application.Current.Resources.Contains("InitParm_" + val.Key))
{
 Application.Current.Resources.Add("InitParm_" + val.Key, val.Value);
}
}
}

private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
CaptureInitValues(e.InitParams);
}

Compiler le projet pour obtenir le fichier CRMSilverlightSlider.xap.

2. Installation dans CRM2011.
Créer une ressource Web pour enregistrer le fichier Silverlight.
Ajouter la ressource Web dans le formulaire principal de l'entité Compte.



Modifier les propriétés d'affichage de la ressource Web, en n'oubliant pas d'indiquer le paramètre numberofemployees.


3. Résultat 
Le champ Nombre d'employés est maintenant piloté par le curseur Nbre d'employés.

samedi 19 mars 2011

Réduire la taille d'une image Virtual PC

A chaque fois que l'on ajoute un programme dans une image VPC, Microsoft Virtual PC augmente l'espace disque. Après suppression des programmes, l'image garde sa taille maximale. Voici une procédure permettant de réduire la taille de l'image à l'espace disque réel occupé dans la machine virtuelle.


1. Lancer sa machine virtuelle.
2. Nettoyer et défragmenter le disque dans la machine virtuelle, avec les outils de maintenance standards de Windows.
3. Sélectionner 'CD/Capturer l'image ISO' dans le menu Virtual PC.


 Ajouter le fichier Virtual Disk Precompactor.iso situé sous C:\Program Files\Microsoft Virtual PC\Virtual Machine Additions.

4. A la fin du traitement du Virtual Disk Precompactor, fermer la machine virtuelle.
5. Lancer l'Assistant Disque virtuel de Microsoft Virtual PC.


Sélectionner l'option Modifier un disque virtuel existant.

Choisir l'image VPC préalablement pré-compactée.

Sélectionner l'option Le compresser

Puis l'option Remplaçant le fichier original.

Enfin terminer l'assistant.
 
6. A la fin du traitement, l'image de la machine virtuelle occupera une taille équivalente à son contenu virtuel.

vendredi 18 mars 2011

Connexion impossible après redémarrage du serveur CRM

Après un redémarrage du serveur CRM, la connexion au CRM est impossible et le message suivant s'inscrit dans le journal application de l'observateur d'événement.

Exception type: CrmException
Exception message: The key specified to compute a hash value is expired, only active keys are valid. Expired Key : CrmKey(Id:c1bef2e2-efc5-de11-b538-005056a75caa, ScaleGroupId:00000000-0000-0000-0000-000000000000,
KeyType:CrmWRPCTokenKey, Expired:True, ValidOn:10/31/2009 07:34:57, ExpiresOn:12/03/2009 07:34:57, CreatedOn:10/31/2009 07:34:57, CreatedBy:NT AUTHORITY\NETWORK SERVICE.


Ce message survient car le service Asynchrone de Microsoft CRM n'a pas redémarré. Il faut donc redémarrer ce service manuellement sur le serveur CRM.

Le Rollup 7 corrige ce problème.