private void UpdateReport_1_2_2() { //Добавлены параметры для свойство типов ссылок SysPage.AddProperty("Итоговое значение", "Настройки для разных типов ссылок", "LinkType=Result;CellComment=;AllowEdit=False;"); SysPage.AddProperty("Абсолютное значение", null, "LinkType=Absolute;CellComment=;AllowEdit=False;"); SysPage.AddProperty("Абсолютное c редактированием", null, "LinkType=AbsoluteEdit;CellComment=;AllowEdit=False;"); SysPage.AddProperty("Комбинированное значение", null, "LinkType=Combined;CellComment=;AllowEdit=False;"); SysPage.AddProperty("Равномерный список значений", null, "LinkType=CombinedList;CellComment=;ValueDistanceY=1;ValuesOrder=IncTime;LengthHour=1;"); SysPage.AddProperty("Список мгновенных значений", null, "LinkType=MomentsList;CellComment=;ValueDistanceY=1;ValuesOrder=IncTime;"); SysPage.AddProperty("Ручной ввод", null, "LinkType=HandInput;CellComment=;AllowEdit=True;"); SysPage.AddProperty("Сохранение в архив", null, "LinkType=Save;CellComment=;AllowEdit=True;"); SysPage.AddProperty("Системная ссылка", null, "LinkType=System;CellComment=;"); //Добавлены параметры для условий фильтров списка параметров и отношений по ним SysPage.AddProperty("FilterFullCode", "Условия фильтров списка параметров и отношения для них"); SysPage.AddProperty("RelationFullCode", null, "Равно"); SysPage.AddProperty("FilterCode"); SysPage.AddProperty("RelationCode", null, "Равно"); SysPage.AddProperty("FilterSubCode"); SysPage.AddProperty("RelationSubCode", null, "Равно"); SysPage.AddProperty("FilterName"); SysPage.AddProperty("RelationName", null, "Равно"); SysPage.AddProperty("FilterComment"); SysPage.AddProperty("RelationComment", null, "Равно"); SysPage.AddProperty("FilterTask"); SysPage.AddProperty("RelationTask", null, "Равно"); SysPage.AddProperty("FilterUnits"); SysPage.AddProperty("RelationUnits", null, "Равно"); SysPage.AddProperty("FilterDataType"); SysPage.AddProperty("RelationDataType", null, "Равно"); SysPage.AddProperty("FilterSuperProcess"); SysPage.AddProperty("RelationSuperProcess", null, "Равно"); SysPage.AddProperty("FilterCalcParamType"); SysPage.AddProperty("RelationCalcParamType", null, "Равно"); }
//Изменяет текущий тип ссылки public void GetLinkType(string linkType) { if (linkType.IsEmpty() || CurLinkType == linkType) { return; } var f = (FormPutLinks)Forms[ReporterCommand.PutLinks]; var p = Forms.ContainsKey(ReporterCommand.LinkProperties) ? ((FormLinkProperties)Forms[ReporterCommand.LinkProperties]).PropsPanel : null; if (p != null) { string s = p.PropsString(); if (p.LinkPropsError.IsEmpty()) { SysPage.PutValue(CurLinkType, s); } } CurLinkType = linkType; CurLinkProps = SysPage.GetValue(linkType); if (f.CellLinkType.Text != CurLinkType) { f.CellLinkType.Text = CurLinkType; } if (p != null && p.CellLinkType.Text != CurLinkType) { //p.PropsFromDic(CurLinkProps.ToPropertyDictionary()); p.CellLinkType.Text = CurLinkType; } }
private void UpdateReport_1_3_5() { SysPage.AddProperty("VideoBegin", "Начало просмотра в видеомагнитофоне"); SysPage.AddProperty("VideoEnd", "Конец просмотра в видеомагнитофоне"); SysPage.AddProperty("VideoPeriodLength", "Длина периода в видеомагнитофоне (мин)", "15"); SysPage.AddProperty("VideoBetweenPeriods", "Ожидание следущего периода в видеомагнитофоне (сек)", "5"); SysPage.AddProperty("VideoFillPages", "Какие листы заполнять в видеомагнитофоне (Все листы, Текущий лист)", "Все листы"); }
private void AddPropToTag(Dictionary <string, string> tag, SysPage sys, string prop) { if (!tag.ContainsKey(prop)) { tag.Add(prop, sys.GetValue(prop)); } else { tag[prop] = sys.GetValue(prop); } }
//Если workbook=null, значит создается CommonBook, иначе ActiveBook public ReportBook(string code, Workbook workbook) { Code = code; ThreadName = Code; Workbook = workbook; if (workbook != null) { SysPage = new SysPage(Workbook); UpdateReportVersion(); } }
//Обновление на одну версию private void UpdateVersion(VersionSynch.Version curver, string version, string versionDate, System.Action action) { var newver = new VersionSynch.Version(version, versionDate); if (curver < newver) { action(); SysPage.PutValue("Version", newver.ToString()); SysPage.PutValue("VersionDate", newver.Date); } }
//Обновлении версии файла отчета private void UpdateReportVersion() { var curver = new VersionSynch.Version(SysPage.GetValue("Version"), SysPage.GetValue("VersionDate")); UpdateVersion(curver, "1.2.0", "07.02.2014", UpdateReport_1_2_0); UpdateVersion(curver, "1.2.1", "01.04.2014", UpdateReport_1_2_1); UpdateVersion(curver, "1.2.2", "10.04.2014", UpdateReport_1_2_2); UpdateVersion(curver, "1.3.0", "04.06.2014", UpdateReport_1_3_0); UpdateVersion(curver, "1.3.1", "01.02.2016", UpdateReport_1_3_1); UpdateVersion(curver, "1.3.2", "22.03.2016", UpdateReport_1_3_2); UpdateVersion(curver, "1.3.3", "02.11.2016", UpdateReport_1_3_3); UpdateVersion(curver, "1.3.4", "22.09.2017", UpdateReport_1_3_4); UpdateVersion(curver, "1.3.5", "20.10.2017", UpdateReport_1_3_5); }
private void butOK_Click(object sender, EventArgs e) { try { if (CodeReport.Text.IsEmpty()) { Different.MessageError("Не указан код отчета"); return; } if (FileReport.Text.IsEmpty() || (new FileInfo(FileReport.Text).Extension != ".xlsx")) { Different.MessageError("Указан недопустимый файл отчета"); return; } using (var rec = new ReaderAdo(General.ReporterFile, "SELECT Report FROM Reports WHERE Report='" + CodeReport.Text + "'")) if (rec.HasRows() && !Different.MessageQuestion("Отчет с кодом " + CodeReport.Text + " уже существует. Заменить на новый?")) { return; } var fnew = new FileInfo(FileReport.Text); if (fnew.Exists && !Different.MessageQuestion("Файл " + FileReport.Text + " уже существует. Заменить на новый?")) { return; } try { new FileInfo(General.ReporterDir + "ReportTemplate.xlsx").CopyTo(FileReport.Text, true); GeneralRep.Application.Workbooks.Open(FileReport.Text); var sys = new SysPage(GeneralRep.Application.ActiveWorkbook); sys.PutValue("Report", CodeReport.Text); sys.PutValue("ReportName", NameReport.Text); sys.PutValue("ReportDescription", DescriptionReport.Text); sys.PutValue("DifferentLength", "True"); sys.PutValue("SaveToArchive", "True"); GeneralRep.Application.ActiveWorkbook.Save(); } catch (Exception ex) { ex.MessageError("Ошибка создания файла, возможно файл уже существует"); } Close(); GeneralRep.ChangeActiveBook(); var f = GeneralRep.RunReporterCommand(ReporterCommand.Setup); ((TabControl)f.Controls["tabMain"]).SelectTab("tabReport"); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при создании отчета", ex); } }
//Вызывается при закрытии заданной формы form, close - закрывать форму прямо здесь в процедуре public void CloseForm(ReporterCommand form, bool close = false) { if (Forms.ContainsKey(form)) { var fform = Forms[form]; Forms.Remove(form); var list = (from f in Forms where f.Key.IsChildOf(form) select f.Key).ToList(); foreach (var ff in list) { CloseForm(ff, true); } using (StartAtom("Закрытие формы " + form)) { try { if (close) { fform.Close(); } switch (form) { case ReporterCommand.PutLinks: UpdateDataFile(false, true); Workbook.Save(); break; case ReporterCommand.Setup: SysPage.PutValue("LastSetup", DateTime.Now.ToString()); Workbook.Save(); UpdateDataFile(true); LoadSetup(); break; case ReporterCommand.AbsoluteEdit: AddEvent("Запись абсолютных значений в архив"); foreach (var project in UsedProjects.Values) { project.Archive.WriteAbsoluteEdit(project.AbsoluteEditValues.Values.Where(hip => !hip.Value.IsEmpty()).ToList()); } break; } } catch (Exception ex) { AddError("Ошибка при закрытии формы", ex, form.ToString()); } } } }
private void ButSetupReport_Click(object sender, EventArgs e) { try { Workbook wbook = GeneralRep.Application.Workbooks.Open(SelectedReportFile.Text); var code = new SysPage(wbook).GetValue("Report"); var book = new ReportBook(code, wbook); GeneralRep.Books.Add(code, book); book.RunCommandReporter(ReporterCommand.Setup); } catch { Different.MessageError("Указан недопустимый файл бланка отчета"); } }
private void Reports_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { //Файл бланка отчета int ind = e.RowIndex; var isNewRow = Reports.Rows[ind].IsNewRow; if (e.ColumnIndex == 3) { var d = new DialogCommand(DialogType.OpenExcel); d.DialogTitle = "Файл шаблона отчета"; d.ErrorMessage = "Указан недопустимый файл бланка отчета"; string file = d.Run(Reports.Rows[ind].Get("ReportFile")); try { Workbook wbook = GeneralRep.Application.Workbooks.Open(file); var sys = new SysPage(wbook); string code = sys.GetValue("Report"); string name = sys.GetValue("ReportName"); if (isNewRow) { if (file.IsEmpty()) { return; } ind = Reports.Rows.Add(); } var cells = Reports.Rows[ind].Cells; cells["ReportFile"].Value = file; cells["Report"].Value = code; cells["ReportName"].Value = name; var tag = cells.Get("ReportTag").IsEmpty() ? new Dictionary <string, string>() : cells.Get("ReportTag").ToPropertyDictionary(); AddPropToTag(tag, sys, "SaveToArchive"); AddPropToTag(tag, sys, "DayLength"); AddPropToTag(tag, sys, "HourLength"); AddPropToTag(tag, sys, "MinuteLength"); cells["ReportTag"].Value = tag.ToPropertyString(); wbook.Save(); wbook.Close(); Reports.Rows[ind].Selected = true; } catch { Different.MessageError("Указан недопустимый файл бланка отчета"); } } } catch { } ChangeReportsRow(); }
//Загрузка настроек из SysPage и создание файла данных, если нужно public void LoadSetup() { AddEvent("Загрузка свойств отчета и открытие файла данных"); string s = Workbook.Name; DataFile = General.ReporterDir + @"Tmp\" + s.Substring(0, s.Length - 5) + "Data.accdb"; DaoDb.FromTemplate(General.ReportTemplateFile, DataFile); Name = SysPage.GetValue("ReportName"); PeriodLength = new TimeSpan(SysPage.GetIntValue("DayLength"), SysPage.GetIntValue("HourLength"), SysPage.GetIntValue("MinuteLength"), 0); MonthLengh = SysPage.GetIntValue("MonthLength"); DefaultPeriod = SysPage.GetValue("DefaultPeriod"); PeriodNull = SysPage.GetValue("HourStart").IsEmpty() && SysPage.GetValue("MinuteStart").IsEmpty(); PeriodStart = new TimeSpan(0, SysPage.GetIntValue("HourStart"), SysPage.GetIntValue("MinuteStart"), 0); DayStart = SysPage.GetIntValue("DayStart"); DifferentLength = SysPage.GetValue("DifferentLength").ToDifferentLength(); DifferentBegin = SysPage.GetBoolValue("DifferentBegin"); }
//Загрузка текущего шаблона установки ссылок public void LoadCurTemplate() { var tname = SysPage.GetValue("CurTemplate"); var list = SysPage.GetTemplate(tname); CurLinkTemplate.Clear(); foreach (var s in list) { CurLinkTemplate.Add(s.ToPropertyDictionary()); } var dic = SysPage.GerTemplateGeneralProps(tname); string shift = dic.Get("NextCellShift", "Нет"); int step = dic.GetInt("NextCellStep"); CurTemplateShiftX = shift == "Вправо" ? step : 0; CurTemplateShiftY = shift == "Вниз" ? step : 0; }
private void UpdateReport_1_2_1() { bool e = false; foreach (var sheet in Workbook.GetSheets(false)) { e |= sheet.Name == "Templates"; } if (!e) { var w = (Worksheet)Workbook.Sheets.Add(); w.Name = "Templates"; w.Visible = XlSheetVisibility.xlSheetHidden; } SysPage.AddProperty("LastSaveParamId", "Номер последней добавленной ячейки для сохранения", "0"); SysPage.AddProperty("CurCellComment", "Текущее примечание к ячейке"); SysPage.AddProperty("CurNextCellShift", "Текущее направление сдвига после установки ссылки", "Вправо"); SysPage.AddProperty("CurNextCellStep", "Текущая величина сдвига после установки ссылки", "1"); }
//Загрузка параметров из файла данных в память (Projects) private void ParamsFileToMemory() { AddEvent("Загрузка параметров из файла данных в память"); try { Projects.Clear(); using (var db = new DaoDb(DataFile)) { using (var rec = new ReaderAdo(db, "SELECT * FROM Projects")) while (rec.Read()) { var proj = new ReportProjectForLinks(this, rec); Projects.Add(proj.CodeFinal, proj); } foreach (var pr in SysPage.GetProjects().Values) { if (Projects.ContainsKey(pr.CodeFinal)) { Projects[pr.CodeFinal].CalcMode = pr.CalcMode; } } using (var rec = new ReaderAdo(db, "SELECT * FROM CalcParams")) while (rec.Read()) { var par = new ReportParam(rec); if (Projects.ContainsKey(par.Project)) { Projects[par.Project].Params.Add(par.FullCode, par); } } } foreach (var proj in Projects.Values) { proj.MakeFilters(); } } catch (Exception ex) { AddError("Ошибка при загрузке параметров", ex); } }
//Удаляет закрываемую книгу из списка public static void CloseBook() { if (!IsActivated) { return; } try { if (SysPage.IsInfoTask()) { var s = ActiveBook.SysPage.GetValue("Report"); using (CommonBook.StartLog("Закрытие книги", "", s)) if (Books.ContainsKey(s) && Books[s].Workbook.FullName == Application.ActiveWorkbook.FullName) { Books[s].CloseBook(); Books.Remove(s); } } } catch { } }
private void UpdateReport_1_3_0() { SysPage.AddProperty("FilterOtm"); SysPage.AddProperty("RelationOtm", null, "Равно"); //Добавлены параметры для условий фильтров списка интервалов и отношений по ним SysPage.AddProperty("FilterOtmIntervals", "Условия фильтров списка интервалов и отношения для них"); SysPage.AddProperty("RelationOtmIntervals", null, "Равно"); SysPage.AddProperty("FilterNameIntervals"); SysPage.AddProperty("RelationNameIntervals", null, "Равно"); SysPage.AddProperty("FilterBegin1Intervals"); SysPage.AddProperty("RelationBegin1Intervals", null, "Равно"); SysPage.AddProperty("FilterBegin2Intervals"); SysPage.AddProperty("RelationBegin2Intervals", null, "Равно"); SysPage.AddProperty("FilterEnd1Intervals"); SysPage.AddProperty("RelationEnd1Intervals", null, "Равно"); SysPage.AddProperty("FilterEnd2Intervals"); SysPage.AddProperty("RelationEnd2Intervals", null, "Равно"); SysPage.AddProperty("FilterTimeChange1Intervals"); SysPage.AddProperty("RelationTimeChange1Intervals", null, "Равно"); SysPage.AddProperty("FilterTimeChange2Intervals"); SysPage.AddProperty("RelationTimeChange2Intervals", null, "Равно"); }
//Загружает свойства из выделенной ячейки public void GetLinkProps(Dictionary <string, string> props) { var f = (FormPutLinks)Forms[ReporterCommand.PutLinks]; var p = Forms.ContainsKey(ReporterCommand.LinkProperties) ? ((FormLinkProperties)Forms[ReporterCommand.LinkProperties]).PropsPanel : null; var dic = props.Where(t => t.Key != "Project" && t.Key != "Code" && t.Key != "Field" && t.Key != "CellComment").ToDictionary(t => t.Key, t => t.Value); string lt = dic["LinkType"].ToLinkType().ToRussian(); if (CurLinkType != lt) { string s = CurLinkProps; if (p != null) { string ss = p.PropsString(); if (p.LinkPropsError.IsEmpty()) { s = ss; } } SysPage.PutValue(CurLinkType, s); CurLinkType = lt; } CurLinkProps = dic.ToPropertyString(); if (f.CellLinkType.Text != CurLinkType) { f.CellLinkType.Text = CurLinkType; } if (f.CellComment.Text != dic.Get("CellComment")) { f.CellComment.Text = dic.Get("CellComment"); } if (p != null) { if (p.CellLinkType.Text != CurLinkType) { p.CellLinkType.Text = CurLinkType; } p.PropsFromDic(dic); } }
//Открывает новую заданную форму public Form RunCommandReporter(ReporterCommand c) { if (Forms.ContainsKey(c) && Forms[c] != null) { var fm = Forms[c]; if (!fm.Visible) { fm.Show(); } if (fm.WindowState == FormWindowState.Minimized) { fm.WindowState = FormWindowState.Normal; } fm.Focus(); return(fm); } if (!c.OneForAllBooks() && IsReportForming) { return(null); } if (c.NeedCheckReport() && !SysPage.IsInfoTask()) { MessageReportError("Да запуска команды необходимо открыть отчет InfoTask"); return(null); } Form f = null; using (StartAtom(c)) { try { AddEvent("Закрытие лишних форм"); var less = new Dictionary <ReporterCommand, Form>(); var great = new Dictionary <ReporterCommand, Form>(); foreach (var k in Forms) { if (c.Greater(k.Key)) { less.Add(k.Key, k.Value); } if (c.Less(k.Key)) { great.Add(k.Key, k.Value); } } var cForms = GeneralRep.CommonBook.Forms; foreach (var k in cForms) { if (c.Less(k.Key)) { great.Add(k.Key, k.Value); } } if (great.Count > 0) { string smess = ""; foreach (var g in great) { smess += (smess != "" ? "," : "") + " Форма " + g.Key.ToFormName(); } smess = "Команда не может быть выполнена, пока открыты:" + smess + ". Закрыть формы?"; if (!MessageReportQuestion(smess)) { return(null); } } foreach (var k in less) { k.Value.Close(); if (Forms.ContainsKey(k.Key)) { Forms.Remove(k.Key); } if (cForms.ContainsKey(k.Key)) { cForms.Remove(k.Key); } } foreach (var k in great) { GeneralRep.CloseForm(k.Key, true); } if (c == ReporterCommand.PutLinks || c == ReporterCommand.ShapeLibrary || c == ReporterCommand.Report || c == ReporterCommand.LiveReport || c == ReporterCommand.Intervals || c == ReporterCommand.AbsoluteEdit || c == ReporterCommand.LinksList) { UpdateDataFile(false); } System.Windows.Forms.Application.EnableVisualStyles(); switch (c) { case ReporterCommand.GroupReports: f = new FormGroupReports(); break; case ReporterCommand.GroupReportEdit: f = new FormGroupReportEdit(); break; case ReporterCommand.Create: f = new FormCreate(); break; case ReporterCommand.Setup: f = new FormSetup(); break; case ReporterCommand.CopyServerReport: CopyServerReport(); break; case ReporterCommand.PutLinks: using (Start()) LoadCurTemplate(); LastChangeLinks = DateTime.Now; f = new FormPutLinks(); break; case ReporterCommand.FilterParams: f = new FormFiltersParams(); break; case ReporterCommand.LinkProperties: f = new FormLinkProperties(); break; case ReporterCommand.FindLinks: f = new FormFindLinks(); break; case ReporterCommand.LinksTemplate: f = new FormLinksTemplate(); break; case ReporterCommand.DeleteLinks: DeleteLinks(); LastChangeLinks = DateTime.Now; break; case ReporterCommand.ClearCells: Forms.Add(ReporterCommand.ClearCells, null); UsedFileToMemory(); ClearAllCells(); Forms.Remove(ReporterCommand.ClearCells); break; case ReporterCommand.ShapeLibrary: f = new FormShapeLibrary(); break; case ReporterCommand.Report: UsedFileToMemory(); PrepareController(); f = new FormReport(); break; case ReporterCommand.LiveReport: UsedFileToMemory(); PrepareController(); f = new FormLiveReport(); break; case ReporterCommand.Video: UsedFileToMemory(); PrepareController(); f = new FormVideo(); break; case ReporterCommand.ArchivesRanges: f = new FormArchivesRanges(); break; case ReporterCommand.Intervals: UsedFileToMemory(); if (FormInf == null || FormToDir || FormToFile) { MessageReportError("Сохранение в журнал возможно только при формировании отчета непосредственно в бланк отчета (задается в настройках)"); } else { PrepareArchive(); f = new FormIntervals(); } break; case ReporterCommand.FilterIntervals: f = new FormFiltersIntervals(); break; case ReporterCommand.SaveReport: if (CanSaveReport()) { f = new FormSaveReport(); } break; case ReporterCommand.AbsoluteEdit: UsedFileToMemory(); AddEvent("Чтение абсолютных значений из архива"); foreach (var project in UsedProjects.Values) { project.AbsoluteEditValues = project.Archive.ReadAbsoluteEdit(project.Code, false); } f = new FormAbsoluteEdit(); break; case ReporterCommand.Update: UpdateDataFile(true); if (!Command.IsError) { MessageReport("Ссылки были обновлены"); } break; case ReporterCommand.LinksList: f = new FormLinksList(); break; case ReporterCommand.AppInfo: f = new FormAppInfo(); break; } if (f != null) { if (!c.OneForAllBooks()) { f.Text += " (" + Code + ")"; } Forms.Add(c, f); f.Show(); } } catch (Exception ex) { AddError("Ошибка при открытии формы", ex, c.ToString()); } if (Command != null && Command.IsError) { foreach (var ff in Forms) { if (ff.Key != ReporterCommand.LinkProperties && ff.Value != null && ff.Value.Visible) { ff.Value.Activate(); break; } } ShowError(); } } return(f); }
//Обновление списка проектов в файле данных отчета private IEnumerable <ReportProjectForData> MakeProjectsList() { AddEvent("Обновление списка проектов"); var plist = new DicS <ReportProjectForData>(); try { using (var rec = new RecDao(General.ReporterFile, "SELECT Reports.Report, Projects.* FROM Reports INNER JOIN Projects ON Reports.ReportId = Projects.ReportId WHERE Report='" + Code + "'")) while (rec.Read()) { var p = new ReportProjectForData(this, rec); plist.Add(p.CodeFinal, p); } foreach (var pr in SysPage.GetProjects().Values) { if (plist.ContainsKey(pr.CodeFinal)) { plist[pr.CodeFinal].CalcMode = pr.CalcMode; } } foreach (var pr in plist.Values) { pr.GetChangeTime(); } using (var db = new DaoDb(DataFile)) { var dic = new SetS(); using (var rec = new RecDao(db, "SELECT * FROM Projects")) { while (rec.Read()) { var code = rec.GetString("Project"); if (code != "Сохранение" && code != "Системные") { if (!plist.ContainsKey(code)) { rec.Put("SysField", "Del"); } else { dic.Add(code); rec.Put("SysField", ""); plist[code].DataChangeTime = rec.GetTime("LastChange"); plist[code].ToRecordset(rec, false); } } } foreach (var p in plist.Values) { if (!dic.Contains(p.Code)) { p.ToRecordset(rec, true); } } } db.Execute("DELETE Cells.* FROM Projects INNER JOIN (CalcParams INNER JOIN Cells ON CalcParams.ParamId = Cells.ParamId) ON Projects.Project = CalcParams.Project WHERE Projects.SysField='Del';"); db.Execute("DELETE CalcParams.* FROM Projects INNER JOIN CalcParams ON Projects.Project = CalcParams.Project WHERE Projects.SysField='Del';"); db.Execute("DELETE * FROM Projects WHERE Projects.SysField='Del'"); } } catch (Exception ex) { AddError("Ошибка при работе с ReporterData, архивом или файлом данных отчета", ex); } return(plist.Values); }
private void UpdateReport_1_3_4() { SysPage.AddProperty("LiveReportPeriodLength", "Длина периода динамического отчета (мин)", "15"); SysPage.AddProperty("LiveReportSourcesLate", "Задержка источников для динамического отчета (мин)", "0"); SysPage.AddProperty("LiveReportFillPages", "Какие листы заполнять в динамическом отчете (Все листы, Текущий лист)", "Все листы"); }
private void UpdateReport_1_3_3() { SysPage.AddProperty("MonthLength", "Длительность интервала по умолчанию, количество месяцев"); SysPage.AddProperty("DayStart", "Начало интервала по умолчанию, сутки"); }
private void UpdateReport_1_3_2() { SysPage.AddProperty("FillPages", "Какие листы заполнять (Все листы, Текущий лист)", "Все листы"); }
private void UpdateReport_1_3_1() { SysPage.AddProperty("Абсолютное комбинированное", null, "LinkType=AbsoluteCombined;CellComment=;AllowEdit=False;"); SysPage.AddProperty("Список абсолютных значений", null, "LinkType=AbsoluteList;CellComment=;ValueDistanceY=1;ValuesOrder=IncTime;LengthHour=1;"); }
//Установить текущую книгу активной, вызывается при смене книги или при открытии новой public static void ChangeActiveBook() { if (!IsActivated) { return; } try { if (!SysPage.IsInfoTask()) { HideBook(); } else { var wb = Application.ActiveWorkbook; var s = new SysPage(wb).GetValue("Report"); using (CommonBook.StartLog("Смена активной книги", "", s)) { try { if (IsOpening && !ProgrammOpening && !s.IsEmpty()) { try //Чтобы не вылазила загадочная ошибка { if (Books.ContainsKey(s) && Books[s].Workbook.FullName != wb.FullName) { Different.MessageError("Файл отчета с кодом " + s + " уже открыт"); } } catch { } } if (s.IsEmpty()) { ActiveBook = null; } else if (ActiveBook == null || ActiveBook.Code.ToLower() != s.ToLower()) { HideBook(); if (Books.ContainsKey(s)) { ActiveBook = Books[s]; foreach (var f in ActiveBook.Forms.Values) { f.Show(); } } else { ActiveBook = new ReportBook(s, wb); ActiveBook.OpenHistory(General.ReporterDir + @"ReporterHistory\" + s + "History.accdb", General.HistryTemplateFile); Books.Add(s, ActiveBook); ActiveBook.LoadSetup(); } } } catch (Exception ex) { CommonBook.AddError("Ошибка при открытии отчета", ex); throw; } } } } catch (Exception ex) { ex.MessageError("Ошибка при открытии отчета", "Системная ошибка построителя отчетов"); } IsOpening = false; ProgrammOpening = false; }
//Копирует контрольный бланк отчета в текущий public void CopyServerReport() { if (GeneralRep.IsUpdateFromReportServer) { return; } using (StartAtom(ReporterCommand.CopyServerReport)) { var code = SysPage.GetValue("Report"); string serverReport; using (var rec = new RecDao(General.ReporterFile, "SELECT ServerReport FROM Reports WHERE Report='" + code + "'")) { if (!rec.HasRows() || rec.GetString("ServerReport").IsEmpty()) { AddError("Файл контрольного экземпляра не задан"); return; } serverReport = rec.GetString("ServerReport"); } var file = new FileInfo(serverReport); if (!file.Exists || file.Extension != ".xlsx") { AddError("Указанный файл контрольного экземпляра не существует или не является файлом Excel, " + serverReport); return; } if (serverReport == Workbook.FullName) { AddError("Файл контрольного бланка расчета не должен совпадать с файлом бланка отчета, " + serverReport); return; } try { Workbook.Save(); } catch {} try { GeneralRep.IsUpdateFromReportServer = true; string tbook = General.TmpDir + "TmpServerReport.xlsx"; file.CopyTo(tbook, true); var twbook = GeneralRep.Application.Workbooks.Open(tbook); if (!SysPage.IsInfoTask(twbook)) { AddError("Указанный файл контрольного экземпляра не является файлом отчета, " + serverReport); } else if (MessageReportQuestion("Обновить данный бланк отчета из контрольного бланка отчета?")) { _transactions.Clear(); _afterTransCells.Clear(); CurTransactionNum = 0; string fbook = Workbook.FullName; Workbook.Close(); var tfile = new FileInfo(tbook); tfile.CopyTo(fbook, true); Workbook = GeneralRep.Application.Workbooks.Open(fbook); SysPage = new SysPage(Workbook); } twbook.Close(); } catch (Exception ex) { AddError("Ошибка при копировании контрольного бланка отчета, " + serverReport, ex); } GeneralRep.IsUpdateFromReportServer = false; } }
//Список обновлений private void UpdateReport_1_2_0() { SysPage.AddProperty("AllowProjectsRepetitions", "Разрешить повтор кодов проектов", "False"); SysPage.SysSheet.PutCellValue(1, 5, ""); }