Пример #1
0
        public void TablsList()
        {
            var tdir = Different.GetTestInfoTaskDir() + @"CommonTypes\Tabls\TablsList\";
            var tdb  = new DaoDb(tdir + "Project1GenData.accdb");
            {
                var tlist = new TablsList(tdb);
                Assert.IsNotNull(tlist.Tabls);
                Assert.IsTrue(tlist.Tabls.ContainsKey("T1"));
                var t = tlist.Tabls["T1"];
                Assert.AreEqual("T1", t.Code);
                Assert.AreEqual(1, t.MaxLevel);
                Assert.AreEqual(2, t.Fields.Count);
                Assert.AreEqual(2, t.Fields[0].Count);
                Assert.AreEqual(2, t.FieldsNums[0].Count);
                Assert.IsTrue(new TablField("StringField", 0, DataType.String).IsEquals(t.FieldsNums[0][0]));
                Assert.IsTrue(new TablField("IntField", 1, DataType.Integer).IsEquals(t.FieldsNums[0][1]));
                Assert.AreEqual(2, t.Fields[1].Count);
                Assert.AreEqual(2, t.FieldsNums[1].Count);
                Assert.IsTrue(new TablField("StringSub", 0, DataType.String).IsEquals(t.FieldsNums[1][0]));
                Assert.IsTrue(new TablField("IntSub", 1, DataType.Integer).IsEquals(t.FieldsNums[1][1]));

                Assert.IsTrue(tlist.Tabls.ContainsKey("T2"));
                t = tlist.Tabls["T2"];
                Assert.AreEqual("T2", t.Code);
                Assert.AreEqual(0, t.MaxLevel);
                Assert.AreEqual(1, t.Fields.Count);
                Assert.AreEqual(1, t.Fields[0].Count);
            }
        }
Пример #2
0
 private void butBreak_Click(object sender, EventArgs e)
 {
     if (Different.MessageQuestion("Прервать заполнение отчета?"))
     {
         try
         {
             _task.Abort();
             _task = null;
         }
         catch { }
         Thread.Sleep(1000);
         try
         {
             _book.Controller = null;
             if (_book.CommandLog != null)
             {
                 _book.AddEvent("Выполнение прервано");
             }
             while (_book.Command != null)
             {
                 _book.Finish("Выполнение прервано", true);
             }
         }
         catch { }
         SetCalcMode(false);
     }
 }
Пример #3
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);
         }
     }
 }
Пример #4
0
 //Выводит сообщение c ошибкой текущей комманды
 public void ShowError()
 {
     if (Command != null && Command.IsError)
     {
         Different.MessageError(Command.ErrorMessage());
     }
 }
Пример #5
0
        private void butDeleteThread_Click(object sender, RoutedEventArgs e)
        {
            if (gridThreads.SelectedItem == null)
            {
                return;
            }
            var t = (ThreadController)gridThreads.SelectedItem;

            if (t.Projects.Count > 0)
            {
                Different.MessageError("Для удаления потока нужно сначала удалить из него все проекты");
                return;
            }
            try
            {
                t.HandInputWindow.Close();
                t.HandInputWindow = null;
            }
            catch {}
            try
            {
                t.SetupWindow.Close();
                t.SetupWindow = null;
            }
            catch { }
            try
            {
                t.ThreadWindow.Close();
                t.ThreadWindow = null;
            }
            catch { }
            App.ThreadsDic.Remove(t.Id);
            App.Threads.Remove(t);
            t.DeleteThread();
        }
Пример #6
0
 //Сдигает выделение после установки ссылки, isValue - производится запись свойства в ячейку, иначе установка ссылки
 public void MoveAfterLink()
 {
     try
     {
         var   acell = GeneralRep.Application.ActiveCell;
         Range rcell = null;
         int   d;
         if (int.TryParse(NextCellStep.Text, out d))
         {
             if (NextCellShift.Text == "Вправо")
             {
                 rcell = (Range)acell.Worksheet.Cells[acell.Row, acell.Column + d];
             }
             if (NextCellShift.Text == "Вниз")
             {
                 rcell = (Range)acell.Worksheet.Cells[acell.Row + d, acell.Column];
             }
             if (rcell != null)
             {
                 rcell.Activate();
             }
         }
         else
         {
             Different.MessageError("Недопустимое значение шага перехода после установки ссылки: " + NextCellStep.Text);
         }
     }
     catch { }
 }
Пример #7
0
 private void butDeleteAll_Click(object sender, RoutedEventArgs e)
 {
     if (Different.MessageQuestion("Удалить все сообщения из списка?"))
     {
         ThreadC.GridErrors.Clear();
     }
 }
Пример #8
0
        //Сохранение шаблона, templateName - имя шаблона
        private void SaveTemplate()
        {
            if (_template.IsEmpty())
            {
                return;
            }
            if (Template.Text.IsEmpty())
            {
                Different.MessageError("Не указано имя шаблона");
                return;
            }
            int tmp;

            if (NextCellShift.Text != "Нет" && (!int.TryParse(NextCellStep.Text, out tmp) || tmp < -1000 || tmp > 1000))
            {
                Different.MessageError("Не корректно заполнена величина сдвига после установки ссылки");
            }
            SaveParam();
            var list = new List <string>();

            foreach (DataGridViewRow row in TemplateGrid.Rows)
            {
                var p = row.Get("Props");
                if (p != null)
                {
                    list.Add(p);
                }
            }
            _book.SysPage.PutTemplate(_template, "NextCellShift=" + NextCellShift.Text + ";NextCellStep=" + NextCellStep.Text, list);
            if (!Template.Items.Contains(_template))
            {
                Template.Items.Add(_template);
            }
            UpdateTemplateInBook(_template);
        }
Пример #9
0
 private void ButBreak_Click(object sender, EventArgs e)
 {
     if (Different.MessageQuestion("Вы действительно хотите прервать расчет?"))
     {
         ThreadApp.BreakCalc();
     }
 }
Пример #10
0
        private void butOK_Click(object sender, EventArgs e)
        {
            if (GroupCode.Text.IsEmpty())
            {
                Different.MessageError("Не заполнено имя группы");
                return;
            }
            ChangeReportsRow();
            using (var db = new DaoDb(General.ReporterFile))
            {
                //Сохранение в ReporterData
                using (var rec = new RecDao(db, "SELECT * FROM GroupReports WHERE GroupId=" + _groupId))
                {
                    rec.Put("GroupCode", GroupCode.Text);
                    rec.Put("GroupName", GroupName.Text);
                    ((FormGroupReports)GeneralRep.CommonBook.Forms[ReporterCommand.GroupReports]).EditItem(rec, _groupId);
                }

                db.Execute("DELETE * FROM ReportsForGroup WHERE GroupId=" + _groupId);
                using (var rec = new RecDao(db, "ReportsForGroup"))
                    foreach (DataGridViewRow row in Reports.Rows)
                    {
                        if (!row.IsNewRow)
                        {
                            rec.AddNew();
                            rec.Put("GroupId", _groupId);
                            rec.PutFromDataGrid("Report", row);
                            rec.PutFromDataGrid("ReportName", row);
                            rec.PutFromDataGrid("ReportFile", row);
                            rec.PutFromDataGrid("ReportTag", row);
                        }
                    }
            }
            Close();
        }
Пример #11
0
 private void ButWriteOpc_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         var dt = DataType.Text.ToDataType();
         if (!TagValue.Text.IsOfType(dt))
         {
             Different.MessageError("Недопустимое значение для указанного типа данных");
         }
         else
         {
             var opc = new DebugOpcServer(OpcServerName.Text, Node.Text);
             opc.Logger.Start();
             opc.Connect();
             opc.AddGroup("Check");
             opc.AddSignalByTag(OpcTag.Text, dt, TagValue.Text);
             opc.Prepare();
             opc.WriteValues();
             if (!opc.Logger.Command.IsError)
             {
                 MessageBox.Show("Значение успешно записано");
             }
             else
             {
                 Different.MessageError("Ошибка при записи значения." + Environment.NewLine + opc.Logger.Command.ErrorMessage());
             }
             opc.Dispose();
         }
     }
     catch (Exception ex)
     {
         ex.MessageError("Ошибка при записи значения");
     }
 }
Пример #12
0
 private void butDeleteIntervals_Click(object sender, EventArgs e)
 {
     if (Different.MessageQuestion("Удалить отмеченные интервалы?"))
     {
         using (_book.StartAtom("Удаление интервалов из журнала"))
         {
             var intervals = new List <ArchiveInterval>();
             int n         = 0;
             var t         = dataSet1.Tables["IntervalsTable"];
             foreach (DataRow row in t.Rows)
             {
                 try
                 {
                     if ((bool)row["Otm"])
                     {
                         var interval = new ArchiveInterval(IntervalType.Single, (DateTime)row["PeriodBegin"], (DateTime)row["PeriodEnd"], (string)row["IntervalName"]);
                         intervals.Add(interval);
                         n++;
                     }
                 }
                 catch { }
             }
             _book.AddEvent("Удаление интервалов", n + " интервалов");
             using (_book.Start(30, 65))
                 _book.Archive.DeleteIntervals(_book.CodeAsProject, ReportType.Excel, intervals);
             using (_book.Start(65))
                 UpdateIntervals();
             _book.ShowError();
         }
     }
 }
Пример #13
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            using (var rec = new RecDao(Different.GetInfoTaskDir() + @"General\Config.accdb",
                                        "SELECT SysSubTabl.SubParamRowSource FROM SysTabl INNER JOIN SysSubTabl ON SysTabl.ParamId = SysSubTabl.ParamId " +
                                        "WHERE ((SysTabl.ParamValue='Приемник') AND (SysSubTabl.SubParamName='OPCServerName'));"))
                while (rec.Read())
                {
                    var set = rec.GetString("SubParamRowSource").ToPropertyHashSet();
                    foreach (var s in set.Values)
                    {
                        if (!OpcServerName.Items.Contains(s))
                        {
                            OpcServerName.Items.Add(s);
                        }
                    }
                }
            OpcServerName.Items.Add("Matrikon.OPC.Simulation.1");

            using (var sys = new SysTabl(Different.GetInfoTaskDir() + @"Controller\ControllerData.accdb"))
            {
                OpcServerName.Text = sys.SubValue("DebugWriteOPC", "OpcServerName");
                Node.Text          = sys.SubValue("DebugWriteOPC", "Node");
                OpcTag.Text        = sys.SubValue("DebugWriteOPC", "OpcTag");
                DataType.Text      = sys.SubValue("DebugWriteOPC", "DataType");
                TagValue.Text      = sys.SubValue("DebugWriteOPC", "TagValue");
            }
        }
Пример #14
0
 //Сохранение предыдущего выбранного параметра в таблицу
 private void SaveParam()
 {
     if (_cells != null)
     {
         try
         {
             var    ac    = LinkCellAction.Text.ToCellAction();
             string field = ac != CellActionType.Text ? CellField.Text : "";
             int    ix    = LinkX.Text.ToInt();
             int    iy    = LinkY.Text.ToInt();
             _cells["CellAction"].Value = LinkCellAction.Text;
             _cells["Field"].Value      = ac != CellActionType.Text ? CellField.Text : "";
             _cells["X"].Value          = ix.ToString();
             _cells["Y"].Value          = iy.ToString();
             string codeForming = (WriteText.Visible ? WriteText.Text : LinkCodeForming.Visible ? LinkCodeForming.Text : "") ?? "<Полный код>";
             _cells["CodeForming"].Value = codeForming;
             string s = "CodeForming=" + codeForming + ";CellAction=" + LinkCellAction.Text + ";Field=" + field + ";X=" + ix + ";Y=" + iy + ";";
             if (ac == CellActionType.Save)
             {
                 s += "LinkType=Сохранение";
             }
             else if (ac != CellActionType.Text && field.ToLinkField().IsValueField())
             {
                 s += LinkPropsPanel.PropsString();
                 if (LinkPropsPanel.LinkPropsError != "")
                 {
                     Different.MessageError(LinkPropsPanel.LinkPropsError, "Не правильно заполнены поля");
                 }
             }
             _cells["Props"].Value    = s;
             _cells["LinkType"].Value = !LinkPropsPanel.Visible ? "" : LinkPropsPanel.CellLinkType.Text;
         }
         catch { }
     }
 }
Пример #15
0
        public IHttpActionResult AddDifferent([FromBody] JObject value)
        {
            int     uid            = (int)value["UserId"];
            decimal price          = (decimal)value["Price"];
            int     type           = (int)value["Type"];
            string  link           = value["Link"].ToString();
            int     estimateNumber = (int)value["EstimateNumber"];
            int     actualNumber   = (int)value["ActualNumber"];

            Different different = new Different
            {
                UserId         = uid,
                State          = 1,
                Type           = type,
                Price          = price,
                Link           = link,
                EstimateNumber = estimateNumber,
                ActualNumber   = actualNumber,
                AddTimes       = DateTime.Now
            };

            entities.Different.Add(different);
            int result = entities.SaveChanges();

            if (result > 0)
            {
                return(Ok(Respone.Success("提交成功")));
            }
            else
            {
                return(Ok(Respone.No("发生了点问题,请稍后再试")));
            }
        }
Пример #16
0
        private void butCompile_Click(object sender, EventArgs e)
        {
            string itd = Different.GetInfoTaskDir();
            var    t   = new TablikCompiler {
                ShowIndicator = true
            };

            t.SetHistoryFile(itd + @"Constructor\TablikHistory\TablikHistory.accdb");
            t.SetCompiledDir(itd + @"Compiled");
            //t.LoadProject(itd + @"ProjectsReal\Тутаев\TutElectro.accdb");
            //t.LoadProject(itd + @"ProjectsReal\Сургут2-3\Electro3.accdb");
            //t.LoadProject(itd + @"ProjectsReal\Курган\Ktec2_Tep.accdb");
            //t.LoadProject(itd + @"Projects\PrSignals.accdb");
            //t.LoadProject(itd + @"Analyzer\ArhAnalyzerProject.accdb");
            t.LoadProject(itd + @"Projects\ClassTest.accdb");
            //t.LoadProject(itd + @"ProjectsReal\СУГРЭС-11\Sugres11_PN.accdb");
            //t.LoadProject(itd + @"Projects\ApdControl.accdb");
            //MessageBox.Show(t.ProjectFile + " " + t.ProjectCode + " " + t.ProjectName);
            t.LoadSignals();
            string res = t.CompileProject();

            if (!res.IsEmpty())
            {
                MessageBox.Show(res);
            }
            t.Close();
        }
Пример #17
0
 //Выполнение транцзакции
 public void AddTransaction(Transaction t)
 {
     if (!t.ErrMess().IsEmpty())
     {
         Different.MessageError(t.ErrMess());
     }
     if (t.Cells.Count == 0 && t.TrShape == null)
     {
         return;
     }
     if (CurTransactionNum != _transactions.Count)
     {
         _transactions.RemoveRange(CurTransactionNum, _transactions.Count - CurTransactionNum);
         _afterTransCells.RemoveRange(CurTransactionNum, _transactions.Count - CurTransactionNum);
     }
     if (_transactions.Count >= 200)
     {
         _transactions.RemoveRange(0, _transactions.Count - 100);
         _afterTransCells.RemoveRange(0, _transactions.Count - 100);
         CurTransactionNum = _transactions.Count;
     }
     _transactions.Add(t);
     if (t.TrShape == null)
     {
         _afterTransCells.Add(GeneralRep.Application.ActiveCell);
     }
     CurTransactionNum++;
 }
Пример #18
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("Формула корректна");
            }
        }
Пример #19
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();
        }
Пример #20
0
 public TablikGenerator()
 {
     _infoTaskDir = Different.GetInfoTaskDir();
     OpenHistory(_infoTaskDir + @"Constructor\TablikHistory\GeneratorHistory.accdb",
                 _infoTaskDir + @"General\HistoryTemplate.accdb");
     using (StartLog("Открытие"))
         _isClosed = false;
 }
Пример #21
0
 private void ButExit_Click(object sender, EventArgs e)
 {
     if (Different.MessageQuestion("Выйти из приложения?"))
     {
         Close();
         Environment.Exit(0);
     }
 }
Пример #22
0
 private void ButDelete_Click(object sender, EventArgs e)
 {
     if (Different.MessageQuestion("Удалить все ошибки потока " + _thread.Id + "?"))
     {
         SqlDb.Execute(Program.MonitorHistory.SqlProps, "TRUNCATE TABLE ErrorsList" + _thread.Id);
         LoadErrors(_thread);
     }
 }
Пример #23
0
        public void GenerateRasKurgan()
        {
            var tdir      = Different.GetTestInfoTaskDir() + @"Tablik\Generator\RasKurgan\";
            var generator = new TablikGenerator();

            generator.Generate(tdir + "RasProjectGen.accdb", tdir + "RasProjectGenData.accdb", tdir + "RasProject.accdb");
            generator.Close();
        }
Пример #24
0
        public void Generate()
        {
            var tdir      = Different.GetTestInfoTaskDir() + @"Tablik\Generator\";
            var generator = new TablikGenerator();

            generator.Generate(tdir + "Project1Gen.accdb", tdir + "Project1GenData.accdb", tdir + "Project1Result.accdb");
            generator.Close();
        }
Пример #25
0
 private void butRun_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         DateTime beg, en;
         bool     b = DateTime.TryParse(periodBegin.Text, out beg);
         b &= DateTime.TryParse(periodEnd.Text, out en);
         if (b && ThreadC.State == State.Stopped)
         {
             if (ThreadC.IsPeriodic)
             {
                 if (ThreadC.PeriodLength <= 0 || ThreadC.PeriodLength > 60)
                 {
                     b = false;
                 }
                 else
                 {
                     b &= CorrectTime(ThreadC.PeriodLength, 60.0);
                     b &= CorrectTime(ThreadC.PeriodLength, beg.TimeOfDay.Minutes + beg.TimeOfDay.Seconds / 60.0);
                     b &= CorrectTime(ThreadC.PeriodLength, en.TimeOfDay.Minutes + en.TimeOfDay.Seconds / 60.0);
                     if (b && (ThreadC.PeriodBegin < ThreadC.SourcesBegin) &&
                         !Different.MessageQuestion("Указанный интервал расчета не попадает в диапазон источников. Все равно запустить расчет?"))
                     {
                         return;
                     }
                 }
             }
             else
             {
                 var dlen = Convert.ToInt32(ThreadC.PeriodEnd.Subtract(ThreadC.PeriodBegin).TotalDays);
                 if (dlen > 5 && !Different.MessageQuestion("Задан очень длинный интервал расчета (" + dlen + " суток). Вы уверены, что хотите провести расчет за этот интервал?"))
                 {
                     return;
                 }
                 if ((ThreadC.PeriodEnd > ThreadC.SourcesEnd || ThreadC.PeriodBegin < ThreadC.SourcesBegin) &&
                     !Different.MessageQuestion("Указанный интервал расчета не попадает в диапазон источников. Все равно провести расчет?"))
                 {
                     return;
                 }
             }
         }
         if (b)
         {
             ThreadC.StartCalc();
         }
         else
         {
             Different.MessageError("Недопустимые границы или длительность периода расчета");
         }
     }
     catch (Exception ex)
     {
         ex.MessageError("Ошибка при запуске расчета");
     }
 }
Пример #26
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;
 }
Пример #27
0
        public void LoadValues()
        {
            var tdir = Different.GetTestInfoTaskDir() + @"CommonTypes\Tabls\LoadValues\";
            var tdb  = new DaoDb(tdir + "Project2GenData.accdb");
            {
                var tlist = new TablsList(tdb);
                tlist.LoadValues();

                var t      = tlist.Tabls["T1"];
                var rnums  = t.TablValues.SubNums;
                var rcodes = t.TablValues.SubCodes;
                Assert.IsTrue(rnums.ContainsKey(1));
                Assert.AreEqual("aa", rnums[1].Code);
                Assert.AreEqual("sssa", rnums[1]["stringfield"].String);
                Assert.AreEqual(10, rnums[1]["intfield"].Integer);
                Assert.AreEqual(2, rnums[1].SubCodes.Count);
                Assert.AreEqual(2, rnums[1].SubNums.Count);
                Assert.AreEqual("a1", rnums[1].SubNums[1].Code);
                Assert.AreEqual(2, rnums[1].SubCodes["a2"].Num);
                Assert.AreEqual("sa1", rnums[1].SubNums[1]["StringSub"].String);
                Assert.AreEqual("sa2", rnums[1].SubNums[2]["StringSub"].String);
                Assert.AreEqual("sa1", rnums[1].SubNums[1][0].String);
                Assert.AreEqual("sa2", rnums[1].SubNums[2][0].String);
                Assert.AreEqual(11, rnums[1].SubNums[1][1].Integer);
                Assert.AreEqual(12, rnums[1].SubNums[2][1].Integer);

                Assert.IsTrue(rcodes.ContainsKey("aa"));
                Assert.AreEqual(1, rcodes["aa"].Num);
                Assert.AreEqual("sssa", rcodes["aa"]["stringfield"].String);
                Assert.AreEqual("sa2", rcodes["aa"].SubNums[2]["StringSub"].String);

                Assert.IsTrue(rnums.ContainsKey(2));
                Assert.AreEqual("bb", rnums[2].Code);
                Assert.AreEqual("Sssb", rnums[2]["StringField"].String);
                Assert.AreEqual(20, rnums[2]["IntField"].Integer);
                Assert.AreEqual(1, rnums[2].SubCodes.Count);
                Assert.AreEqual(1, rnums[2].SubNums.Count);
                Assert.AreEqual("b1", rnums[2].SubNums[1].Code);
                Assert.AreEqual("sb1", rnums[2].SubNums[1]["StringSub"].String);

                Assert.IsTrue(rnums.ContainsKey(3));
                Assert.AreEqual("cc", rnums[3].Code);
                Assert.AreEqual("SSSC", rnums[3]["StringField"].String);
                Assert.AreEqual(30, rnums[3]["IntField"].Integer);
                Assert.AreEqual(3, rnums[3].SubCodes.Count);
                Assert.AreEqual(3, rnums[3].SubNums.Count);
                Assert.AreEqual("c2", rnums[3].SubNums[2].Code);
                Assert.AreEqual("sc3", rnums[3].SubNums[3]["StringSub"].String);
                Assert.AreEqual(33, rnums[3].SubNums[3]["IntSub"].Integer);

                t = tlist.Tabls["T2"];
                Assert.AreEqual(0, t.TablValues.SubNums.Count);
                Assert.AreEqual(0, t.TablValues.SubCodes.Count);
            }
        }
Пример #28
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 { }
            }
        }
Пример #29
0
 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     using (var sys = new SysTabl(Different.GetInfoTaskDir() + @"Controller\ControllerData.accdb"))
     {
         sys.PutSubValue("DebugWriteOPC", "OpcServerName", OpcServerName.Text);
         sys.PutSubValue("DebugWriteOPC", "Node", Node.Text);
         sys.PutSubValue("DebugWriteOPC", "OpcTag", OpcTag.Text);
         sys.PutSubValue("DebugWriteOPC", "DataType", DataType.Text);
         sys.PutSubValue("DebugWriteOPC", "TagValue", TagValue.Text);
     }
 }
Пример #30
0
        private void ButExport_Click(object sender, EventArgs e)
        {
            if (Template.Text.IsEmpty())
            {
                Different.MessageError("Не указано имя шаблона");
                return;
            }
            SaveTemplate();
            var f = new DialogCommand(DialogType.OpenExcel)
            {
                DialogTitle  = "Файл отчета для экспорта шаблона",
                ErrorMessage = "Указан недопустимый файл отчета"
            }.Run();

            try
            {
                if (!f.IsEmpty())
                {
                    var        t     = _book.SysPage.GetTemplate(Template.Text);
                    var        p     = _book.SysPage.GerTemplateGeneralProps(Template.Text);
                    Workbook   rbook = null;
                    ReportBook book  = null;
                    bool       notb  = true;
                    foreach (var b in GeneralRep.Books.Values)
                    {
                        try
                        {
                            if (b.Workbook.FullName == f)
                            {
                                notb  = false;
                                book  = b;
                                rbook = b.Workbook;
                            }
                        }
                        catch { }
                    }
                    if (notb)
                    {
                        rbook = GeneralRep.Application.Workbooks.Open(f);
                        book  = GeneralRep.ActiveBook;
                    }
                    if (book.SysPage.TemplateX(Template.Text) == -1 || Different.MessageQuestion("В отчете " + book.Code + " уже есть шаблон " + Template.Text + ". Заменить?"))
                    {
                        book.SysPage.PutTemplate(Template.Text, p.ToPropertyString(), t);
                        rbook.Save();
                    }
                    if (notb)
                    {
                        rbook.Close();
                    }
                }
            }
            catch { Different.MessageError("Ошибка при экспорте шаблона в файл " + f); }
        }