2013-10-31 88 views
0

我是CRM開發新手。我知道一個基本的東西,如「2011年最佳實踐」 我現在想明白如何使用查找字段。我認爲我爲自己選擇了最簡單的方式。CRM 2011正在檢索查找

我有一個costum實體「合同」它有5個字段,其中2個是查詢。 第一查找(agl_contractId) - 它是一個鏈接自我 第二查找(agl_ClientId) - 鏈接到客戶端。

我需要什麼?

當我選擇填寫首先查找(agl_contractId),腳本應在本合同找到一個客戶端和複製過去,以目前的形式。

我所做的腳本,但它不是工作...(((

function GetAccountFromContract() 
{ 
    XrmServiceToolkit.Rest.Retrieve(Xrm.Page.getAttribute("agl_osnovnoy_dogovorid").getValue(), 
     'agl_osnovnoy_dogovoridSet', 
     null,null, 
     function (result) { 
      var Id = Xrm.Page.getAttribute("agl_osnovnoy_dogovorid").getValue(); 

      if (result.Id != null) { 
       var LookupData = new Array(); 
       var LookupItem = new Object(); 
       var lookuptextvalue = lookupvalue[0].name; 
       var lookupid = lookupvalue[0].id; 
       var lokupType = lookupvalue[0].entityType; 

       alert(lookupvalue); 
       alert(lookupData); 

       Xrm.Page.getAttribute("agl_accountid").setValue(lookupData); 
      } 
     }, 
      function (error) { 
       equal(true, false, error.message); 
      }, 
        false 
     ); 
    } 

回答

1

如果我明白你的好:當您選擇合同中agl_osnovnoy_dogovorid領域,你想拉客戶財產從合同並把它放在agl_accountid

如果這是正確的:?

首先,獲得選擇合同的編號(從agl_osnovnoy_dogovorid場)

var selectedContract = new Array(); 
selectedContract = Xrm.Page.getAttribute("agl_osnovnoy_dogovorid").getValue(); 
{ 
    var guidSelectedContract = selectedContract[0].id; 
    //var name = selectedContract[0].name;  
    //var entType = selectedContract[0].entityType; 
} 

其次,檢索客戶端從agl_osnovnoy_dogovorid。你的OData查詢會像:(在例子中,我使用客戶編號領域對於你的情況輸入端字段的架構名稱)

http://crmserver/org/XRMServices/2011/OrganizationData.svc/ContractSet(guid'" + guidSelectedContract + "')/CustomerId 

。 現在,執行查詢,並把結果放入agl_accountid領域:

$.getJSON(
Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/ContractSet(guid'" + guidSelectedContract + "')/CustomerId", 
function(data){ 
if(data.d.CustomerId != null && data.d.CustomerId.Id != null && data.d.CustomerId.Id != "undefined") 
{ 
    //set agl_accountid field 
    Xrm.Page.getAttribute("agl_accountid").setValue([{id:data.d.CustomerId.Id, name:data.d.CustomerId.Name, typename:data.d.CustomerId.LogicalName}]); 
} 
}); 
0

您使用REST來獲取數據,而且使用FetchXml例子來設置agl_accoutid查找。 也有一些條件不清楚...無論如何...我已經將變更合併到您的原始文章。

function GetAccountFromContract() 
{ 
    var aodLookupValue = Xrm.Page.getAttribute("agl_osnovnoy_dogovorid").getValue(); 
    if (!aodLookupValue) return; 

    XrmServiceToolkit.Rest.Retrieve(aodLookupValue[0].id , 
     'agl_osnovnoy_dogovoridSet', null,null, 
     function (result) { 
      var customer = result.d["your attribute name"];  
      if (customer) { 

       var LookupData = new Array(); 
       var LookupItem = new Object(); 
       var lookuptextvalue = customer.Name; 
       var lookupid = customer.Id; 
       var lokupType = customer.LogicalName; 

       alert(lookupvalue); 
       alert(lookupData); 

       Xrm.Page.getAttribute("agl_accountid").setValue(lookupData); 
      } 
     }, 
     function (error) { 
       equal(true, false, error.message); 
     }, false); 
}