【问题标题】:Dynamics CRM 2011, setting currency field programmaticallyDynamics CRM 2011,以编程方式设置货币字段
【发布时间】:2012-05-17 18:27:14
【问题描述】:

如果我在 CRM 2011 中手动创建新的联系人记录,货币字段会正确创建,“$”可见,我可以填充这些字段并保存记录。

如果我实例化一个 IOrganizationService 并以编程方式创建一个联系人记录,那么除了货币字段之外,一切正常。没有产生我可以看到的错误;记录已创建,所有其他字段均已填充,但货币字段留空。

如果我在以编程方式创建记录后尝试手动更新这些货币字段,则会收到以下错误: 如果货币字段中存在值,则需要使用货币。选择一种货币,然后重试。

我的用户记录设置为货币 = 美元。

为什么这在 CRM 中有效,但在 C# 中无效?我需要做什么才能让它工作?

【问题讨论】:

    标签: c# dynamics-crm-2011 dynamics-crm crm currency


    【解决方案1】:

    设置货币

    获取:-

    var totalValue = ((Money)item.Attributes[attributeName]).Value;
    

    发帖:-

    newSalesOrder[attributeName] = new Money((decimal)totalValue);
    

    【讨论】:

      【解决方案2】:

      由于支持多币种,您必须在使用 SDK 创建时为该特定记录显式设置币种。

      EntityReference currencyType = new EntityReference();
      currencyType.Id = “(The Guid Of The Currency Type Goes Here)”;
      currencyType.LogicalName = “transactioncurrency”;
      
      entity.Attributes.Add(“transactioncurrencyid”,currencyType);
      

      在创建时从 CRM UI 中,查找字段 transactioncurrencyid 将从用户设置中填充。

      对于已经创建的旧记录(当用户设置未设置为默认货币或在您的情况下),您必须从表单编辑器将该查找添加到表单中,自定义和发布。然后在查找这些记录时分配货币(可能是批量编辑)。

      【讨论】:

        【解决方案3】:

        根据http://msdn.microsoft.com/en-us/library/gg328530.aspx 上的联系人实体元数据,交易货币id 类型是“查找”。因为它是一种查找类型,所以您需要以不同的方式传递值。当您通过 Web 服务创建记录时,您必须在调用 CRM Web 服务上的 .create 命令之前为货币构建一个 EntityReference 以传递给联系人实体的属性。如果您尝试将其作为字符串传递,它将不会做任何事情,也不会像您描述的那样接受它。我还是 CRM 网络服务的新手,但请尝试一下,看看它是否有效。

        大概是这样的:(元数据参考http://msdn.microsoft.com/en-us/library/gg327883.aspx

        EntityReference currencyType = new EntityReference();
        currencyType.Id = "(The Guid Of The Currency Type Goes Here)";
        currencyType.LogicalName = "transactioncurrency";
        
        contactGoingToCrm.Attributes.Add(new keyvaluepair<string,object>("currencyid",currencyType));
        

        【讨论】:

          【解决方案4】:

          C# 代码可能如下所示。

          myEntity.Attributes["abc_transactionamount"] = new Money((decimal)obj.TotalAmountToPay);
          

          【讨论】:

          • 您无法将货币字段转换为小数。
          猜你喜欢
          • 1970-01-01
          • 2013-07-03
          • 1970-01-01
          • 2014-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-29
          • 2011-12-13
          相关资源
          最近更新 更多