示例#1
0
 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, "Равно");
 }
示例#2
0
        //Изменяет текущий тип ссылки
        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;
            }
        }
示例#3
0
 private void UpdateReport_1_3_5()
 {
     SysPage.AddProperty("VideoBegin", "Начало просмотра в видеомагнитофоне");
     SysPage.AddProperty("VideoEnd", "Конец просмотра в видеомагнитофоне");
     SysPage.AddProperty("VideoPeriodLength", "Длина периода в видеомагнитофоне (мин)", "15");
     SysPage.AddProperty("VideoBetweenPeriods", "Ожидание следущего периода в видеомагнитофоне (сек)", "5");
     SysPage.AddProperty("VideoFillPages", "Какие листы заполнять в видеомагнитофоне (Все листы, Текущий лист)", "Все листы");
 }
示例#4
0
 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);
     }
 }
示例#5
0
 //Если workbook=null, значит создается CommonBook, иначе ActiveBook
 public ReportBook(string code, Workbook workbook)
 {
     Code       = code;
     ThreadName = Code;
     Workbook   = workbook;
     if (workbook != null)
     {
         SysPage = new SysPage(Workbook);
         UpdateReportVersion();
     }
 }
示例#6
0
        //Обновление на одну версию
        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);
            }
        }
示例#7
0
        //Обновлении версии файла отчета
        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);
        }
示例#8
0
 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);
     }
 }
示例#9
0
        //Вызывается при закрытии заданной формы 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());
                    }
                }
            }
        }
示例#10
0
 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("Указан недопустимый файл бланка отчета");
     }
 }
示例#11
0
        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();
        }
示例#12
0
        //Загрузка настроек из 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");
        }
示例#13
0
        //Загрузка текущего шаблона установки ссылок
        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;
        }
示例#14
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");
        }
示例#15
0
 //Загрузка параметров из файла данных в память (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);
     }
 }
示例#16
0
 //Удаляет закрываемую книгу из списка
 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 { }
 }
示例#17
0
 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, "Равно");
 }
示例#18
0
        //Загружает свойства из выделенной ячейки
        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);
            }
        }
示例#19
0
        //Открывает новую заданную форму
        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);
        }
示例#20
0
        //Обновление списка проектов в файле данных отчета
        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);
        }
示例#21
0
 private void UpdateReport_1_3_4()
 {
     SysPage.AddProperty("LiveReportPeriodLength", "Длина периода динамического отчета (мин)", "15");
     SysPage.AddProperty("LiveReportSourcesLate", "Задержка источников для динамического отчета (мин)", "0");
     SysPage.AddProperty("LiveReportFillPages", "Какие листы заполнять в динамическом отчете (Все листы, Текущий лист)", "Все листы");
 }
示例#22
0
 private void UpdateReport_1_3_3()
 {
     SysPage.AddProperty("MonthLength", "Длительность интервала по умолчанию, количество месяцев");
     SysPage.AddProperty("DayStart", "Начало интервала по умолчанию, сутки");
 }
示例#23
0
 private void UpdateReport_1_3_2()
 {
     SysPage.AddProperty("FillPages", "Какие листы заполнять (Все листы, Текущий лист)", "Все листы");
 }
示例#24
0
 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;");
 }
示例#25
0
 //Установить текущую книгу активной, вызывается при смене книги или при открытии новой
 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;
 }
示例#26
0
 //Копирует контрольный бланк отчета в текущий
 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;
     }
 }
示例#27
0
 //Список обновлений
 private void UpdateReport_1_2_0()
 {
     SysPage.AddProperty("AllowProjectsRepetitions", "Разрешить повтор кодов проектов", "False");
     SysPage.SysSheet.PutCellValue(1, 5, "");
 }