public void Import(IObjectSpace os, String acc_sys_code, String file_name)
            {
                DelimitedFileEngine engine = new DelimitedFileEngine(typeof(FAAccountImport));

                FAAccountImport[]  records = (FAAccountImport[])engine.ReadFile(file_name);
                fmCFAAccountSystem acc_sys = os.GetObjects <fmCFAAccountSystem>(new BinaryOperator("Code", acc_sys_code), true).FirstOrDefault();

                if (acc_sys == null)
                {
                    acc_sys      = os.CreateObject <fmCFAAccountSystem>();
                    acc_sys.Code = "1000";
                    acc_sys.Name = "Áóõãàëòåðèÿ";
                }
                foreach (FAAccountImport rec in records)
                {
                    fmCFAAccount bs_acc = acc_sys.Accounts.Where(x => x.Code == rec.BsCode).FirstOrDefault();
                    if (bs_acc == null)
                    {
                        bs_acc      = os.CreateObject <fmCFAAccount>();
                        bs_acc.Code = rec.BsCode;
                        acc_sys.Accounts.Add(bs_acc);
                    }
                    if (rec.SsCode == "0000")
                    {
                        bs_acc.Name     = rec.NameShort;
                        bs_acc.NameFull = rec.NameFull;
                    }
                    else
                    {
                        fmCFAAccount ss_acc = acc_sys.Accounts.Where(x => x.Code == rec.SsCode).FirstOrDefault();
                        if (ss_acc == null)
                        {
                            ss_acc      = os.CreateObject <fmCFAAccount>();
                            ss_acc.Code = rec.SsCode;
                            bs_acc.SubAccounts.Add(ss_acc);
                        }
                        ss_acc.BuhCode = rec.BuhCode;
                        if (rec.NameShort.Length > 60)
                        {
                            ss_acc.Name = rec.NameShort.Substring(0, 60);
                        }
                        else
                        {
                            ss_acc.Name = rec.NameShort;
                        }
                        ss_acc.NameFull      = rec.NameFull;
                        ss_acc.IsSelectabled = true;
                    }
                }
            }
        public static void ImportInData(FmDocsFmInData doc, IObjectSpace os, TextReader reader)
        {
            DelimitedFileEngine engine = new DelimitedFileEngine(typeof(InDataImport));

            engine.Options.IgnoreFirstLines = 1;
            InDataImport[] records = (InDataImport[])engine.ReadStream(reader);
            os.Delete(doc.Lines);
            fmCFAAccountSystem fact_system = os.FindObject <fmCFAAccountSystem>(new BinaryOperator("Code", "1000"));
            IList <fmCostItem> cost_items  = os.GetObjects <fmCostItem>();

            foreach (InDataImport rec in records)
            {
                FmDocsFmInData.Line line = doc.LinesCreate();
                line.FactAccount = fact_system.Accounts.FirstOrDefault(x => x.Code == rec.AccountCode);
                line.FmOrder     = os.FindObject <fmCOrder>(new BinaryOperator("Code", rec.OrderCode));
                line.FmCostItem  = cost_items.FirstOrDefault(x => x.Code == rec.CostItemCode);
                line.Summ        = rec.Summ;
            }
        }
            public void Import(IObjectSpace os, String file_name)
            {
                DelimitedFileEngine engine = new DelimitedFileEngine(typeof(fmOrderImport));

                fmOrderImport[]     records = (fmOrderImport[])engine.ReadFile(file_name);
                IList <fmCOrderExt> orders  = os.GetObjects <fmCOrderExt>(null, true);
                fmCFAAccountSystem  acc_sys = os.GetObjects <fmCFAAccountSystem>(new BinaryOperator("Code", "1000"), true).FirstOrDefault();
                IList <fmÑOrderAnalitycAccouterType> acc_types = os.GetObjects <fmÑOrderAnalitycAccouterType>();

                foreach (fmOrderImport rec in records)
                {
                    fmCOrderExt order = orders.FirstOrDefault(item => item.Code == rec.Code);
                    if (order == null)
                    {
                        Trace.TraceWarning("Updater_1.1.1.220_OrderImport: Order >" + rec.Code + "< not found");
                        order      = os.CreateObject <fmCOrderExt>();
                        order.Code = rec.Code;
                        if (rec.IsClosed != "X")
                        {
                            order.Status = fmIOrderStatus.Loaded;
                        }
                        else
                        {
                            order.Status = fmIOrderStatus.FinClosed;
                        }
                        orders.Add(order);
                    }
                    order.BuhIntNum = rec.Oid;
                    if (rec.IsClosed != "X")
                    {
                        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(rec.AccType) && rec.AccType != "0")
                    {
                        order.AnalitycAccouterType = acc_types.FirstOrDefault(x => x.Code == rec.AccType);
                    }
                    if (!String.IsNullOrEmpty(rec.AccBuhCode) && rec.AccBuhCode != "0")
                    {
                        order.BuhAccount = acc_sys.Accounts.FirstOrDefault(x => x.BuhCode == rec.AccBuhCode);
                        if (order.BuhAccount == null)
                        {
                            Trace.TraceWarning("Updater_1.1.1.220_OrderImport: Order >" + rec.Code + "< Account: >" + rec.AccBuhCode + "< not found");
                        }
                    }
                }
                foreach (fmCOrderExt order in orders)
                {
                    fmOrderImport order_record = records.FirstOrDefault(x => x.Code == order.Code);
                    if (order.Status != fmIOrderStatus.Project &&
                        order.Status != fmIOrderStatus.FinOpened && order_record == null)
                    {
                        order.Status = fmIOrderStatus.Deleting;
                        Trace.TraceWarning("Updater_1.1.1.220_OrderImport: Delete order >" + order.Code + "< Status: " + order.Status.ToString());
                    }
                    if (order.Status != fmIOrderStatus.Deleting && order.Status != fmIOrderStatus.Project &&
                        order.Status != fmIOrderStatus.FinOpened && order.Status != fmIOrderStatus.FinClosed &&
                        order.Status != fmIOrderStatus.Opened && order.Status != fmIOrderStatus.Closed)
                    {
                        order.Status = fmIOrderStatus.Loaded;
                    }
                }
            }