//Формирование отчета, для вызова в другом потоке 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 UpdateIntervals() { if (_book.Archive == null) { return; } using (_book.Start(true)) { try { var t = dataSet1.Tables["IntervalsTable"]; t.Rows.Clear(); var list = _book.Archive.ReadIntervals(_book.CodeAsProject, ReportType.Excel); foreach (var interval in list) { var r = t.NewRow(); r["Otm"] = false; r["PeriodBegin"] = interval.Begin; r["PeriodEnd"] = interval.End; r["IntervalName"] = interval.Name ?? ""; r["TimeChange"] = interval.TimeChange; t.Rows.Add(r); } Intervals.Update(); foreach (DataGridViewRow r in Intervals.Rows) { r.MinimumHeight = 20; } } catch (Exception ex) { _book.AddError("Ошибка при получении списка интервалов", ex); } _book.ShowError(); } }