Javascript สร้างและอัปเดตบันทึกใน Dynamics CRM จากปุ่มที่กำหนดเอง

ฉันมีข้อกำหนดในการสร้างและอัปเดตบันทึกบางส่วนจากปุ่มที่กำหนดเอง ปุ่มแบบกำหนดเองนี้วางอยู่บนหน้าแรกของผู้ติดต่อ ก่อนอื่น ฉันต้องตรวจสอบผู้ติดต่ออย่างน้อยหนึ่งราย เมื่อคลิกปุ่มกำหนดเองแล้ว จะเป็นการสร้างบัญชีในเอนทิตีบัญชี จากนั้นอัปเดตฟิลด์การค้นหาของผู้ติดต่อที่ฉันตรวจสอบก่อนหน้านี้ด้วยบัญชีที่เราสร้าง

ฉันกำลังลองขั้นตอนภายใน ลิงก์ และ สิ่งนี้ แต่ดูเหมือนว่าจะใช้ไม่ได้กับ Dynamics CRM 2016 ภายในองค์กร

โปรดช่วยฉันและให้คำแนะนำหรือสารคดีอื่นที่คุณคิดว่าสามารถตอบสนองความต้องการของฉันข้างต้นได้

แก้ไข: บน 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