2010-06-24 6 views
1

Je travaille sur CRM Je veux mettre à jour l'entité de contact avec des valeurs dans l'entité de rendez-vous. L'entité de contact a deux champs Date de dernière rendez-vous et prochaine date de rendez-vous. deux champs dans l'entité de rendez-vous appelée Date de début et Date de fin. Ces deux valeurs doivent être copiées dans les valeurs de champ de contact. Je veux que cela se produise en utilisant JavaScriptJavaScript pour mettre à jour les valeurs dans MSCRM

+0

FWIW, "JavaScript" est un mot. Il est préférable de vous assurer que vous l'écrivez de cette façon pour éviter toute confusion avec "Java", un langage complètement différent. :-) –

+0

Ceci est une copie de [votre question précédente] (http://stackoverflow.com/questions/3109828/javascript-to-update-contact-entity), mais c'est plus clair. J'ai voté pour fermer l'autre comme un dup de celui-ci même si c'est un peu en arrière. Recommandez d'aller et de supprimer votre question précédente (vous pouvez le faire simplement en cliquant sur "supprimer" sous le texte de la question). –

Répondre

0

Il existe plusieurs façons d'appeler les entités CRM via leurs Webservices. L'utilisation de javsacript peut s'avérer très longue car il est souvent très difficile de déterminer pourquoi des erreurs se produisent. J'ai généralement tendance à créer une petite application ASP .Net, à ajouter le CRM SDK en tant que service web, à l'appeler explicitement et à regarder les requêtes SOAP en utilisant HTTP Fiddler. Une fois que j'ai fait l'appel SOAP réel, je peux alors copier l'appel, le traduire en une chaîne afin que je puisse manipuler les valeurs requises, puis l'envoyer à l'URL du SDK via la requête javsacript.

Voici quelques exemples d'appeler le SDK CRM pour les mises à jour/récupérations en utilisant uniquement javascript:

Javsacript examples

Et voici un Microsoft CRM officiel javascript pack de échantillons:

Microsoft examples pack

+0

Vous pouvez regarder le HTTP tout aussi facilement en utilisant JavaScript basé sur un navigateur, en utilisant Firebug sur Firefox, Dev Tools sur Chrome, etc. –

+0

@TJ Crowder, bien sûr, j'essayais simplement de transmettre mes propres mesures que je prends pour déterminer le La syntaxe de demande SOAP est un conseil amical plutôt que le seul moyen de le faire. –

0

Je vous recommande fortement de ne pas utiliser JavaScript, mais d'utiliser les légendes (CRM 3.0) ou les plugins (CRM 4.0), uniquement parce que le JavaScript s'exécutera sur le clic de sauvegarde, mais Si le JavaScript a été exécuté, la sauvegarde peut échouer pour d'autres raisons (par exemple, une alerte de pré-mise à jour ou une erreur de module externe).

Une légende après la mise à jour ou un plugin pour ce faire en utilisant l'ID connexe pour accéder au contact serait (à mon avis) une solution plus robuste. Si cependant, vous voulez absolument que cela soit fait par JavaScript, alors oui, la suggestion de Brian Scott de suivre les exemples qu'il a donnés est la voie à suivre.

0

Si c'est un plug-in aussi pas de problème pour moi .. en fait, j'ai d'abord essayé dans le plug-in. Je ne l'ai pas traversé. Donc je suis passé au script java. C'est le code que j'ai utilisé. public void Execute (contexte IPluginExecutionContext) { DynamicEntity entity = null;

 if (context.InputParameters.Properties.Contains("Target") && 
      context.InputParameters.Properties["Target"] is DynamicEntity) 
     { 
      entity = (DynamicEntity)context.InputParameters.Properties["Target"]; 

      if (entity.Name != EntityName.appointment.ToString()) 
       return; 
     } 
     else 
     { 
      return; 
     } 
     try 
     { 
      Guid appointmentID = new Guid(context.OutputParameters["id"].ToString()); 

      ICrmService crmservice = context.CreateCrmService(true); 

      appointment appObj = (appointment)crmservice.Retrieve(EntityName.appointment.ToString(), appointmentID, new ColumnSet(new string[] { "regardingobjectid", "location" })); 
      if (appObj.regardingobjectid == null || appObj.regardingobjectid.type != "contact") 
      { 
       return; 
      } 
      Guid contactID = appObj.regardingobjectid.Value; 

      contact cnt = new contact(); 
      cnt.contactid = new Key(); 
      cnt.contactid.Value = contactID; 
      cnt.firstname = appObj.location; 

      crmservice.Update(cnt); 
     } 
     catch (System.Web.Services.Protocols.SoapException ex) 
     { 
      throw new InvalidPluginExecutionException(
       "Invalid plug-in.", ex); 
     } 
    } 
Questions connexes