Rechercher dans ce blog

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

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.