Получите entityName по GUID, несмотря на то, какая форма загружена в данный момент для использования в XrmServiceToolkit. Soap .setState () - PullRequest
0 голосов
/ 22 марта 2020

Я застрял на функции 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
Между созданием и публикацией обновлений я посылаю команду загрузить эту вновь созданную форму. Он не активировал его сразу, но обновления вставляются правильно. Затем я передаю тот же 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);

1 Ответ

1 голос
/ 28 марта 2020

Чтобы деактивировать контакт, используйте код ниже,

Примечание Вызов API Rest является асинхронным , и вам придется использовать контекст выполнения и formcontext в Dynamics

Также вы можете изменить другие SOAP звонки с Rest API. См. 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);
        }
    );
...