private void ImportAction_Execute(object sender, SimpleActionExecuteEventArgs e) { ОперацияКонтРучные cont = View.CurrentObject as ОперацияКонтРучные; if (cont == null) { return; } OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() != DialogResult.OK) { return; } using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { cont = os.GetObject <ОперацияКонтРучные>(cont); Import(os, cont, dialog.FileName); os.CommitChanges(); } }
private void Import(IObjectSpace os, ОперацияКонтРучные конт, String file_name) { FixedFileEngine engine = new FixedFileEngine(typeof(OperationImport)); OperationImport[] imp_res = (OperationImport[])engine.ReadFile(file_name); os.Delete(конт.Операции); DateTime date = default(DateTime); foreach (OperationImport oper_imp in imp_res) { ОснованиеДокумент doc = null; if (oper_imp.SF_TYPE.Trim() != "СФЗ") { doc = os.FindObject <ОснованиеДокумент>(new BinaryOperator("РегНомер", oper_imp.SF_REGNUM.Trim()), true); } else { DateTime.TryParseExact(oper_imp.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date); Основание осн = os.FindObject <Основание>( new BinaryOperator("ИннПродавца", "5012039795") & new BinaryOperator("Номер", oper_imp.SF_NUMBER.Trim()) & new BinaryOperator("Дата", date, BinaryOperatorType.GreaterOrEqual) & new BinaryOperator("Дата", date.AddDays(1), BinaryOperatorType.Less), true); doc = осн != null ? осн.ДействующийДокумент : null; } Операция oper = os.CreateObject <Операция>(); конт.Операции.Add(oper); // Decimal summ_cost = Decimal.Parse(imp_rec.SUMM_COST.Trim().Replace('.', ',')); // DateTime.TryParseExact(imp_rec.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out sfdoc_date); oper.ТипКниги = (Операция.ТипКнигиТип)Int32.Parse(oper_imp.BOOK.Trim()); oper.ТипДеятельности = (Операция.ТипДеятельностиТип)Int32.Parse(oper_imp.WORK_TYPE.Trim()); oper.ТипНапрОпер = (Операция.ТипНапрОперТип)Int32.Parse(oper_imp.DIR.Trim()); oper.ТипОперВнутр = (Операция.ТипОперВнутрТип)Int32.Parse(oper_imp.OPERATION.Trim()); String stavka = oper_imp.VAT_RATE.Trim(); if (String.IsNullOrEmpty(stavka) || stavka == "0") { stavka = "2"; } oper.Ставка = (СтавкаНДС)Int32.Parse(stavka); // oper_imp.VAT_MODE; oper.Проводка = oper_imp.BUH_PROV.Trim(); oper.СубсчетНДС = oper_imp.VAT_ACC.Trim(); DateTime.TryParseExact(oper_imp.BUH_DT.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date); oper.ДатаБУ = date; DateTime.TryParseExact(oper_imp.VAT_DT.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date); oper.ДатаНДС = date; oper.ОснованиеДокумент = doc; oper.КодПартнера = oper_imp.VO_CODE.Trim(); if (oper_imp.SF_TYPE.Trim() != "СФЗ") { oper.ОснованиеРегНомер = oper_imp.SF_REGNUM.Trim(); } else { oper.ОснованиеРегНомер = doc != null ? doc.егНомер : null; } oper.СФТип = oper_imp.SF_TYPE.Trim(); oper.СФТипОриг = oper_imp.SF_TYPE_ORIG.Trim(); oper.СФНомер = oper_imp.SF_NUMBER.Trim(); DateTime.TryParseExact(oper_imp.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date); oper.СФДата = date; oper.ПДТип = oper_imp.PD_TYPE.Trim(); oper.ПДНомер = oper_imp.PD_NUMBER.Trim(); DateTime.TryParseExact(oper_imp.PD_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date); oper.ПДДата = date; oper.СуммаВсего = Decimal.Parse(oper_imp.SUMM_ALL.Trim().Replace('.', ',')); oper.СуммаСтоимость = Decimal.Parse(oper_imp.SUMM_COST.Trim().Replace('.', ',')); oper.СуммаНДСБаза = Decimal.Parse(oper_imp.SUMM_VAT_PAY.Trim().Replace('.', ',')); oper.СуммаНДСВычет = Decimal.Parse(oper_imp.SUMM_VAT_BAY.Trim().Replace('.', ',')); oper.СуммаНДССтоимость = Decimal.Parse(oper_imp.SUMM_VAT_COST.Trim().Replace('.', ',')); oper.СуммаНДС19Входящий = Decimal.Parse(oper_imp.SUMM_VAT_IN.Trim().Replace('.', ',')); oper.СуммаНДС19Списано = Decimal.Parse(oper_imp.SUMM_VAT_IN_USE.Trim().Replace('.', ',')); if (oper.ТипКниги == Операция.ТипКнигиТип.ПРОДАЖ) { if (oper.СФТип != "СФВ") { oper.СуммаСтоимость = oper.СуммаВсего; oper.СуммаСтоимость += -oper.СуммаНДСБаза; } else { oper.СуммаСтоимость = Decimal.Round(oper.СуммаНДСБаза * 100 / 18, 2); oper.СуммаВсего = oper.СуммаСтоимость + oper.СуммаНДСБаза; } } //oper_imp.SUMM_ALL; //oper_imp.SUMM_COST; //oper_imp.SUMM_VAT_PAY; //oper_imp.SUMM_VAT_IN; //oper_imp.SUMM_VAT_IN_USE; //oper_imp.SUMM_VAT_COST; //oper_imp.SUMM_VAT_BAY; //System.Console.WriteLine(oper_import.SUMM_ALL + "_" + oper_import.SUMM_VAT_PAY + "_" + oper_import.SUMM_VAT_BAY); } }