Пример #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("Отчет сформирован");
            }
        }