30.03.2012, 12:16 | #1 |
Участник
|
Ошибка при инициализации SalesOrderDetail
Доброго времени суток!
суть проблемы: 1) есть код, который создает SalesOrder & SalesOrderDetail: CrmServiceContext svcContext = new CrmServiceContext(base.Service);//берем текущий контекст SalesOrder newSO = initSalesOrder(AccId, "SalesOrder #" + SOnumber.ToString() + "-" + groupedByBillToAccountTransactions[AccId].Count.ToString()); //эта функция заполняет поля SalesOrder. тут ошибок нет=) фактическое заполнение полей, из другой entity по всем правилам Guid newSalesOrderId = Guid.Empty; newSO.Id = Guid.NewGuid(); newSalesOrderId = newSO.Id; svcContext.AddObject(newSO); //добавляем наш SalesOrder в контекст //далее добавляем SalesOrderDetail в наш ордер: SalesOrderDetail newSalesOrderDetail = new SalesOrderDetail(); newSalesOrderDetail = initSalesOrderDetail(TransactionsCache[TransactionId], newSalesOrderId);//эта функция заполняет поля SalesOrderDetail по всем правилам svcContext.AddRelatedObject ( newSO, new Relationship("order_details"), newSalesOrderDetail );//добавляем связь между SalesOrderDetail и SalesOrder svcContext.SaveChanges();//сохраняем изменения в CRM 2)проблема в следующем: - если SalesOrderDetail заполненна правильно, то все работает отлично. создает подряд все что нужно - если в SalesOrderDetail заполнить поля ProductID & ProductDescription одновременно (да, такого делать нельзя - должна быть ошибка), то вылетает следующее: Message from webpage --------------------------- { "error": { "code": "-2147220910", "message": { "lang": "en-US", "value": "VerifyCommitted - Transaction has not been committed" } } } собественно, после этого вылета, все перестает работать 3) вопрос в следующем: как можно отловить эту ошибку (try ... catch не помог: все строки обвалакивал им - все-равно вылет) так, чтобы работа не завершалась, а скажем выдавалось сообщение "была ошибка"? p.s. код предтавлен выборочный. сама прога многобольше p.p.s. вылет происходит скорее всего при: а) заполнении полей SalesOrderDetail б) добавлении SalesOrderDetail в контекст както вериться в это=) p.p.p.s проверять условия правильного заполнения руками - плохо. стараюсь вылавливать ошибки ЦРМ из него самого - поэтому и добавляю неправильные entity, заставляя его критовать. как это делать? p.p.p.p.s. тут многобукаф. извиняюсь - первый пост=) |
|
30.03.2012, 14:11 | #2 |
Участник
|
вообще проблему можно описать еще проще:
как можно отлавливать ошибки вида: { "error": { "code": "-2147220910", "message": { "lang": "en-US", "value": "VerifyCommitted - Transaction has not been committed" } из кода? |
|
31.03.2012, 14:38 | #3 |
Участник
|
Я Вот думал, над тем, что Вы хотите сделать. Как я понимаю, Вы хотите создать связку SalesOrder, SalesOrderDetail, но при этом у Вас может быть неверно заполнена строка заказа.
Но Если создать заказ, а потом строку заказа, и возникнет Exception, то разве создание заказа не отменится? Это же вроде из транзакции должно следовать |
|
01.04.2012, 17:16 | #4 |
Участник
|
Вы правильно поняли суть проблемы. И да, при вылете эксепшена ничего не делается. вот только отловить его никак не получается =(
|
|