首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最初的动态客户关系管理( CRM )机会保存之后,价值观似乎直接发生了变化

在最初的动态客户关系管理( CRM )机会保存之后,价值观似乎直接发生了变化
EN

Stack Overflow用户
提问于 2017-01-03 13:10:36
回答 1查看 169关注 0票数 0

我正在执行一个服务调用来检索帐户详细信息(货币,与帐户相关的折扣),以便在选择机会表单(表单类型== 1/创建)上选择帐户查询时,使用Web 2016 On-Premise中查找帐户。一切都很好,但是当机会刚开始保存的时候,它马上就会在初始保存后的“保存”按钮旁边出现未保存的“更改”(),这迫使我进行另一次保存(异常行为),我不太确定初始保存后会立即改变什么值。

服务调用是同步的,并且是在帐户查找更改时触发的,早在初始保存之前。任何帮助都很感激!

代码语言:javascript
复制
function SetOpportunityCurrencyAndDiscount(){
    var accountId = (GetValue("vm_accountid"))[0].id;
    var result = RetrieveRecord("account", null, accountId.slice(1,-1));
    var accountDiscount = result["vm_accountdiscount"];
    var transactionCurrencyId = result["_transactioncurrencyid_value"];
    var currencyName =  result["_transactioncurrencyid_value@OData.Community.Display.V1.FormattedValue"];
    SetValue("vm_discount", accountDiscount);
    Xrm.Page.getAttribute("transactioncurrencyid").setValue([{ id: transactionCurrencyId, name: currencyName, entityType: "transactioncurrency"}]); }

function RetrieveRecord(recordType, alternateKey, accountId){
    var result = null;
    var entityType = recordType;
    var query = null;
    if(alternateKey != null && agencyId == null)
        query = "/api/data/v8.0/accounts(emailaddress1='"+alternateKey+"')?$select=name,accountid,_transactioncurrencyid_value,vm_agencydiscount";
    else
        query = "/api/data/v8.0/accounts("+agencyId+")?$select=name,accountid,_transactioncurrencyid_value,vm_agencydiscount";
    var req = new XMLHttpRequest();
    req.open("GET", Xrm.Page.context.getClientUrl() + query, false);
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
    req.onreadystatechange = function () {
        if (this.readyState === 4) {
            req.onreadystatechange = null;
            if (this.status === 200) {
                result = JSON.parse(this.response);
            }
            else {
                alert(this.statusText);
            }
        }
    };
    req.send();
    return result; 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-03 13:44:11

保存记录并且表单再次脏后,打开dev工具并将其粘贴到控制台中。它会告诉你哪些字段是脏的。

代码语言:javascript
复制
function showDirtyFields() { 
    var Xrm = Array.prototype.slice.call(document.querySelectorAll('iframe')).filter(function(d) {
        return d.style.visibility !== 'hidden';
    })[0].contentWindow.Xrm;
    var message='The following fields are dirty: \n';
    Xrm.Page.data.entity.attributes.forEach(function(attribute,index){
        if(attribute.getIsDirty()==true){message+="\u2219 "+attribute.getName()+"\n";}
    });
    Xrm.Utility.alertDialog(message);
}
showDirtyFields();

完成同一件事的另一种方法是对实体进行审计。审计日志将显示提交了哪些字段。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41444305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档