用于更新MSCRM中的值的JavaScript

时间:2010-06-24 14:00:30

标签: javascript-events

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

3 个答案:

答案 0 :(得分:0)

有几种方法可以通过Web服务调用CRM实体。使用javsacript可能非常耗时,因为通常很难确定错误发生的原因。我通常倾向于创建一个小的ASP .Net应用程序,将CRM SDK添加为Web服务,显式调用它并使用HTTP Fiddler观察SOAP请求。然后,当我进行实际的SOAP调用后,我可以复制调用,将其转换为字符串,以便我可以操作所需的值,然后通过javsacript请求将其激活到SDK URL。

以下是使用javascript调用CRM SDK进行更新/提取的一些示例:

Javsacript examples

这是一个官方的Microsoft CRM javascript示例包:

Microsoft examples pack

答案 1 :(得分:0)

我强烈建议您不要使用JavaScript,而是使用Callouts(CRM 3.0)或插件(CRM 4.0),这完全是因为JavaScript将在Save click上执行,但是一旦JavaScript执行,保存可能会失败其他原因(即更新前的Callout或插件失败)。

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

答案 2 :(得分: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);
        }
    }