locked
Can't retrieve a value from an entity.. RRS feed

  • Question

  • Hi all

    I would like to retrieve the phone number of an account when I select it in a lookup field..

    Could you please tell me where is the error in this code ?

    function test() {
        var account = new Array();
        account = Xrm.Page.getAttribute("new_accountname").getValue();
    
        if (account == null) {
            return;
        }
    
        var serverUrl = Xrm.Page.context.getServerUrl();
        var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet?$select=telephone1&$filter=AccountId eq guid'" + account[0].id + "'";
    
        var retrieveReq = new XMLHttpRequest();
        retrieveReq.open("GET", oDataSelect, false);
        retrieveReq.setRequestHeader("Accept", "application/json");
        retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8");
        retrieveReq.onreadystatechange = function () {
            GetContactData(this);
        };
        retrieveReq.send();
    }
    
    function GetContactData(retrieveReq) {
    var retrieved = JSON.parse(retrieveReq.responseText).d
    alert(retrieveReq.status)
        if (retrieveReq.readyState == 4) {
            if (retrieveReq.status == 200) {
                var retrieved = JSON.parse(retrieveReq.responseText).d;
                Xrm.Page.getAttribute("new_telephone").setValue(retrieved.results[0].telephone1);
            }
        }
    }

    Thursday, July 11, 2013 8:57 AM

All replies

  • Hi,

    Try like below code. OR see this link http://rajeevpentyala.wordpress.com/2012/02/12/retrieve-record-using-odata-and-jquery-in-crm-2011/

    function GetRelated() {
    var context = Xrm.Page.context;
    var EntityID = Xrm.Page.data.entity.getId();
    var serverUrl = context.getServerUrl();
    var ODataPath = serverUrl + “/XRMServices/2011/OrganizationData.svc”;
    var retrieveResult = new XMLHttpRequest();
    retrieveResult.open(“GET”, ODataPath + “/AccountSet?$filter=AccountId eq (guid’” + EntityID + “‘)&$expand=Account_CustomerAddress”, false);
    retrieveResult.setRequestHeader(“Accept”, “application/json”);
    retrieveResult.setRequestHeader(“Content-Type”, “application/json; charset=utf-8″);
    retrieveResult.send();
    if (retrieveResult.readyState == 4 /* complete */) {
    if (retrieveResult.status == 200) {
    var retrieved= this.parent.JSON.parse(retrieveResult.responseText).d;
    var Result = retrieved.results[0];
    //Field From Account
    alert(Result.Name);
    //fields from more address
    alert(Result.Account_CustomerAddress.results[0].Line1);
    }
    }

    Thanks

    Sravan J

    • Edited by sravan J Thursday, July 11, 2013 9:16 AM small modify
    Thursday, July 11, 2013 9:15 AM
  •  new_accountname doesnot look like a lookup. If all accounts have unique names than you can use name field in the filter.

    Account is parent and phone call is child therefore you can also use:-

    Xrm.Page.getAttribute("new_telephone").setValue(window.top.opener.parent.Xrm.Page.getAttribute("telephone1").getValue());

    Regards Faisal

    Thursday, July 11, 2013 9:16 AM
  • Thanks guys for your reply. But it still doesn't work...

    Is it normal that I find "400" when I try to display retrieveReq.status ?

    Thursday, July 11, 2013 4:11 PM