2012-12-21 6 views
0

J'utilise les services o-données Silverlight pour interagir avec crm 2011 de ma demande Lorsque je tente de sauvegarder les données dans l'entité SalesOrder comme suit:Silverlight -CRM2011: La monnaie ne peut pas être null

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

} 

En ma fonction EndSaveChanges (résultat), je reçois ce message d'erreur:: «La devise ne peut pas être nulle». Je ne comprends pas pourquoi, car mon champ "orderHeader.TransactionCurrencyId" n'est pas nul.

+0

Le fait que vous utilisiez un Guid codé en dur semble étrange. – ChrisF

+0

Vraiment une mauvaise idée de coder en dur le Guid pour le TransactionCurrencyId. [Ce fil de discussion] (http://social.microsoft.com/Forums/fr/crm/thread/dc4ad6d3-b75b-449f-9df5-6b972d0abd43) montre comment récupérer le Guid par programme. –

+0

Salut Sandta Walters, Comme le forum a déclaré que le meilleur moyen est contact ["transactioncurrencyid"] = new EntityReference ("transactioncurrency", nouveau Guid ("9D2A622D-CD69-E011-9321-00155D042416")); – wben

Répondre

0

Je suppose que tous vos autres champs de devise sont remplis?

Toute chance que vous ayez un autre plugin qui tire suite à la vôtre qui lève l'exception. Cela semble toujours me mordre. Essayez de désactiver tous les autres plugins à l'exception de celui sur lequel vous travaillez ...

Si vous rencontrez toujours des problèmes, activez le suivi côté serveur crm. Vous obtiendrez des informations d'erreur bien meilleures. Utilisez l'outil de diagnostic CRM pour activer la consignation de trace: http://crmdiagtool2011.codeplex.com

0

La plupart de vos indications sont erronées et leur résultat est null. Assurez-vous que c'est le GUID correct que vous utilisez ou non. Exécutez une recherche avancée sur l'entité et trouvez le GUID correct. Ce n'est pas une bonne idée de coder en dur le GUID. Si vous déployez vos solutions dans une autre organisation, cela ne fonctionnera pas.

Questions connexes