//public struct OrderShort { // public String UserOrgCode; // public String Code; // public String SubjectCode; // public Boolean IsClosed; // public DateTime DateOpen; // public DateTime DateClose; //} //public static IList<OrderShort> Catalog(IObjectSpace os) { // IIBSSyncService syncservice = new HTTPSyncService(ConfigurationManager.AppSettings["IBS.SyncService"]); // XWZKXCIA lprm = new XWZKXCIA(); // lprm.CMD = "CATALOG"; // lprm.OGCODE = 1000; // XWZKXCOA lres = syncservice.XWZKXC0N(lprm); // List<OrderShort> result = new List<OrderShort>(lres.ZKLIST.Count); // foreach (XWZKXCOAZKLIST item in lres.ZKLIST) { // OrderShort ritem = new OrderShort(); // ritem.UserOrgCode = "1000"; // ritem.Code = item.ZKCODE; // ritem.IsClosed = item.ZKISCLOSED; // ritem.SubjectCode = item.ZKSUBJECTCODE; // DateTime.TryParseExact(item.ZKDTOPEN, "yy-MM-dd", null, default(System.Globalization.DateTimeStyles), out ritem.DateOpen); // DateTime.TryParseExact(item.ZKDTCLOSE, "yy-MM-dd", null, default(System.Globalization.DateTimeStyles), out ritem.DateClose); // result.Add(ritem); // } // return result; //} public static XWZKXCOA Catalog(IObjectSpace os) { IIBSSyncService syncservice = new HTTPSyncService(ConfigurationManager.AppSettings["IBS.SyncService"]); XWZKXCIA lprm = new XWZKXCIA(); lprm.CMD = "CATALOG"; lprm.OGCODE = 1000; XWZKXCOA lres = syncservice.XWZKXC0N(lprm); //List<OrderShort> result = new List<OrderShort>(lres.ZKLIST.Count); //foreach (XWZKXCOAZKLIST item in lres.ZKLIST) { // OrderShort ritem = new OrderShort(); // ritem.UserOrgCode = "1000"; // ritem.Code = item.ZKCODE; // ritem.IsClosed = item.ZKISCLOSED; // ritem.SubjectCode = item.ZKSUBJECTCODE; // DateTime.TryParseExact(item.ZKDTOPEN, "yy-MM-dd", null, default(System.Globalization.DateTimeStyles), out ritem.DateOpen); // DateTime.TryParseExact(item.ZKDTCLOSE, "yy-MM-dd", null, default(System.Globalization.DateTimeStyles), out ritem.DateClose); // result.Add(ritem); //} return(lres); }
protected void DoWorkCore(LongOperation longOperation) { //Random random = new Random(); IObjectSpace os = Application.CreateObjectSpace(); // IList<FullyAuditedBatchCreationObject> collection = updatingObjectSpace.GetObjects<FullyAuditedBatchCreationObject>(); int index = 0; try { XWZKXCOA short_orders = SynIBSOrderExchangeLogic.Catalog(os); IList <fmCOrderExt> orders = os.GetObjects <fmCOrderExt>(); IList <fmСOrderAnalitycAccouterType> acc_types = os.GetObjects <fmСOrderAnalitycAccouterType>(); IList <fmCFAAccount> accounts = os.GetObjects <fmCFAAccount>(new BinaryOperator("AccountSystem.Code", "1000")); foreach (XWZKXCOAZKLIST short_order in short_orders.ZKLIST) { fmCOrderExt order = orders.First(item => item.Code == short_order.ZKCODE); if (order == null) { Trace.TraceWarning("IBSOrderSyncAll: Order >" + short_order.ZKCODE + "< not found"); continue; } if (!short_order.ZKISCLOSED) { if (order.Status == fmIOrderStatus.Project || order.Status == fmIOrderStatus.FinOpened) { order.Status = fmIOrderStatus.Opened; order.IsClosed = false; } } else { if (order.Status == fmIOrderStatus.Project || order.Status == fmIOrderStatus.FinClosed) { order.Status = fmIOrderStatus.Closed; order.IsClosed = true; } } if (!String.IsNullOrEmpty(short_order.ZKACCOUNTTYPE)) { order.AnalitycAccouterType = acc_types.FirstOrDefault(x => x.Code == short_order.ZKACCOUNTTYPE); } if (!String.IsNullOrEmpty(short_order.ZKACCOUNTCODE)) { order.BuhAccount = accounts.FirstOrDefault(x => x.BuhCode == short_order.ZKACCOUNTCODE); } os.CommitChanges(); // if (longOperation.Status == LongOperationStatus.InProgress) { longOperation.RaiseProgressChanged((int)((++index * 100) / short_orders.ZKLIST.Count), "Обновляем заказ " + index.ToString() + " из " + short_orders.ZKLIST.Count.ToString()); } if (longOperation.Status == LongOperationStatus.Cancelling) { return; } } } catch (LongOperationTerminateException) { os.Rollback(); longOperation.CancelAsync(); } catch (Exception e) { longOperation.TerminateAsync(); throw e; } //os.Rollback(); }