我是CRM开发的新手。我知道一个基本的东西,如“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
);
}
答案 0 :(得分:1)
如果我理解你:当您在 agl_osnovnoy_dogovorid 字段中选择合同时,您想从该合同中提取客户端属性并将其放入 agl_accountid 字段中?
如果这是对的:
首先,获取所选合同的ID(来自 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
(例如,我使用 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}]);
}
});
答案 1 :(得分: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 );
}