如何在MS CRM中更新地址复合?

时间:2017-03-02 05:03:31

标签: c# dynamics-crm

问题 我试图让我的帐户用新地址更新复合地址。 Al客户地址中的字段显示新值,但复合地址显示旧地址。

期望的结果: 更改地址字段后,复合字段将更新为新地址

实际结果 复合字段显示旧地址

我试过的事情:

  1. 更新地址
  2. 删除地址并创建新地址(BAD IDEA)
  3. 创建帐户时将所有字段设置为默认值
  4. 直接设置复合字段
  5. 将版本号设置为默认值0x00003F3F
  6. 将所有地址字段设置为空
  7. 当前代码:

        Entity theAccount = proxy.Retrieve("account", Guid.Parse("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"), new Microsoft.Xrm.Sdk.Query.ColumnSet(true));
    Guid address1_id = theAccount.Attributes.ContainsKey("address1_addressid") ? (Guid)theAccount.Attributes["address1_addressid"] : Guid.Empty;
    
    Entity theAddress = new Entity()
    {
        LogicalName = "customeraddress",
        Id = address1_id
    };
    theAddress.Attributes["line1"] = null;
    theAddress.Attributes["line2"] = null;
    theAddress.Attributes["line3"] = null;
    theAddress.Attributes["city"] = null;
    theAddress.Attributes["stateorprovince"] = null;
    theAddress.Attributes["country"] = null;
    theAddress.Attributes["county"] = null;
    theAddress.Attributes["postofficebox"] = null;
    theAddress.Attributes["postalcode"] = null;
    theAddress.Attributes["composite"] = null;
    
    proxy.Update(theAddress);
    
    theAddress.Attributes["line1"] = "1 New Street";
    theAddress.Attributes["line2"] = null;
    theAddress.Attributes["line3"] = null;
    theAddress.Attributes["city"] = "New City";
    theAddress.Attributes["stateorprovince"] = "New State";
    theAddress.Attributes["country"] = "New Country";
    theAddress.Attributes["county"] = null;
    theAddress.Attributes["postofficebox"] = null;
    theAddress.Attributes["postalcode"] = "1234";
    
    proxy.Update(theAddress);
    

    问题 如何在更新地址字段时成功更改Microsoft Dynamic CRM中的地址复合字段

1 个答案:

答案 0 :(得分:2)

您应该更新帐户记录的地址字段,而不是CustomerAddress。

Entity theAccount = new Entity("account", "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX");

theAccount["address1_line1"] = null;
theAccount["address1_line2"] = null;
theAccount["address1_line3"] = null;
theAccount["address1_city"] = null;
theAccount["address1_stateorprovince"] = null;
theAccount["address1_country"] = null;
theAccount["address1_county"] = null;
theAccount["address1_postofficebox"] = null;
theAccount["address1_postalcode"] = null;
theAccount["address1_composite"] = null;

proxy.Update(theAccount);

theAccount["address1_line1"] = "1 New Street";
theAccount["address1_line2"] = null;
theAccount["address1_line3"] = null;
theAccount["address1_city"] = "New City";
theAccount["address1_stateorprovince"] = "New State";
theAccount["address1_country"] = "New Country";
theAccount["address1_county"] = null;
theAccount["address1_postofficebox"] = null;
theAccount["address1_postalcode"] = "1234";

proxy.Update(theAccount);

如果您正在进行的操作是在表单打开时进行的某种实时操作,您还可能需要调用Xrm.Page.data.refresh(false)以显示新数据。