Example #1
0
        private void ButSyntax_Click(object sender, EventArgs e)
        {
            bool er = false;
            var  sh = _book.ActiveShape();

            if (sh != null)
            {
                try
                {
                    var rs = new ReportShapeDebug(sh, ShapeFormula.Text);
                    if (!rs.ErrMess.IsEmpty())
                    {
                        Different.MessageError(rs.ErrMess);
                        er = true;
                    }
                }
                catch (Exception ex)
                {
                    ex.MessageError("Ошибка синтаксиса или применения формулы");
                    er = true;
                }
            }
            if (!er)
            {
                Different.MessageInfo("Формула корректна");
            }
        }
Example #2
0
 private void butArchiveRanges_Click(object sender, RoutedEventArgs e)
 {
     foreach (var p in ThreadC.Providers)
     {
         if (p.ProviderType == ProviderType.Archive)
         {
             var    ar = (IArchive)General.RunProvider(p.Code, p.Name, p.Inf, (ThreadCalc)DataContext);
             string s  = "Диапазоны архива результатов\n";
             foreach (var proj in ThreadC.Projects.Values)
             {
                 var ranges = ar.ReadRanges(proj.Code, ReportType.Calc);
                 s += "\nПроект: " + proj.Code + "\n";
                 if (ranges.Count == 0)
                 {
                     s += "Архив пустой\n";
                 }
                 foreach (var range in ranges)
                 {
                     s += range.Key.ToRussian() + ": " + range.Value.Begin + " - " + range.Value.End + "\n";
                 }
             }
             Different.MessageInfo(s);
         }
     }
 }
Example #3
0
        //Открывает окно потока
        private void OpenThreadWindow()
        {
            if (gridThreads.SelectedItem == null)
            {
                Different.MessageInfo("Не выбран поток");
                return;
            }
            var t = (ThreadController)gridThreads.SelectedItem;

            if (App.ThreadWindows.ContainsKey(t.Id))
            {
                App.ThreadWindows[t.Id].Focus();
            }
            else
            {
                var w = new ThreadWindow {
                    DataContext = t, App = App
                };
                t.ThreadWindow = w;
                App.ThreadWindows.Add(t.Id, w);
                w.Show();
                t.UpdateState();
            }
            gridThreads.UnselectAllCells();
        }
Example #4
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;
 }
Example #5
0
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            bool stop = true;

            foreach (var t in App.Threads)
            {
                stop &= t.State != State.Calc && t.State != State.FinishCalc && t.State != State.Waiting && t.State != State.FinishWaiting && t.State != State.GetTime;
            }
            if (!stop)
            {
                Different.MessageInfo("Для закрытия контроллера расчетов нужно чтобы все потоки были остановлены");
                e.Cancel = true;
            }
            else
            {
                try { if (AppInfoWindow != null)
                      {
                          AppInfoWindow.Close();
                      }
                } catch {}
                foreach (var tt in App.Threads)
                {
                    try
                    {
                        var t = (ThreadController)tt;
                        if (t.HandInputWindow != null && t.HandInputWindow.IsVisible)
                        {
                            var vw = t.HandInputWindow.ValuesVindow;
                            if (vw != null && vw.Visibility == Visibility.Visible)
                            {
                                ((GridInputParam)vw.DataContext).SaveHandValues();
                                vw.Close();
                            }
                            t.HandInputWindow.ValuesVindow = null;
                            if (t.HandInputWindow.IsVisible)
                            {
                                t.HandInputWindow.Close();
                            }
                        }
                        if (t.SetupWindow != null && t.SetupWindow.IsVisible)
                        {
                            t.SetupWindow.Close();
                        }
                        if (t.ThreadWindow != null && t.ThreadWindow.IsVisible)
                        {
                            t.ThreadWindow.Close();
                        }
                        t.CloseThread();
                    }
                    catch {}
                }
                try { DaoDb.Compress(General.ControllerFile, 100000000, General.TmpDir); }
                catch { }
            }
        }
Example #6
0
 private bool SetInitialPeriod()
 {
     _videoBegin     = VideoBegin.Text.ToDateTime();
     _videoEnd       = VideoEnd.Text.ToDateTime();
     _periodLength   = PeriodLength.Text.ToInt();
     _betweenPeriods = BetweenPeriods.Text.ToInt();
     if (_periodLength == 0 || _betweenPeriods == 0)
     {
         Different.MessageInfo("Не заполнена длина интервала отчета или длительность ожидание");
         return(false);
     }
     SaveSettings();
     _periodBegin     = _videoBegin;
     _periodEnd       = _periodBegin.AddMinutes(_periodLength);
     PeriodBegin.Text = _periodBegin.ToString();
     PeriodEnd.Text   = _periodEnd.ToString();
     return(_book.CheckPeriodTime(PeriodBegin.Text, PeriodEnd.Text) != null);
 }
Example #7
0
        private bool SetInitialPeriod()
        {
            _periodLength = PeriodLength.Text.ToInt();
            _sourcesLate  = SourcesLate.Text.ToInt();
            if (_periodLength == 0)
            {
                Different.MessageInfo("Не заполнена длина интервала отчета");
                return(false);
            }
            SaveSettings();
            var d = DateTime.Now.AddMinutes(-_sourcesLate);

            d                = d.Date.AddHours(d.Hour).AddMinutes(d.Minute);
            _periodEnd       = d.AddMinutes(-(d.Minute % _periodLength));
            _periodBegin     = _periodEnd.AddMinutes(-_periodLength);
            PeriodBegin.Text = _periodBegin.ToString();
            PeriodEnd.Text   = _periodEnd.ToString();
            return(_book.CheckPeriodTime(PeriodBegin.Text, PeriodEnd.Text) != null);
        }
Example #8
0
 private void ButClearArchive_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         foreach (var p in ThreadC.Providers)
         {
             if (p.ProviderType == ProviderType.Archive)
             {
                 var    ar = (IArchive)General.RunProvider(p.Code, p.Name, p.Inf, (ThreadCalc)DataContext);
                 string s  = "Произвести очистку архива?\nПровайдер: " + p.Code + "\n";
                 foreach (var proj in ThreadC.Projects.Values)
                 {
                     var ranges = ar.ReadRanges(proj.Code, ReportType.Calc);
                     s += "\nПроект: " + proj.Code + "\n";
                     if (ranges.Count == 0)
                     {
                         s += "Архив пустой\n";
                     }
                     foreach (var range in ranges)
                     {
                         s += range.Key.ToRussian() + ": " + range.Value.Begin + " - " + range.Value.End + "\n";
                     }
                 }
                 if (Different.MessageQuestion(s))
                 {
                     ar.ClearArchive();
                     Different.MessageInfo("Архив успешно очищен");
                 }
             }
         }
     }
     catch (Exception ex)
     {
         System.Windows.Forms.MessageBox.Show("Не удалось очистить архив \n" + ex.Message + "\n" + ex.StackTrace);
     }
 }