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 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;
 }
Exemplo n.º 3
0
        private void FormLiveReport_Load(object sender, EventArgs e)
        {
            _book             = GeneralRep.ActiveBook;
            _book.FormingBook = _book.Workbook;
            var sys = _book.SysPage;

            using (_book.StartAtom("Открытие формы динамических отчетов"))
            {
                try
                {
                    _book.AddEvent("Настройка внешнего вида");
                    PeriodLength.Text = sys.GetValue("LiveReportPeriodLength");
                    SourcesLate.Text  = sys.GetValue("LiveReportSourcesLate");
                    FillPages.Text    = sys.GetValue("LiveReportFillPages");
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Ошибка при открытии формы динамических отчетов", ex);
                }
            }
        }
Exemplo n.º 4
0
        private void FormVideo_Load(object sender, EventArgs e)
        {
            _book             = GeneralRep.ActiveBook;
            _book.FormingBook = _book.Workbook;
            var sys = _book.SysPage;

            using (_book.StartAtom("Открытие формы видеомагнитофона"))
            {
                try
                {
                    _book.AddEvent("Настройка внешнего вида");
                    VideoBegin.Text     = sys.GetValue("VideoBegin");
                    VideoEnd.Text       = sys.GetValue("VideoEnd");
                    PeriodLength.Text   = sys.GetValue("VideoPeriodLength");
                    BetweenPeriods.Text = sys.GetValue("VideoBetweenPeriods");
                    FillPages.Text      = sys.GetValue("VideoFillPages");
                    UpdateSourcesTime();
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Ошибка при открытии формы видеомагнитофона", ex);
                }
            }
        }
Exemplo n.º 5
0
        private void butOK_Click(object sender, EventArgs e)
        {
            using (_book.StartAtom("Сохранение настроек"))
            {
                _book.AddEvent("Сохранение настроек отчета");
                if (CodeReport.Text.IsEmpty())
                {
                    Different.MessageError("Код отчета должен быть заполнен");
                    return;
                }
                int  res;
                bool er = (!MonthLength.Text.IsEmpty() && (!int.TryParse(MonthLength.Text, out res) || res < 0));
                er |= (!DayLength.Text.IsEmpty() && (!int.TryParse(DayLength.Text, out res) || res < 0));
                er |= (!HourLength.Text.IsEmpty() && (!int.TryParse(HourLength.Text, out res) || res < 0));
                er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0));
                er |= (!DayStart.Text.IsEmpty() && (!int.TryParse(DayStart.Text, out res) || res < 0));
                er |= (!HourStart.Text.IsEmpty() && (!int.TryParse(HourStart.Text, out res) || res < 0));
                er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0));
                if (er)
                {
                    Different.MessageError("Указана недопустимая длительность или начало интеравала");
                    return;
                }

                var  sys        = _book.SysPage;
                bool isInternal = false;
                try
                {
                    sys.PutValue("Report", CodeReport.Text);
                    sys.PutValue("ReportName", NameReport.Text);
                    sys.PutValue("ReportDescription", DescriptionReport.Text);
                    sys.PutControl(MonthLength);
                    sys.PutControl(DayLength);
                    sys.PutControl(HourLength);
                    sys.PutControl(MinuteLength);
                    sys.PutControl(DayStart);
                    sys.PutControl(HourStart);
                    sys.PutControl(MinuteStart);
                    sys.PutValue("DifferentLength", radioDifferent.Checked ? "True" : (radioLess.Checked ? "Less" : "Equals"));
                    if (radioNow.Checked)
                    {
                        sys.PutValue("DefaultPeriod", "Now");
                    }
                    if (radioPrevious.Checked)
                    {
                        sys.PutValue("DefaultPeriod", "Previous");
                    }
                    sys.PutValue("DifferentBegin", DifferentBegin.Checked);
                    sys.PutValue("DefaultCalcName", CalcName.Text);
                    sys.PutValue("AllowProjectsRepetitions", AllowProjectsRepetitions.Checked);

                    var list = new List <ReportProjectSetup>();
                    foreach (DataGridViewRow r in Projects.Rows)
                    {
                        if (!r.IsNewRow)
                        {
                            try
                            {
                                var cmode = r.Get("ProjectCalcMode").ToCalcModeType();
                                isInternal |= cmode == CalcModeType.Internal;
                                list.Add(new ReportProjectSetup(r.Get("Project"), AllowProjectsRepetitions.Checked ? r.Get("ProjectCode2") : null, cmode));
                            }
                            catch { }
                        }
                    }
                    sys.PutProjects(list);
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Текущий файл не является файлом отчета InfoTask или был поврежден", ex);
                }

                try { tabMain.Select(); } catch {}
                _codes.Clear();
                _infs.Clear();
                foreach (DataGridViewRow row in Providers.Rows)
                {
                    string name = row.Get("ProviderName");
                    _codes.Add(name, row.Get("ProviderCode"));
                    _infs.Add(name, row.Get("ProviderInf"));
                }

                int tid;
                if (!int.TryParse(ThreadId.Text, out tid))
                {
                    tid = 0;
                }
                if (isInternal)
                {
                    try
                    {
                        _book.AddEvent("Сохранение настроек в ControllerData");
                        using (var db = new DaoDb(General.ControllerFile))
                        {
                            using (var rec = new RecDao(db, "SELECT * FROM Threads WHERE ThreadId=" + tid))
                            {
                                if (!rec.HasRows())
                                {
                                    rec.AddNew();
                                }
                                rec.Put("ApplicationType", "Excel");
                                rec.Put("IsImit", IsImit.Checked);
                                rec.Put("ImitMode", ImitMode.Text);
                                tid = rec.GetInt("ThreadId");
                            }
                            db.Execute("DELETE * FROM Providers WHERE ThreadId=" + tid);
                            db.Execute("DELETE * FROM Projects WHERE ThreadId=" + tid);
                            using (var rec = new RecDao(db, "Projects"))
                                using (var recc = new RecDao(db, "Providers"))
                                {
                                    foreach (DataGridViewRow row in Projects.Rows)
                                    {
                                        if (!row.IsNewRow && row.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal)
                                        {
                                            rec.AddNew();
                                            rec.Put("ThreadId", tid);
                                            rec.PutFromDataGrid("Project", row);
                                            rec.PutFromDataGrid("ProjectFile", row);
                                        }
                                    }
                                    foreach (DataGridViewRow row in Providers.Rows)
                                    {
                                        if (row.Get("TypeProvider") != "Архив" || row.Get("ProviderName") == "CalcArchive" || (row.Get("ProviderName") == "Report_Archive" && UseOneArchive.Checked))
                                        {
                                            recc.AddNew();
                                            recc.Put("ThreadId", tid);
                                            recc.PutFromDataGrid("ProviderType", row, "TypeProvider");
                                            recc.PutFromDataGrid("ProviderCode", row);
                                            if (row.Get("ProviderName") != "Report_Archive")
                                            {
                                                recc.PutFromDataGrid("ProviderName", row);
                                            }
                                            else
                                            {
                                                recc.Put("ProviderName", "CalcArchive");
                                            }
                                            recc.PutFromDataGrid("ProviderInf", row);
                                            recc.Update();
                                        }
                                    }
                                }
                        }
                    }
                    catch (Exception ex)
                    {
                        GeneralRep.ShowError("Неправильный файл ControllerData.accdb", ex);
                        return;
                    }
                }

                _book.AddEvent("Сохранение настроек в ReporterData");
                try //Настройки отчета в ReporterData
                {
                    using (var db = new DaoDb(General.ReporterFile))
                    {
                        using (var rec = new RecDao(db, "SELECT * FROM Reports WHERE Report = '" + CodeReport.Text + "'"))
                        {
                            if (!rec.HasRows())
                            {
                                rec.AddNew();
                            }
                            rec.Put("Report", CodeReport.Text);
                            rec.Put("ReportName", NameReport.Text);
                            rec.Put("ReportDescription", DescriptionReport.Text);
                            rec.Put("ReportFile", GeneralRep.Application.ActiveWorkbook.FullName);
                            rec.Put("ThreadId", isInternal ? tid : 0);
                            rec.Put("UseOneArchive", UseOneArchive.Checked);
                            rec.Put("CodeArchive", _codes["Report_Archive"]);
                            rec.Put("InfArchive", _infs["Report_Archive"]);
                            string s = "FormTo=" + (FormToTemplate.Checked ? "Template" : (FormToDir.Checked ? "Dir" : "File")) + ";";
                            s += "ResultDir=" + ResultDir.Text + ";";
                            s += "ResultFileName=" + ResultFileName.Text + ";";
                            s += "ResultFile=" + ResultFile.Text + ";";

                            s += "AddDateToName=" + (AddDateToName.Checked ? "True" : "False") + ";";
                            var df = DateNameFormat.Text;
                            if (AddDateToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "DateNameFormat=" + df + ";";

                            s += "AddBeginToName=" + (AddBeginToName.Checked ? "True" : "False") + ";";
                            df = BeginNameFormat.Text;
                            if (AddBeginToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "BeginNameFormat=" + df + ";";

                            s += "AddEndToName=" + (AddEndToName.Checked ? "True" : "False") + ";";
                            df = EndNameFormat.Text;
                            if (AddEndToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "EndNameFormat=" + df + ";";

                            s += "AddCalcNameToName=" + (AddCalcNameToName.Checked ? "True" : "False") + ";";
                            s += "AddSheetToName=" + (AddSheetToName.Checked ? "True" : "False") + ";";
                            s += "SetFocusToFormed=" + (SetFocusToFormed.Checked ? "True" : "False") + ";";
                            rec.Put("FormInf", s);
                            rec.Put("ServerReport", ServerReport.Text);
                            if (!ServerReport.Text.IsEmpty())
                            {
                                var file = new FileInfo(ServerReport.Text);
                                if (!file.Exists || file.Extension != ".xlsx")
                                {
                                    Different.MessageError("Указанный файл контрольного экземпляра не существует или не является файлом Excel, " + ServerReport.Text);
                                }
                                else if (ServerReport.Text == _book.Workbook.FullName)
                                {
                                    Different.MessageError("Файл контрольного бланка расчета не должен совпадать с файлом бланка отчета, " + ServerReport.Text);
                                }
                            }

                            int rid = rec.GetInt("ReportId");
                            rec.Update();
                            db.Execute("DELETE * FROM Projects WHERE ReportId=" + rid);
                            using (var recp = new RecDao(db, "Projects"))
                                foreach (DataGridViewRow r  in Projects.Rows)
                                {
                                    if (!r.IsNewRow)
                                    {
                                        recp.AddNew();
                                        recp.Put("ReportId", rid);
                                        recp.PutFromDataGrid("Project", r);
                                        if (AllowProjectsRepetitions.Checked)
                                        {
                                            recp.PutFromDataGrid("ProjectCode2", r);
                                        }
                                        recp.PutFromDataGrid("ProjectName", r);
                                        recp.PutFromDataGrid("ProjectFile", r);
                                        if (UseOneArchive.Checked)
                                        {
                                            recp.Put("CodeArchive", _codes["Report_Archive"]);
                                            recp.Put("InfArchive", _infs["Report_Archive"]);
                                        }
                                        else if (r.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal)
                                        {
                                            recp.Put("CodeArchive", _codes["CalcArchive"]);
                                            recp.Put("InfArchive", _infs["CalcArchive"]);
                                        }
                                        else
                                        {
                                            var proj = r.Get("Project");
                                            if (AllowProjectsRepetitions.Checked && !r.Get("ProjectCode2").IsEmpty())
                                            {
                                                proj = r.Get("ProjectCode2");
                                            }
                                            proj += "_Archive";
                                            recp.Put("CodeArchive", _codes[proj]);
                                            recp.Put("InfArchive", _infs[proj]);
                                        }
                                    }
                                }
                        }
                    }
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Неправильный файл ReporterData.accdb", ex);
                }

                _book.ClearReportDataFromMemory();
                CheckProviders();
                Close();
            }
        }
Exemplo n.º 6
0
        private void FormReportWin_Load(object sender, EventArgs e)
        {
            _book = GeneralRep.ActiveBook;
            var sys = _book.SysPage;

            using (_book.StartAtom("Открытие формы построения отчета"))
            {
                try
                {
                    _book.AddEvent("Настройка внешнего вида");
                    panelPeriod.Visible      = !_book.OnlyAbsolute;
                    butSaveHandInput.Visible = _book.HandInputProjects.Count > 0;

                    //Загрузка данных с SysPage
                    IntervalName.Text = sys.GetValue("DefaultCalcName");
                    if (IntervalName.Text.IsEmpty())
                    {
                        IntervalName.Text = sys.GetValue("CalcName");
                    }
                    FillPages.Text        = sys.GetValue("FillPages");
                    SaveToArchive.Checked = sys.GetBoolValue("SaveToArchive");
                    PeriodEnd.Enabled     = PeriodEndPicker.Enabled = _book.DifferentLength != DifferentLength.Equals;
                    string s = "";
                    int    d = sys.GetIntValue("DayLength");
                    if (d != 0)
                    {
                        s += d + " сут ";
                    }
                    d = sys.GetIntValue("HourLength");
                    if (d != 0)
                    {
                        s += d + " час ";
                    }
                    d = sys.GetIntValue("MinuteLength");
                    if (d != 0)
                    {
                        s += d + " мин ";
                    }
                    PeriodLength.Text           = s;
                    butPreviousInterval.Enabled = butNextInterval.Enabled = s != "";

                    switch (_book.DefaultPeriod)
                    {
                    case "Previous":
                        _book.SysPage.GetControl(PeriodBegin);
                        _book.SysPage.GetControl(PeriodEnd);
                        PeriodBegin.ChangePickerValue(PeriodBeginPicker);
                        PeriodEnd.ChangePickerValue(PeriodEndPicker);
                        break;

                    case "Now":
                        SetNowPeriod();
                        break;
                    }
                    UpdateSourcesTime();
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Ошибка при открытии формы построения отчетов", ex);
                }
            }
        }