CRM 2011 Retrieving lookup
我是 CRM 开发的新手。我知道诸如"crm 2011 最佳实践"之类的基本知识
我现在想了解如何使用查找字段。而且我认为我为自己选择了最简单的方法。
我有一个服装实体"合同",它还有 5 个字段,其中 2 个是查找。
第一次查找 (agl_contractId) - 它本身就是一个链接
第二次查找 (agl_ClientId) - 链接到客户端。
我需要什么?
当我选择fill First lookup (agl_contractId)时,脚本应该在这个合约中找到一个客户端并将它复制粘贴到当前表单。
我已经完成了脚本,但它不起作用... (((
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 ); } |
如果我理解你的话:当你在 agl_osnovnoy_dogovorid 字段中选择 Contract 时,你想从该 Contract 中提取 Client 属性并将其放入 agl_accountid 字段中?
如果是这样的话:
首先,获取所选合约的 ID(来自 agl_osnovnoy_dogovorid 字段)
1 2 3 4 5 6 7 | 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 查询将类似于:
1 | http://crmserver/org/XRMServices/2011/OrganizationData.svc/ContractSet(guid'" + guidSelectedContract +"')/CustomerId |
(在示例中,我使用的是 CustomerId 字段。对于您的情况,请输入客户端字段的架构名称)。
现在,执行查询并将结果放入 agl_accountid 字段:
1 2 3 4 5 6 7 8 9 | $.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}]); } }); |
您使用 REST 检索数据但也使用 FetchXml 示例设置 agl_accoutid 查找。
还有一些条件不清楚a€|无论如何€|我已将更改合并到您的原始帖子中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 ); } |