C# Dynamics CRM 2011,以编程方式设置货币字段

C# Dynamics CRM 2011,以编程方式设置货币字段,c#,dynamics-crm-2011,dynamics-crm,crm,currency,C#,Dynamics Crm 2011,Dynamics Crm,Crm,Currency,如果我在CRM 2011中手动创建一个新的联系人记录,货币字段将正确创建,美元将可见,我可以填充这些字段并保存记录 如果我实例化IOOrganizationService并以编程方式创建联系人记录,则除货币字段外,其他一切都可以正常工作。没有生成我可以看到的错误;将创建记录,填充所有其他字段,但货币字段保留为空 如果在以编程方式创建记录后尝试手动更新这些货币字段,则会出现以下错误: 如果货币字段中存在值,则需要货币。请选择一种货币,然后重试 我的用户记录设置为货币=美元 为什么这在CRM中有效而

如果我在CRM 2011中手动创建一个新的联系人记录,货币字段将正确创建,美元将可见,我可以填充这些字段并保存记录

如果我实例化IOOrganizationService并以编程方式创建联系人记录,则除货币字段外,其他一切都可以正常工作。没有生成我可以看到的错误;将创建记录,填充所有其他字段,但货币字段保留为空

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

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


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

根据上的联系人实体元数据,事务currencyid类型是“查找”。因为它是一种查找类型,所以需要以不同的方式传递值。通过webservice创建记录时,在调用CRM webservice上的.create命令之前,必须为货币构建EntityReference以传递给联系人实体的属性。如果您尝试将其作为字符串传递,它将不会执行任何操作,不会出现错误,也不会像您描述的那样接受它。我对CRM Web服务还是新手,但请尝试一下,看看它是否有效

它可能是这样的:元数据供参考


根据上的联系人实体元数据,事务currencyid类型为“查找”。因为它是一种查找类型,所以需要以不同的方式传递值。通过webservice创建记录时,在调用CRM webservice上的.create命令之前,必须为货币构建EntityReference以传递给联系人实体的属性。如果您尝试将其作为字符串传递,它将不会执行任何操作,不会出现错误,也不会像您描述的那样接受它。我对CRM Web服务还是新手,但请尝试一下,看看它是否有效

它可能是这样的:元数据供参考


C代码可能如下所示

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

C代码可能如下所示

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

由于多货币支持,您必须在使用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


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

由于多货币支持,您必须在使用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

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

设置货币

获取:-

职位:-

设定货币

获取:-

职位:-


不能将货币字段转换为十进制。不能将货币字段转换为十进制。
newSalesOrder[attributeName] = new Money((decimal)totalValue);