0

我是 CRM 开发的新手。我知道一个基本的东西,比如“crm 2011 的最佳实践”,我现在想了解如何使用查找字段。而且我认为我为自己选择了最简单的方法。

我有一个服装实体“合同”,它还有 5 个字段,其中 2 个是查找。第一次查找 (agl_contractId) - 它是它自己的链接 第二次查找 (agl_ClientId) - 链接到客户端。

我需要什么?

当我选择 fill First lookup (agl_contractId)时,脚本应该在这个合约中找到一个 Client 并将其复制粘贴到当前表单。

我已经完成了脚本,但它不起作用......(((

    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
       );
  }
4

2 回答 2

1

如果我理解你的话:当你在agl_osnovnoy_dogovorid字段中选择 Contract 时,你想从该 Contract 中提取 Client 属性并将其放入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检索 Client 。您的 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}]);
}
});
于 2013-10-31T22:44:00.563 回答
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 );
}
于 2013-11-29T19:42:22.030 回答