0

我被困在这个XrmServiceToolkit.Soap.setState()功能上。

先决条件
我正在学习 MS CRM。我的任务之一是激活和停用记录(这次是本地“联系人”记录)。我决定以下列方式构建我的解决方案(根据其他任务):

  1. 在我的自定义实体表单的 OnLoad 事件中,我使用 XrmServiceToolkit(任务条件)创建了一个新联系人,然后更新新创建的联系人中的一个字段。这实际上在生产中没有意义在这个事件上创建一些东西,但是,这样做只是为了我的方便:
function Practice3()
{
    let entityToUpdate = CreateRecordWithToolkit("VP_Created by","Xrm Service Toolkit","4F52999B-0E63-EA11-8125-00155D06F203");
    alert("Switching to new record!");
    Xrm.Utility.openEntityForm("contact", entityToUpdate);
    UpdateFieldsWithXrmServiceToolkit(entityToUpdate);
    DeactivateAndActivateContact(entityToUpdate);
}

// I don't post the CreateRecordWithToolkit(fname, lname, accountId) and UpdateFieldsWithXrmServiceToolkit(targetEntity) functions 'cos all is Ok there
// and entityToUpdate GUID is passed properly
  1. 在创建和发布更新之间,我发送一个命令来加载新创建的表单。它不会立即激活它,但会正确插入更新。
  2. 然后我将相同的 GUID 传递给我的下一个函数 DeactivateAndActivateContact(targetEntity) 并在这里卡住了。

问题
谁能解释或提示如何使用该XrmServiceToolkit.Soap.setState()功能?我无法获得“entityName”参数 - 这是什么?拥有实体的 GUID 如何获得它?我试图这样使用它:

function  DeactivateAndActivateContact(targetEntity)
{
    let entityName = GetObjectAttribute(targetEntity, "contact", "name");
    XrmServiceToolkit.Soap.setState(entityName,targetEntity, "0", "0",false);
    Xrm.Page.data.refresh(true).then(null, null);
}

但得到一个未定义的错误。

有什么方法可以entityName通过 GUID 获取?'因为我得到了当前表格的名称。
进入此行时引发错误:

XrmServiceToolkit.Soap.setState(entityName,targetEntity, "0", "0",false);
4

1 回答 1

1

要在此处停用联系人,代码如下,

注意Rest API 调用是异步的,您必须在 Dynamics 中使用执行上下文和表单上下文

您也可以使用 Rest API 更改您的其他 SOAP 调用。请参阅CRM Rest Builder,使用它来建立呼叫非常容易。

var entity = {};
entity.statuscode = 2;
entity.statecode = 1;

    Xrm.WebApi.online.updateRecord("contact", "4A342F12-D248-E211-8669-005056922461", entity).then(
        function success(result) {
            var updatedEntityId = result.id;
formContext.data.refresh(yes).then(successCallback, errorCallback);
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );
于 2020-03-28T16:47:59.367 回答