jeudi 15 avril 2010

Récupération d'une entité d'après son GUID et son nom

private DynamicEntity GetRecord(ICrmService service,Guid guidEnregistrement,string EntityName)
    {
      // ---- recupération de l'enregistrement complet

            TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();

            // Set the properties of the target.
            targetRetrieve.EntityName = EntityName;
            targetRetrieve.EntityId = guidEnregistrement;

            // Create the request object.
            RetrieveRequest retrieve = new RetrieveRequest();

            // Set the properties of the request object.
            retrieve.Target = targetRetrieve;
            // Be aware that using AllColumns may adversely affect
            // performance and cause unwanted cascading in subsequent
            // updates. A best practice is to retrieve the least amount of
            // data required.
            retrieve.ColumnSet = new AllColumns();

            // Indicate that the BusinessEntity should be retrieved as a DynamicEntity.
            retrieve.ReturnDynamicEntities = true;

            // Execute the request.
            RetrieveResponse retrieved = (RetrieveResponse)service.Execute(retrieve);

            // Extract the DynamicEntity from the request.
            DynamicEntity entityRetrieved = (DynamicEntity)retrieved.BusinessEntity;
            return entityRetrieved;
    }

mercredi 14 avril 2010

Fetchxml Builder

Outil destiné à créer des requêtes fetchxml sur un ms crm, pour les os x64, utiliser les dll fournies avec le sdk
 
Fetchxml

Template plugin C#

Suivre les instructions:
 
MSDN Template 

Concaténations de 2 name de lookup dans un 3em champ (Javascript)

But : mettre dans le champ new_name le nom de 2 autres champs en lookup, à placer dans le onChange des lookup

if ((crmForm.all.new_name.DataValue == null) &&
(crmForm.all.new_typetransactionid.DataValue != null) &&
(crmForm.all.new_statutprivilgeid.DataValue != null) )
{
crmForm.all.new_name.DataValue = crmForm.all.new_typetransactionid.DataValue[0].name + " - "+ crmForm.all.new_statutprivilgeid.DataValue[0].name;
}

Import d'un .js dans un formulaire ms crm 4.0

Après le chargement du .js, la fonction CustomLoad est exécutée

var script = document.createElement('script');
var result;
script.language = 'javascript';
script.src = '/ISV/masks.js';
script.onreadystatechange = OnScriptReadyState;
document.getElementsByTagName('head')[0].appendChild(script);

function OnScriptReadyState()
{ if ( (event.srcElement.readyState== "complete" ) ||
(event.srcElement.readyState== "loaded" ) )
{ CustomLoad(); }
}

function CustomLoad(){

}

Mise en place de masque de saisie pour ms crm 4.0

http://digitalbush.com/projects/masked-input-plugin/

Récupérer les 2 .js, les copier dans /ISV

Dans le onLoad du formulaire, importer les 2 .js, appliquer les masques sur les champs à masquer

var script = document.createElement('script');
var script1loaded =false;
script.language = 'javascript';
script.src = '/ISV/jquery.js';
script.onreadystatechange = OnScriptReadyState;
document.getElementsByTagName('head')[0].appendChild(script);

var script2 = document.createElement('script');
var script2loaded =false;
script2.language = 'javascript';
script2.src = '/ISV/jquery.maskedinput-1.2.2.js';
script2.onreadystatechange = OnScriptReadyState2;
document.getElementsByTagName('head')[0].appendChild(script2);



function OnScriptReadyState()
{ if ( (event.srcElement.readyState== "complete" ) ||
(event.srcElement.readyState== "loaded" ) )
{ script1loaded = true;
if (script2loaded) { CustomLoad(); } }
}

function OnScriptReadyState2()
{ if ( (event.srcElement.readyState== "complete" ) ||
(event.srcElement.readyState== "loaded" ) )
{ script2loaded = true;
if (script1loaded) { CustomLoad(); } }
}

function CustomLoad(){

jQuery(function($){
$("#new_heuredebutperiode").mask("99:99");
$("#new_heurefinperiode").mask("99:99");
});

}