Exemplo n.º 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("Отчет сформирован");
            }
        }
Exemplo n.º 2
0
 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();
     }
 }