示例#1
0
        //Формирование отчета, для вызова в другом потоке
        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("Отчет сформирован");
            }
        }
示例#2
0
 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;
 }