CRM 2011保存

时间:2015-04-23 13:02:37

标签: javascript dynamics-crm-2011 dynamics-crm

基本上我需要的是在保存记录后运行一些JavaScript。这将从一个插件填充的字段中获取一个guid。我的代码看起来像;

    Xrm.Page.data.entity.save();

    var newguid = Xrm.Page.getAttribute("new_copyguid").getValue();
    Xrm.Utility.openEntityForm("new_myentity", newguid);

问题是代码在调用save()之后运行,并在插件填充" new_copyguid"之前继续执行。领域。有没有办法在继续使用javascript之前等待插件完成?我试过AddOnSave()但没有成功。任何javascript回调似乎都在插件完成之前执行。该插件设置为同步运行。

我正在从表单上的按钮执行此javascript。该按钮设置字段值,然后保存记录,触发插件。该按钮是一个"复制实体"创建克隆的按钮。我需要在浏览器中打开这条新记录。

我已经读过这个也不起作用,因为它发生在保存之前;

    Xrm.Page.data.refresh(save).then(successCallback, errorCallback);

任何指针都会很棒!

4 个答案:

答案 0 :(得分:2)

我认为你必须在OnLoad部分运行你的逻辑。保存应强制刷新,并且您的onload逻辑将再次运行。您需要进行一些检查以确定修改后的日期是否在特定时间范围内。

其他选项是您通过休息呼叫或Soap呼叫手动执行更新,然后您可以在另一个呼叫中读取插件中的值。

答案 1 :(得分:0)

您可以通过输入此代码等待几秒钟。

function YourFunction()
{
    Xrm.Page.data.entity.save();
    OpenForm();
}

它是一个新功能。

function OpenForm()
{
  setTimeout(function () {
    var newguid = Xrm.Page.getAttribute("new_copyguid").getValue();
    Xrm.Utility.openEntityForm("new_myentity", newguid);
  }, 3000);
}

答案 2 :(得分:0)

试试这个:

function onPageLoad() {
    var formType = Xrm.Page.ui.getFormType();
    if (formType == 0 || formType == 1) { // 0 = Undefined, 1 = Create
        // If form is in Create Mode then
        if (Xrm.Page.data != null && Xrm.Page.data.entity != null) {
            Xrm.Page.data.entity.addOnSave(onSaveDoThis);
        }
    }
}

function onSaveDoThis() {
    setTimeout(onFormSaveSuccess, 300);
}

function onFormSaveSuccess() {

    var newguid = Xrm.Page.getAttribute("new_copyguid").getValue();
    if (newguid == "") {
        onSaveDoThis();
    } else {
        // Don't need to trigger the function onSaveDoThis anymore
        Xrm.Page.data.entity.removeOnSave(onSaveDoThis);
        Xrm.Utility.openEntityForm("new_myentity", newguid);
    }
}

答案 3 :(得分:0)

试试这个:

function OpenForm()
{
  setTimeout(function () {
    var newguid = Xrm.Page.getAttribute("new_copyguid").getValue();
    Xrm.Utility.openEntityForm("new_myentity", newguid);
  }, 3000);
}