Создание и обновление записи Javascript в Dynamics CRM с помощью пользовательской кнопки

У меня есть требование создать и обновить некоторые записи из пользовательской кнопки. Эта пользовательская кнопка размещена на главной странице контакта. Во-первых, мне нужно проверить один или несколько контактов. После нажатия пользовательской кнопки создается учетная запись в объекте учетной записи, а затем обновляется поле поиска контакта, который я проверил ранее, с учетной записью, которую мы создаем.

Я пытаюсь сделать шаг внутри этого ссылка и это, но кажется, что это не работает для Dynamics CRM 2016 on-premis

Не могли бы вы помочь мне и дать мне предложение или другой документальный фильм, который, по вашему мнению, может удовлетворить мое требование выше.

ОТРЕДАКТИРОВАНО: в SDK есть пример использования JQueryRestDataOperation. Оттуда я пишу такой код:

    function createAccount() {

 startButton.attr("name");

 var account = {};

 account.Name = "Test Account Name";

 account.Description = "This account was created by the JQueryRESTDataOperations sample.";



 //Create the Account

 SDK.JQuery.createRecord(

     account,

     "account",

     function (account) {

      writeMessage("The account named "" + account.Name + "" was created with the AccountId : "" + account.AccountId + "".");

      writeMessage("Retrieving account with the AccountId: "" + account.AccountId + "".");

      retrieveAccount(account.AccountId)

     },

     errorHandler

   );



}

Я добавляю этот код как веб-ресурс в свое решение, а затем вызываю его из пользовательской кнопки. Но ничего не происходит.

Спасибо


person Fikri Hailal    schedule 21.08.2016    source источник


Ответы (1)


Для создания учетной записи вы можете использовать код, указанный ниже. При нажатии кнопки вызовите функцию CreateAccount()

function CreateAccount() { 
    var accountId, accountName;
    var context = Xrm.Page.context; 
    var serverUrl = context.getServerUrl(); 
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc"; 
    var CRMObject = new Object(); 
    ///////////////////////////////////////////////////////////// 
    // Specify the ODATA entity collection 
    var ODATA_EntityCollection = "/AccountSet"; 
    ///////////////////////////////////////////////////////////// 
    // Define attribute values for the CRM object you want created 
    CRMObject.Name = "TEST";
    accountName = "TEST"; 
    CRMObject.Telephone1 = "123"; 
    CRMObject.Fax = "456"; 
    //Parse the entity object into JSON 
    var jsonEntity = window.JSON.stringify(CRMObject); 
    //Asynchronous AJAX function to Create a CRM record using OData 
    $.ajax({ type: "POST", 
        contentType: "application/json; charset=utf-8", 
        datatype: "json", 
        url: serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection, 
        data: jsonEntity, 
        beforeSend: function (XMLHttpRequest) { 
            //Specifying this header ensures that the results will be returned as JSON. 
            XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
        }, 
        success: function (data, textStatus, XmlHttpRequest) { 
            alert("success"); 
            var NewCRMRecordCreated = data["d"]; 
            accountId = NewCRMRecordCreated.AccountId;
            UpdateContact(accountId,accountName); 
        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
            alert("failure"); 
        } 
    }); 
}

Обновить контакт

function UpdateContact(accountId, accountName) {
    var serverUrl = Xrm.Page.context.getServerUrl().toString();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var ODATA_EntityCollection = "/AccountSet";

    var objContact = new Object();
    // set the name of Account
    objContact.Id = Xrm.Page.data.entity.getId();

    // set the Primary Contact lookup field
    objContact.AccoutId = { Id: accountId, LogicalName: "account", Name: accountName };

    // Parse the entity object into JSON 
    var jsonEntity = window.JSON.stringify(objContact);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection,
        data: jsonEntity,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (response) {
            if (response != null && response.d != null) {
                alert(response.d.ContactId);
            }
        },
        error: function (xmlHttpRequest, textStatus, errorThrown) {
            alert("Status: " + textStatus + "; ErrorThrown: " + errorThrown);
        }
    });
}

person Meet    schedule 22.08.2016
comment
спасибо за ваш код. Один вопрос. Какие файлы .js вы добавляете для веб-ссылки? Я просто добавляю jquery.1.9.1 и sdk.jquery. Есть ли какой-либо файл js, отсутствующий на моем веб-ресурсе? - person Fikri Hailal; 22.08.2016
comment
Я не знаю, что здесь не так, но ваш код не работает. Я думаю, что есть требование, которое я пропустил - person Fikri Hailal; 23.08.2016
comment
Вы пробовали отлаживать код с помощью F12? Если да, то, пожалуйста, дайте мне знать, так как этот код работает нормально для меня. - person Meet; 23.08.2016
comment
Привет @meet, твой код запускается после того, как я изменю getServerUrl на getClientUrl - person Fikri Hailal; 30.08.2016