2

设想:

第 1 步:我正在使用 MS CRM 2011。我编写了获取收件人字段值(电子邮件实体)的 javascript 函数,并将该值设置为相关字段。它工作正常。

第2步:将更新相关字段中的值的过程写为清晰。因为自动相关字段获取一些值。所以我需要在相关字段中将其更改为空。它工作正常。

第 3 步:现在我在 onchange 事件中调用 javascript 函数。

问题:相关字段值在处理执行后变得清晰。这意味着旧值替换和新值进入相关字段。就像一个更改事件。旧值替换为空。

但功能没有触发。如果打开电子邮件表单并更改相关字段,它工作正常,这意味着 Javascript 可以工作。

摘要:当我从 Process 更改值时,onchange 事件没有调用。但是我手动尝试了 javascript 工作正常。

如何解决这个问题呢。

**请参阅以下屏幕截图:

使用这个 Java 脚本:

步骤 1 编码 函数 TofieldValuetoOtherField() {

var lookup = new Array();
lookup = Xrm.Page.getAttribute("to").getValue();
if (lookup != null) 
{

    var name = lookup[0].name;
    var id = lookup[0].id;
    var entityType = lookup[0].entityType;
    Xrm.Page.getAttribute("regardingobjectid").setValue([{ id: id, name: name, entityType: entityType }]);
     //Xrm.Page.data.entity.save();          

   }}

在此处输入图像描述

像这样调用 Onchange 它没有被解雇。

在此处输入图像描述

4

2 回答 2

6

仅当使用 Web 界面执行操作(如您的情况下的 onload、onsave 和 onchange)时才调用 JavaScript 代码。

如果您使用工作流(或插件)更改字段值,则不会执行附加的 javascript,因为代码仅在浏览器窗口内执行。

于 2013-10-18T12:26:04.073 回答
0

如果您使用 CRM Web 界面创建电子邮件,那么您应该将其全部绑定在 OnLoad 事件中。OnLoad 调用 OnCrmPageLoad 函数(删除 OnChange 调用,因为我们正在使用 addOnChange 方法进行调用)。

function OnCrmPageLoad() {
   //Apply every time the To field changes
   Xrm.Page.getAttribute("to").addOnChange(TofieldValuetoOtherField); 
   //Apply when the from loads  
   TofieldValuetoOtherField(); 
}

TofieldValuetoOtherField = function()
{
   var lookup = Xrm.Page.getAttribute("to").getValue();
   if (lookup) 
   {
       var name = lookup[0].name;
       var id = lookup[0].id;
       var entityType = lookup[0].entityType;
       Xrm.Page.getAttribute("regardingobjectid")
        .setValue([{ id: id, name: name, entityType: entityType }]);
   }
}

如果您需要在 Web 界面(即 Outlook 或 Web 服务)之外创建电子邮件时强制执行此行为,那么您必须使用插件来覆盖相关字段(如上所述)

于 2013-11-30T00:56:30.230 回答