Silverlight -CRM2011:货币不能为空

时间:2012-12-21 15:36:18

标签: c# silverlight dynamics-crm-2011

我使用Silverlight o数据服务与我的应用程序中的crm 2011进行交互 当我尝试将数据保存在实体SalesOrder中时,如下所示:

Private void beginSave()
{
SalesOrder orderHeader = new SalesOrder();

orderHeader.TransactionCurrencyId = new EntityReference(){ Id = new Guid("77D695B5-ACB4-E111-97BC-00155D55B216"), LogicalName="transactioncurrency" };
orderHeader.AccountId = new EntityReference() { Id = new Guid(MyClassGeneralOrder.customerId), LogicalName = "account" };
orderHeader.Name = "My Name";
Money totalAmount = new Money(); Money totalAmountBase = new Money(); 
Money totalTaxe = new Money(); Money totalAmountLessFreight = new Money();
totalAmount.Value = (decimal)MyClassGeneralOrder.InvoiceTotal;
totalAmountBase.Value = (decimal)MyClassGeneralOrder.totalRetail;
totalTaxe.Value = (decimal)MyClassGeneralOrder.totalCharges;
totalAmountLessFreight.Value = (decimal)MyClassGeneralOrder.totalNet;
orderHeader.TotalAmount = totalAmount;
orderHeader.TotalAmount_Base = totalAmountBase;
orderHeader.TotalTax = totalTaxe;
orderHeader.TotalAmountLessFreight = totalAmountLessFreight;
orderHeader.Description = element.Name;
orderHeader.PriceLevelId = new EntityReference() { Id = new Guid("03C5C4CB-EBD0-E111-8140-00155D55B216"), LogicalName="pricelevel" };

_context.AddToSalesOrderSet(orderHeader);
_context.BeginSaveChanges(SaveCallback, orderHeader);

}


private void SaveCallback(IAsyncResult result)
{
_context.EndSaveChanges(result);

}

在我的函数EndSaveChanges(结果)中,我收到以下错误消息:«货币不能为空»。 我不明白为什么,因为我的“orderHeader.TransactionCurrencyId”字段不为空。

2 个答案:

答案 0 :(得分:0)

我假设所有其他货币字段都已填充?

你有任何一个机会因你的问题而被解雇,这会引发异常。这似乎总是咬我。尝试禁用除您正在处理的插件之外的所有其他插件......

如果您仍然遇到问题,请启用crm服务器端跟踪。您将获得更好的错误信息。使用CRM诊断工具打开跟踪日志记录:http://crmdiagtool2011.codeplex.com

答案 1 :(得分:0)

大多数情况下你的Guid是错的,结果是null。确保它是您正在使用的正确GUID。对该实体运行高级查找并找到正确的GUID。对GUID进行硬编码并不是一个好主意。如果将解决方案部署到其他组织,则无效。