//Формирование отчета, для вызова в другом потоке 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 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; }
private void ButStart_Click(object sender, EventArgs e) { if (!SetInitialPeriod()) { return; } try { ((Range)((Worksheet)_book.Workbook.ActiveSheet).Cells[1, 1]).Select(); } catch { } ButStart.Enabled = false; ButStop.Enabled = true; PeriodLength.Enabled = false; SourcesLate.Enabled = false; FillPages.Enabled = false; _book.AddEvent("Запуск режима динамического формирования отчета"); timer1.Start(); }
private void ButStart_Click(object sender, EventArgs e) { if (!SetInitialPeriod()) { return; } try { ((Range)((Worksheet)_book.Workbook.ActiveSheet).Cells[1, 1]).Select(); } catch {} ButStart.Enabled = false; ButStop.Enabled = true; ButPause.Enabled = true; ButPause.Text = "Пауза"; VideoBegin.Enabled = false; VideoEnd.Enabled = false; PeriodBeginPicker.Enabled = false; PeriodEndPicker.Enabled = false; PeriodLength.Enabled = false; BetweenPeriods.Enabled = false; FillPages.Enabled = false; _book.AddEvent("Запуск режима динамического формирования отчета"); _lastTime = Different.MinDate; timer1.Start(); }
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); } } }
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); } } }
private void FormSetupWin_Load(object sender, EventArgs e) { _setupIsLoaded = false; _book = GeneralRep.ActiveBook; _book.AddEvent("Загрузка свойств отчета"); var sys = _book.SysPage; try { //Свойства отчета sys.GetControl(CodeReport, "Report"); sys.GetControl(NameReport, "ReportName"); sys.GetControl(DescriptionReport, "ReportDescription"); FileReport.Text = GeneralRep.Application.ActiveWorkbook.FullName; sys.GetControl(MonthLength); sys.GetControl(DayLength); sys.GetControl(HourLength); sys.GetControl(MinuteLength); sys.GetControl(DayStart); sys.GetControl(HourStart); sys.GetControl(MinuteStart); radioDifferent.Checked = sys.GetBoolValue("DifferentLength"); radioLess.Checked = sys.GetValue("DifferentLength") == "Less"; radioEquals.Checked = sys.GetValue("DifferentLength") == "Equals"; radioNow.Checked = sys.GetValue("DefaultPeriod") == "Now"; radioPrevious.Checked = sys.GetValue("DefaultPeriod") != "Now"; DifferentBegin.Checked = sys.GetBoolValue("DifferentBegin"); CalcName.Text = sys.GetValue("DefaultCalcName"); AllowProjectsRepetitions.Checked = sys.GetBoolValue("AllowProjectsRepetitions"); } catch (Exception ex) { GeneralRep.ShowError("Текущий файл не является файлом отчета InfoTask или был поврежден", ex); Close(); return; } _book.AddEvent("Загрузка настроек из ReporterData"); Providers.Rows.Clear(); try { if (CodeReport.Text != null) { using (var db = new DaoDb(General.ReporterFile)) { int rid = 0; using (var rec = new RecDao(db, "SELECT * FROM Reports WHERE Report = '" + CodeReport.Text + "'")) if (rec.HasRows()) { ThreadId.Text = rec.GetInt("ThreadId").ToString(); UseOneArchive.Checked = rec.GetBool("UseOneArchive"); ServerReport.Text = rec.GetString("ServerReport"); var dic = rec.GetString("FormInf").ToPropertyDicS(); FormToTemplate.Checked = dic["FormTo"] == "Template"; FormToDir.Checked = dic["FormTo"] == "Dir"; FormToFile.Checked = dic["FormTo"] == "File"; ResultDir.Text = dic["ResultDir"]; ResultFileName.Text = dic["ResultFileName"]; ResultFile.Text = dic["ResultFile"]; AddDateToName.Checked = dic.GetBool("AddDateToName"); DateNameFormat.Text = dic["DateNameFormat"]; AddBeginToName.Checked = dic.GetBool("AddBeginToName"); BeginNameFormat.Text = dic["BeginNameFormat"]; AddEndToName.Checked = dic.GetBool("AddEndToName"); EndNameFormat.Text = dic["EndNameFormat"]; AddCalcNameToName.Checked = dic.GetBool("AddCalcNameToName"); AddSheetToName.Checked = dic.GetBool("AddSheetToName"); SetFocusToFormed.Checked = dic.GetBool("SetFocusToFormed"); rid = rec.GetInt("ReportId"); _codes.Add("Report_Archive", rec.GetString("CodeArchive")); _infs.Add("Report_Archive", rec.GetString("InfArchive")); } SetFormingEnabled(); labelThreadId.Visible = ThreadId.Visible; //Список проектов using (var recr = new RecDao(db, "SELECT * FROM Projects WHERE ReportId =" + rid)) foreach (var pr in sys.GetProjects().Values) { int rn = Projects.Rows.Add(); var cells = Projects.Rows[rn].Cells; bool b = recr.FindFirst("Project", pr.Code); if (AllowProjectsRepetitions.Checked) { b = !pr.Code2.IsEmpty() ? recr.FindFirst("ProjectCode2", pr.Code2) : recr.FindFirst("(Project='" + pr.Code + "') AND ((ProjectCode2 = '') OR (ProjectCode2 Is Null))"); } if (b) { recr.GetToDataGrid("ProjectFile", cells); recr.GetToDataGrid("ProjectName", cells); if (AllowProjectsRepetitions.Checked) { recr.GetToDataGrid("ProjectCode2", cells); } cells["Project"] = new DataGridViewTextBoxCell(); if (!UseOneArchive.Checked && pr.CalcMode != CalcModeType.Internal) { var acode = recr.GetString("CodeArchive"); var ainf = recr.GetString("InfArchive"); _codes.Add(pr.CodeFinal + "_Archive", acode); _infs.Add(pr.CodeFinal + "_Archive", ainf); } } cells["Project"].Value = pr.Code; cells["ProjectCalcMode"].Value = pr.CalcMode.ToRussian(); if (AllowProjectsRepetitions.Checked) { cells["ProjectCode2"].Value = pr.Code2; } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ReporterData.accdb", ex); Close(); return; } _book.AddEvent("Загрузка настроек из ControllerData"); try { int tid; if (!int.TryParse(ThreadId.Text, out tid)) { tid = 0; } if (tid != 0) { using (var rect = new RecDao(General.ControllerFile, "SELECT * FROM Threads WHERE ThreadId = " + tid)) { IsImit.Checked = rect.GetBool("IsImit"); ImitMode.Text = rect.GetString("ImitMode"); using (var rec = new RecDao(rect.DaoDb, "SELECT * FROM Providers WHERE ThreadId=" + tid)) while (rec.Read()) { string type = rec.GetString("ProviderType"); if (type == "Источник" || type == "Приемник" || (type == "Архив" && !UseOneArchive.Checked) || (type == "Имитатор" && IsImit.Checked)) { string name = rec.GetString("ProviderName"); _codes.Add(name, rec.GetString("ProviderCode")); _infs.Add(name, rec.GetString("ProviderInf")); } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ControllerData.accdb", ex); } _setupIsLoaded = true; UpdateProvidersList(); }
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(); } }
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); } } }