2010-06-24 28 views
1

我正在使用CRM 我想用约会实体中的值更新联系人实体。 联系实体有两个字段最后约会日期和下一个约会日期。 约会实体中称为开始日期和结束日期的两个字段。这两个值应该被复制到联系人字段值。 我希望这发生在使用JavaScript用于更新MSCRM中的值的JavaScript

+0

FWIW,“JavaScript”是一个单词。最好确保你这样写,以避免与“Java”混淆,这是一种完全不同的语言。 :-) – 2010-06-24 14:14:20

+0

这是[你早先的问题](http://stackoverflow.com/questions/3109828/javascript-to-update-contact-entity)的重复,但它更清晰。我投票决定把另一个关闭,尽管这有点落后。建议去掉和删除你之前的问题(你可以通过点击问题文本下的“删除”来完成)。 – 2010-06-24 14:19:49

回答

0

有几种方法通过他们的Web服务调用CRM实体。使用javsacript可能会非常耗时,因为确定错误发生的原因通常非常困难。我通常倾向于创建一个小的ASP .Net应用程序,将CRM SDK添加为Web服务,明确调用并使用HTTP Fiddler观看SOAP请求。一旦我接着完成了实际的SOAP调用,我就可以复制该调用,将其转换为字符串,以便我可以操纵所需的值,然后通过javsacript请求将其发送到SDK url。

这里是调用CRM SDK更新的一些例子/取指仅使用JavaScript的:

Javsacript examples

,这里是一个微软官方CRM的JavaScript样本包:

Microsoft examples pack

+0

使用基于浏览器的JavaScript,使用Firefox上的Firebug,Chrome上的开发工具等,您可以轻松地观看HTTP。 – 2010-06-24 14:15:32

+0

@TJ Crowder,当然,我只是试图传递我自己的步骤,以确定SOAP请求语法是友好的建议,而不是唯一的方法。 – 2010-06-24 14:29:44

0

我强烈建议您不要使用JavaScript,而是使用标注(CRM 3.0)或插件(CRM 4.0),纯粹是因为JavaScript会在保存点击上执行,但一旦t他执行了JavaScript,保存可能因其他原因失败(即,更新前标注或插件失败)。

更新后的标注或插件使用相关的ID来访问联系人将是(在我看来)一个更强大的解决方案。但是,如果你想绝对希望通过JavaScript来完成,那么是的,Brian Scott给出的关于他给出的例子的建议就是要走的路。

0

如果它是一个插件对我来说也没有问题..其实我首先尝试插件。我没有通过它。所以我转移到Java脚本。 这是我使用的代码。 public void Execute(IPluginExecutionContext context) { 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); 
     } 
    }