2017-03-03 199 views
0

我有這個檢查交易實體,該「cse_vendor_name」(供應商主實體)和「cse_expense_tracker」上會有一個查找字段,因此每次我將選擇一個cse_vendor_name它會自動填充cse_expense_tracker的字段。我已經開始嘗試這項工作的代碼,但它沒有,Javascript - 在Dynamic CRM中選擇查找字段時自動填充字段

function makeRequest(method, url) { 
return new Promise(function (resolve, reject) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open(method, url); 
    xhr.setRequestHeader("OData-MaxVersion", "4.0"); 
    xhr.setRequestHeader("OData-Version", "4.0"); 
    xhr.setRequestHeader("Accept", "application/json"); 
    xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
    xhr.onload = function() { 
     if (this.status >= 200 && this.status < 300) { 

      resolve(xhr.response); 
     } else { 
      reject({ 
       status: this.status, 
       statusText: xhr.statusText 
      }); 
     } 
    }; 
    xhr.onerror = function() { 
     reject({ 
      status: this.status, 
      statusText: xhr.statusText 
     }); 
    }; 
    xhr.send(); 
});} 

function setParentAccountbasedonPrimaryContact() { 
var lookup1 = Xrm.Page.getAttribute("cse_vendor_name").getValue()[0].id; 
var clientUrl = Xrm.Page.context.getClientUrl(); 
var query = clientUrl + "/api/data/v8.0/cse_vendormaster(" + lookup1.slice(1, -1) + ")?$select=_cse_expense_category_value"; 
makeRequest('GET', query) 
.then(function (res) { 
    var res2 = JSON.parse(res); 
    var guid = res2._cse_expense_category_value; 
    var query2 = clientUrl + "/api/data/v8.0/cse_checkingaccounttransaction(" + guid + ")?$select=cse_vendor_name"; 
    makeRequest('GET', query2) 
.then(function (response) { 
    var res3 = JSON.parse(response); 
    var value = new Array(); 
    value[0] = new Object(); 
    value[0].id = guid; 
    value[0].name = res3.name; 
    value[0].entityType = "cse_checkingaccounttransaction"; 
    Xrm.Page.getAttribute("cse_expense_category").setValue(value); 


}) 
    .catch(function (err) { 
     console.error('there was an error!', err.statusText); 
    }); 


    }) 


    .catch(function (err) { 
    console.error(' there was an error!', err.statusText); 


    }); 
} 
+0

你能更清楚地定義你的目標是什麼嗎? – Jackstine

+0

你會得到什麼錯誤?你試過調試它嗎? –

+0

@傑克斯汀好吧。 Enity名稱:支票帳戶 領域:cse_vendor_name(供應商主數據的查找) cse_expense_category(場連接到cse_vendor_name) – Woshooo

回答

1

所以這就是答案時,我選擇了一個查找字段來填充查找字段。這個解決方案的唯一問題是,在該字段中存在一個說明 「LookUp控制錯誤:無法將typename = item添加到查找控件」,所以當我單擊保存時出現此問題。它會再次進行查找以選擇數據。

function makeRequest(method, url) { 
return new Promise(function (resolve, reject) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open(method, url); 
    xhr.setRequestHeader("OData-MaxVersion", "4.0"); 
    xhr.setRequestHeader("OData-Version", "4.0"); 
    xhr.setRequestHeader("Accept", "application/json"); 
    xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
    xhr.onload = function() { 
     if (this.status >= 200 && this.status < 300) { 

      resolve(xhr.response); 
     } else { 
      reject({ 
       status: this.status, 
       statusText: xhr.statusText 
      }); 
     } 
    }; 
    xhr.onerror = function() { 
     reject({ 
      status: this.status, 
      statusText: xhr.statusText 
     }); 
    }; 
    xhr.send(); 
}); 
} 
function setExpenseCategorybasedonVendor() { 
var lookup1 = Xrm.Page.getAttribute("cse_vendor_name").getValue()[0].id; 
var clientUrl = Xrm.Page.context.getClientUrl(); 
var query = clientUrl + "/api/data/v8.0/cse_vendormasters(" + lookup1.slice(1, -1) + ")?$select=_cse_expense_category_value"; 
makeRequest('GET', query) 
.then(function (res) { 
var res2 = JSON.parse(res); 
var guid = res2._cse_expense_category_value; 
var query2 = clientUrl + "/api/data/v8.0/cse_expensemasters(" + guid + ")?$select=cse_name"; 
makeRequest('GET', query2) 
.then(function (response) { 
var res3 = JSON.parse(response); 
var value = new Array(); 
value[0] = new Object(); 
value[0].id = guid; 
value[0].name = res3.cse_name; 
value[0].entityType = "cse_expensemasters"; 
Xrm.Page.getAttribute("cse_expense_category").setValue(value); 
}) 
.catch(function (err) { 
console.error('there was an error!', err.statusText); 
}); 
}) 
.catch(function (err) { 
console.error(' there was an error!', err.statusText); 
}); 
} 
+0

對不起,我張貼的答案錯了問題,我應該在我的問題中發佈我的答案,但沒有看到我將其發佈在不同的問題中 – Woshooo

相關問題