//Формирование отчета, для вызова в другом потоке private void FormingReport(string fill, //fill - заполнять все листы или выбранный bool saveReport) //saveReport - сохранять отчет в журнал { var beg = _book.Interval.Begin; var en = _book.Interval.End; var cname = _book.Interval.Name; using (_book.StartAtom("Формирование отчета", true, beg + " - " + en + " " + cname)) { try { bool hasCalc = _book.Controller != null; if (hasCalc) { _book.AddEvent("Расчет", beg + " - " + en + " " + cname); var con = _book.Controller; con.SetCalcOperations(true, true, true); con.Calc(beg, en, "Default", cname); if (!con.ErrorMessage.IsEmpty()) { _book.AddError("Ошибки при расчете:\n", null, con.ErrorMessage); } _book.Procent = 50; } //Получение данных из архива using (_book.Start(hasCalc ? 50 : 0, hasCalc ? 60 : 40)) _book.ReadArchiveReport(); //Заполнение отчета using (_book.Start(hasCalc ? 60 : 40, 80)) { _book.OpenFormingBook(beg, en, cname); _book.FillReport(fill); _book.CopySheetsToBook(beg, cname, fill); } //Сохранение результатов в архив if (saveReport) { using (_book.Start(80)) _book.SaveReport(); } try { _book.Workbook.Save(); } catch { } } catch (Exception ex) { _book.AddError("Ошибка заполнения отчета", ex); } _book.ShowError(); } SetCalcMode(false); if (!_book.FormToDir && !_book.FormToFile) { _book.MessageReport("Отчет сформирован"); } }
private void butLoadInterval_Click(object sender, EventArgs e) { try { if (Intervals.Rows.Count == 0) { return; } if (!GeneralRep.CheckOneSheet(false)) { return; } GeneralRep.Application.Visible = false; _book.IsReportForming = true; var row = Intervals.Rows[Intervals.SelectedCells[0].RowIndex]; var beg = row.Get("PeriodBegin").ToDateTime(); var en = row.Get("PeriodEnd").ToDateTime(); var cname = row.Get("IntervalName"); _book.Interval = new ArchiveInterval(IntervalType.Single, beg, en, cname); using (_book.StartAtom("Заполнение отчета из журнала", true, beg + " - " + en + " " + cname)) { try { _book.AddEvent("Загрузка интервала", beg + " - " + en + " " + cname); using (_book.Start(10, 40)) _book.ReadReportProject(); using (_book.Start(40)) { _book.FormingBook = _book.Workbook; _book.FillReport("Все листы"); } if (_book.Forms.ContainsKey(ReporterCommand.Report)) { var f = (FormReport)_book.Forms[ReporterCommand.Report]; f.PeriodBegin.Text = beg.ToString(); f.PeriodEnd.Text = en.ToString(); f.IntervalName.Text = cname; } } catch (Exception ex) { _book.AddError("Ошибка заполнения отчета", ex); } _book.ShowError(); } Different.MessageInfo("Отчет загружен из журнала.\nОтчет: " + _book.Code + ", " + _book.Name + "\nПериод: " + beg.ToString() + " - " + en.ToString()); } catch (Exception ex) { GeneralRep.ShowError("Ошибка заполнения отчета", ex); } GeneralRep.Application.Visible = true; _book.Workbook.Activate(); _book.IsReportForming = false; }