jeudi 1 novembre 2012

Secrets de programmation Microsoft CRM - Conseils pour Développeurs


Cet article est pour les développeurs avancés de Microsoft CRM SDK C #. Il décrit la technique de programmation SQL directe, lorsque le SDK n'a pas la fonctionnalité pour faire le travail.

Introduction. On dirait que Microsoft CRM devient de plus en plus populaire, en partie parce que des muscles de Microsoft derrière elle. Maintenant, il est destiné à tout l'éventail de la clientèle du marché horizontale et verticale. Il est étroitement intégré à d'autres produits Business Solutions Microsoft tels que Microsoft Great Plains, Solomon, Navision (les deux derniers en cours).
Ici, nous décrivons la technique de création fermé activité e-mail en utilisant MS CRM SDK et direct programmation SQL.

Quelque chose d'imagerie comme ça. Vous devez gérer que le courrier entrant avant qu'il ne s'engage à MS Exchange base de données. Vous devez analyser si le courrier électronique entrant ne dispose pas de GUID dans son sujet (GUID permettra MS CRM connecteur Exchange pour déplacer email à Microsoft CRM et l'attacher à la personne-ressource, compte ou plomb) - alors vous avez encore besoin de rechercher dans MS CRM cas si l'un des comptes, des contacts ou des prospects a adresse e-mail qui correspond avec l'adresse email de l'expéditeur - alors vous avez besoin pour créer fermé activité e-mail dans MS CRM, attaché à l'objet et placés dans la file d'attente générale.

Comment créer MS Exchange gestionnaire est en dehors du champ d'application, s'il vous plaît voir cet article:


Maintenant le code ci-dessous est classique MS CRM SDK et il créera email activité:

publique Guid CreateEmailActivity (userId Guid, objectType int, objectId Guid, chaîne mailFrom, CRMUser crmUser, sous réserve string, body string) {
try {

Log.DEBUG ("Préparez-vous à Création d'activité Courrier");

/ / BizUser objet proxy

Microsoft.Crm.Platform.Proxy.BizUser bizUser = new Microsoft.Crm.Platform.Proxy.BizUser ();

Pouvoirs ICredentials = NetworkCredential nouvelle (sysUserId, syspassword, sysDomain);

bizUser.Url = crmDir + "BizUser.srf";

bizUser.Credentials = vérification des pouvoirs;

Microsoft.Crm.Platform.Proxy.CUserAuth userAuth = bizUser.WhoAmI ();

/ / CRMEmail objet proxy

Microsoft.Crm.Platform.Proxy.CRMEmail e-mail = new Microsoft.Crm.Platform.Proxy.CRMEmail ();

email.Credentials = vérification des pouvoirs;

email.Url = crmDir + "CRMEmail.srf";

/ / Définissez la chaîne XML de l'activité

strActivityXml chaîne = "";

strActivityXml + = "";

strActivityXml + = "";

strActivityXml + = "";

strActivityXml + = userId.ToString ("B") + "";

strActivityXml + = "";

/ / Définissez la chaîne XML pour les parties activité

strPartiesXml chaîne = "";

strPartiesXml + = "";

strPartiesXml + = "" + crmUser.GetEmailAddress () + "";

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otSystemUser.ToString () + "";

strPartiesXml + = "". + crmUser.GetId () ToString ("B") + "";

strPartiesXml + = "";

strPartiesXml + = Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_TO_RECIPIENT.ToString ();

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "" + mailFrom + "";

if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otAccount) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otAccount.ToString () + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otContact) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otContact.ToString () + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otLead) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otLead.ToString () + "";

}

strPartiesXml + = "" + objectId.ToString ("B") + "";

strPartiesXml + = "";

strPartiesXml + = Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_SENDER.ToString ();

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "";

Log.DEBUG (strPartiesXml);

/ / Création de l'objet e-mail

Guid Guid = new emailid (email.Create (userAuth, strActivityXml, strPartiesXml));

retourner emailid;
}
catch (System.Web.Services.Protocols.SoapException e) {
Log.DEBUG ("ErrorMessage:" + e.Message + "" + + e.Detail.OuterXml "Source:" + e.Source);
}
catch (Exception e) {
Log.DEBUG (e.Message + "rn" e.StackTrace +);
}
return new Guid ();
}

Maintenant, je voudrais partager avec vous le tour - il n'existe pas de méthode pour faire cette activité fermé dans MS CRM SDK 1.2 (si quelqu'un connaît le - que je vous dois aquarium petite poche - sourire!). Évidemment, Microsoft ne prend pas en charge si vous n'avez programmation SQL directe sans passer par le SDK. Cependant, je dirais que ce n'est pas directement la création d'objets - c'est plutôt la correction des drapeaux. Voici donc ce que nous avons - cette procédure fera le travail et faire de l'activité fermé:

UpdateActivityCodes public void (Guid emailid) {
try {

OleDbCommand command = conn.CreateCommand ();

command.CommandText = "UPDATE SET ActivityBase DirectionCode =, = stateCode, PriorityCode = OU = ActivityId (?) (?) (?) (?)";

command.Prepare ();

command.Parameters.Add (OleDbParameter nouvelle ("DirectionCode", Microsoft.Crm.Platform.Types.EVENT_DIRECTION.ED_INCOMING));

command.Parameters.Add (OleDbParameter nouvelle ("stateCode", Microsoft.Crm.Platform.Types.ACTIVITY_STATE.ACTS_CLOSED));

command.Parameters.Add (OleDbParameter nouvelle ("PriorityCode", Microsoft.Crm.Platform.Types.PRIORITY_CODE.PC_MEDIUM));

command.Parameters.Add (OleDbParameter nouvelle ("ActivityId", emailid));

Log.DEBUG ("Préparez-vous à mettre à jour le code d'activité" emailId.ToString + ("B") + "dans ActivityBase");

command.ExecuteNonQuery ();

}

catch (Exception e) {

Log.DEBUG (e.Message + "rn" e.StackTrace +);

}
}

Bonne personnalisation! si vous voulez que nous pour faire le travail - appelez-nous 1-866-528-0577! help@albaspectrum.com...

Aucun commentaire:

Enregistrer un commentaire