13.10.2008, 20:39 | #1 |
Участник
|
Generic SQL error.
Доброе время суток, уважаемые коллеги)
Третий день не могу справиться с ошибкой Generic SQL error. Смотрел по форуму , есть Такое с репорт сервером, но не мой случай. Если сталкивались - поможите! Задача: плагин на пост-криейт квот (у меня СРМ 4.0 на англицком) создает строки квоте продактс(квоте детайлс) на основании данных из родительской (для квот) опортюнити. Вот код, создающий строки из существующих продуктов. Прайс лист учтен, входящие данные полностью корректны. Комменты не убираю, просто что бы было видно какие методы использовались. Код: #region Create quotedetails if (_newQuoteProp != null) { try { foreach (DictionaryEntry cDe in _newQuoteProp) { if (cDe.Value.ToString() == "") { continue; } else { quotedetail existProduct = new quotedetail(); //add product & unit LookupProperty uomid = Factory.GetUnitLookup(service); LookupProperty productid = Factory.GetProductLookup(service, cDe.Key.ToString()); if (uomid != null && productid != null) { existProduct.uomid = uomid.Value; //existProduct.uomid.name = uomid.Name; existProduct.productid = productid.Value; //existProduct.productid.name = productid.Name; // for dynamic entity //existProduct.Properties.Add(uomid); //existProduct.Properties.Add(productid); } //DynamicEntity existProduct = new DynamicEntity(); //existProduct.Name = "quotedetail"; //existProduct.Properties.Add(new StringProperty("quantity", "1")); //existProduct.Properties.Add(quoteId); //Microsoft.Crm.Sdk.StringProperty p = new StringProperty("priceperunit", cDe.Value.ToString()); //existProduct.Properties.Add(p); //CrmBoolean c = new CrmBoolean(true); //CrmBooleanProperty cPrice = new CrmBooleanProperty("ispriceoverridden", c); //CrmBooleanProperty cProduct = new CrmBooleanProperty("isproductoverridden", c); //existProduct.ispriceoverridden = cPrice.Value; //existProduct.ispriceoverridden.name = cPrice.Name; //existProduct.isproductoverridden = cProduct.Value; //existProduct.isproductoverridden.name = cProduct.Name; //CrmNumber n = new CrmNumber(lineNumber); //CrmNumberProperty N = new CrmNumberProperty("lineitemnumber", n); //existProduct.lineitemnumber = N.Value; LookupProperty quoteId = new LookupProperty("quoteid", new Lookup("quote", quoteGUID)); existProduct.quoteid = quoteId.Value; //existProduct.quoteid.name = quoteId.Name; CrmDecimal dec = new CrmDecimal(1); CrmDecimalProperty quant = new CrmDecimalProperty("quantity", dec); existProduct.quantity = quant.Value; CrmMoney money = new CrmMoney(Convert.ToDecimal(cDe.Value.ToString())); CrmMoneyProperty priceperUnit = new CrmMoneyProperty("priceperunit", money); existProduct.priceperunit = priceperUnit.Value; existProduct.description = cDe.Key.ToString().Remove(0, 3); //existProduct.productdescription = cDe.Key.ToString().Remove(0,3); //existProduct.owninguser = new UniqueIdentifier(context.UserId); // create of transactioncurrencyid not allowed!!! //LookupProperty taci = new LookupProperty("transactioncurrencyid", new Lookup("transactioncurrency", new Guid(((Lookup)entity.Properties["transactioncurrencyid"]).Value.ToString()))); //existProduct.transactioncurrencyid = taci.Value; //existProduct.transactioncurrencyid.name = taci.Name; //TargetCreateQuoteDetail target = new TargetCreateQuoteDetail(); ////TargetCreateDynamic target = new TargetCreateDynamic(); //target.QuoteDetail = existProduct; //CreateRequest create = new CreateRequest(); //create.Target = target; //CreateResponse responce = (CreateResponse)service.Execute(create); Guid quotedetailId = service.Create(existProduct); //Guid k = service.Create(existProduct); //KeyProperty k = new KeyProperty("quotedetailid", new Key()); //existProduct.quotedetailid.Value = k; //Guid quotedetailId = responce.id; lineNumber++; // Don't forget check if quotedetail exist! } } } catch (System.Web.Services.Protocols.SoapException e) { throw new Exception ("Wrong plugin execution!\n" + e.Message + "\n" + e.StackTrace + e.Data); } } #endregion Create quotedetails InnerText "\n 0x80044150\n Generic SQL error.\n Platform\n" |
|
|
|