예제 #1
0
 //Конструктор, на входе рекордсет с таблицей Functions
 public FunClass(IRecordRead rec)
 {
     Name    = rec.GetString("Name");
     Synonym = rec.GetString("Synonym");
     Code    = rec.GetString("Code") ?? (Synonym ?? Name).ToLower();
     Type    = rec.GetString("CodeType");
 }
예제 #2
0
 //Конструктор, на входе рекордсет с таблицей Functions
 internal FunCompile(IRecordRead rec)
 {
     Name    = rec.GetString("Name");
     Synonym = rec.GetString("Synonym");
     Code    = (rec.GetString("Code") ?? (Synonym ?? Name)).ToLower();
     Id      = rec.GetInt("Id");
 }
예제 #3
0
 protected BaseObject(IRecordRead rec)
 {
     Id        = rec.GetInt("ObjectId");
     Code      = rec.GetString("CodeObject");
     Name      = rec.GetString("NameObject");
     InfObject = rec.GetString("InfObject");
 }
예제 #4
0
        //Изменяет элемент в GroupReports из рекордсета, id - ключ элемента, если элемента нет, то элемент добавляется
        public ListViewItem EditItem(IRecordRead rec, int id = 0)
        {
            int          key  = id == 0 ? rec.GetInt("GroupId") : id;
            var          code = rec.GetString("GroupCode");
            var          sid  = key.ToString();
            ListViewItem item = null;

            if (id == 0)
            {
                item = GroupReports.Items.Add(sid, code, null);
            }
            else
            {
                foreach (ListViewItem it in GroupReports.Items)
                {
                    if ((int)it.Tag == key)
                    {
                        item = it;
                    }
                }
            }
            item.SubItems.Clear();
            item.Tag  = key;
            item.Text = code;
            item.SubItems.Add(rec.GetString("GroupName"));
            return(item);
        }
예제 #5
0
        public TablikCalcParam(TablikModule module, IRecordRead rec, bool isSubParam, bool isGenerated)
            : base(rec, isSubParam)
        {
            Module      = module;
            Keeper      = new TablikKeeper(this);
            IsGenerated = isGenerated;
            if (!Code.IsCorrectCode())
            {
                ErrMess     += "Указан недопустимый код расчетного параметра; ";
                IsFatalError = true;
            }

            CalcOn    = rec.GetBool("CalcOn");
            UserExpr1 = rec.GetString("UserExpr1", "");
            if (UserExpr1 == "")
            {
                ErrMess     += "Не заполнено расчетное выражение; ";
                IsFatalError = true;
            }
            UserExpr2 = rec.GetString("UserExpr2", "");
            if (UserExpr2 == "")
            {
                ErrMess     += "Не заполнено управляющее выражение; ";
                IsFatalError = true;
            }
            InputsStr = rec.GetString("Inputs");

            JoinToParamTree();
        }
예제 #6
0
 //Создание провайдера архива
 protected void LoadArchive(IRecordRead rec, Logger logger)
 {
     try
     {
         if (!rec.GetString("CodeArchive").IsEmpty() && !rec.GetString("InfArchive").IsEmpty())
         {
             Archive = (IArchive)General.RunProvider(rec.GetString("CodeArchive"), CodeFinal + "_Archive", rec.GetString("InfArchive"), logger, ProviderSetupType.ReporterArchive);
         }
         if (Archive == null || !Archive.Check())
         {
             if (this is ReportProject)
             {
                 Book.AddError("Не удалось соединиться с архивом. Следует проверить настройки", null, CodeFinal + "_Archive");
             }
             Archive.Dispose();
             Archive = null;
         }
     }
     catch (Exception ex)
     {
         if (this is ReportProject)
         {
             Book.AddError("Не удалось соединиться с архивом. Следует проверить настройки", ex, CodeFinal + "_Archive");
         }
         Archive = null;
     }
 }
예제 #7
0
 public void LoadEdited(IRecordRead rec)
 {
     Units      = rec.GetString("Units");
     Min        = rec.GetDouble("Min");
     Max        = rec.GetDouble("Max");
     ObjectCode = rec.GetString("ObjectCode");
 }
예제 #8
0
 //rec - рекордсет таблицы Objects, checkErrors: true - проверка сигналов, false - сигналы для компиляции
 public ObjectSignal(IRecordRead rec, bool checkErrors)
 {
     Id   = rec.GetInt("ObjectId");
     Code = rec.GetString("CodeObject");
     Name = rec.GetString("NameObject");
     Tag  = rec.GetString("TagObject");
     if (checkErrors)
     {
         ErrMess = "";
         if (Id <= 0)
         {
             ErrMess += "Не заполнен идентификатор (ObjectId); ";
         }
         if (Code.IsEmpty())
         {
             ErrMess += "Не заполнен код (CodeObject); ";
         }
         if (rec.GetString("CommName").IsEmpty())
         {
             ErrMess += "Не заполнено имя коммуникатора (CommName); ";
         }
         DefalutsCount  = 0;
         ErrorInSignals = false;
     }
 }
예제 #9
0
 public ArchiveReport(IRecordRead rec)
 {
     Code         = rec.GetString("Report");
     Name         = rec.GetString("ReportName");
     Type         = rec.GetString("ReportType").ToReportType();
     SourceChange = rec.GetTime("SourceChahge");
     Id           = rec.GetInt("ReportId");
 }
예제 #10
0
 public BaseTablikSignal(TablikConnect connect, IRecordRead rec)
 {
     Code     = rec.GetString("CodeSignal");
     Name     = rec.GetString("NameSignal");
     DataType = rec.GetString("DataType").ToDataType();
     Connect  = connect;
     Simple   = new SimpleType(DataType);
 }
예제 #11
0
 protected ReportObject(IRecordRead rec)
 {
     ParamId      = rec.GetInt("ParamId");
     Page         = rec.GetString("Page");
     LinkField    = rec.GetString("LinkField").ToLinkField();
     LinkType     = rec.GetString("LinkType").ToLinkType();
     IntervalType = rec.GetString("IntervalType").ToIntervalType();
     Properties   = rec.GetString("Properties").ToPropertyDicS();
 }
예제 #12
0
 public ThreadController(IRecordRead rec)
 {
     using (var c = Start())
     {
         Id              = rec.GetInt("ThreadId");
         ThreadName      = Id.ToString();
         ApplicationType = ApplicationType.Controller;
         OpenHistory(General.ControllerDir + @"History\History" + Id + ".accdb", General.HistryTemplateFile, true);
         PrepareResultFile();
         using (StartAtom(Atom.OpenThread))
         {
             try
             {
                 AddEvent("Чтение списка функций");
                 ReadFunctions();
                 AddEvent("Чтение свойств потока");
                 Comment         = rec.GetString("Comment");
                 IsPeriodic      = rec.GetBool("IsPeriodic");
                 CalcType        = IsPeriodic ? "Периодический" : "Разовый";
                 PeriodLength    = rec.GetDouble("PeriodLength", 15);
                 SourcesLate     = rec.GetDouble("SourcesLate", 2);
                 RushWaitingTime = rec.GetDouble("RushWaitingTime");
                 TimeAfterError  = rec.GetDouble("TimeAfterError", 5);
                 IsImit          = rec.GetBool("IsImit");
                 ImitModeStr     = rec.GetString("ImitMode");
                 using (var sys = new SysTabl(ResultFile))
                 {
                     PeriodBegin    = sys.SubValue("PeriodInfo", "PeriodBegin").ToDateTime();
                     PeriodEnd      = sys.SubValue("PeriodInfo", "PeriodEnd").ToDateTime();
                     CalcName       = sys.SubValue("PeriodInfo", "CalcName");
                     StartMoment    = sys.SubValue("PeriodInfo", "StartMoment").ToDateTime();
                     StartTime      = sys.SubValue("PeriodInfo", "StartTime").ToDateTime();
                     StopTime       = sys.SubValue("PeriodInfo", "StopTime").ToDateTime();
                     IsStopTime     = sys.SubValue("PeriodInfo", "IsStopTime") == "True";
                     _lastErrorText = sys.SubValue("LastErrorInfo", "ErrorText");
                     _lastErrorTime = sys.SubValue("LastErrorInfo", "ErrorPeriodBegin").ToDateTime();
                     _lastErrorPos  = 0;
                     UpdateTablo();
                 }
                 _state = State.Stopped;
             }
             catch (Exception ex)
             {
                 AddError("Ошибка загрузки потока", ex);
             }
         }
         StartAtom(Atom.ReadSetup, ReadSetup);
         IsClosed = false;
         if (c.IsError)
         {
             Different.MessageError("Ошибка загрузки данных потока расчета. " + c.ErrorMessage());
         }
     }
 }
예제 #13
0
 public Provider(IRecordRead rec, ThreadCalc thread)
 {
     ThreadCalc   = thread;
     Type         = rec.GetString("ProviderType");
     ProviderType = Type.ToProviderType();
     CanBeNotOtm  = !ProviderType.IsProviderSource();
     Name         = rec.GetString("ProviderName");
     Code         = rec.GetString("ProviderCode");
     Inf          = rec.GetString("ProviderInf");
     Otm          = true;
 }
예제 #14
0
        public CalcParamArchive(IRecordRead rec, Project project)
        {
            FirstParam = project.CalcParamsId[rec.GetInt("CalcParamId")];
            int sid = rec.GetInt("CalcSubParamId");

            LastParam    = project.CalcSubParamsId[sid];
            DataType     = rec.GetString("DataType").ToDataType();
            ArchiveParam = new ArchiveParam(rec.GetString("FullCode"), DataType, rec.GetString("Units"), FirstParam, LastParam,
                                            rec.GetString("SuperProcessType").ToSuperProcess(), rec.GetInt("DecPlaces", -1), rec.GetDoubleNull("Min"), rec.GetDoubleNull("Max"));                         //ab 12.04.2019 в Min и Max было rec.GetDouble
            _saveAbsolute = ArchiveParam.SuperProcess.IsAbsolute();
            _savePeriodic = ArchiveParam.SuperProcess.IsPeriodic();
        }
예제 #15
0
 public GridError(IRecordRead rec)
 {
     Id           = rec.GetInt("Id");
     Description  = rec.GetString("Description");
     Params       = rec.GetString("Params");
     Time         = rec.GetTime("Time").ToString();
     _command     = rec.GetString("Command");
     _context     = rec.GetString("Context");
     Command      = _command + "\n" + _context;
     _periodBegin = rec.GetTimeNull("PeriodBegin");
     _periodEnd   = rec.GetTimeNull("PeriodEnd");
     Period       = _periodEnd == null ? null : (_periodBegin + "\n" + _periodEnd);
 }
예제 #16
0
        //Конструктор, на входе рекордсет с таблицей FunctionsOverloads
        public FunOverload(IRecordRead reco, FunClass funClass)
        {
            Owner      = funClass;
            Number     = reco.GetInt("RunNumber");
            IsCombined = reco.GetBool("IsCombined");
            for (int i = 1; i <= 9; ++i)
            {
                var t = reco.GetString("Operand" + i);
                if (t.IsEmpty())
                {
                    break;
                }
                Inputs.Add(new FunParam(TypeFromString(t), reco.GetString("Default" + i)));
            }
            for (int i = 1; i <= 2; ++i)
            {
                var t = reco.GetString("More" + i);
                if (t.IsEmpty())
                {
                    break;
                }
                InputsMore.Add(new FunParam(TypeFromString(t)));
            }

            var s = reco.GetString("Result");

            if (!IsCombined)
            {
                Result = TypeFromString(s);
            }
            else
            {
                var p = s.Split('+');
                foreach (string c in p)
                {
                    if (c == "M1")
                    {
                        InputsMore[0].FormResult = true;
                    }
                    else if (c == "M2")
                    {
                        InputsMore[1].FormResult = true;
                    }
                    else
                    {
                        Inputs[int.Parse(c) - 1].FormResult = true;
                    }
                }
            }
        }
예제 #17
0
        //Чтение значений по одному выходу из рекордсета источника
        //Возвращает количество сформированных значений
        protected override int ReadMoments(IRecordRead rec)
        {
            int      dn       = Source is KosmotronikaRetroSource ? 1 : 0;
            int      nwrite   = 0;
            DateTime time     = rec.GetTime(2 + dn);
            var      isAnalog = ((KosmotronikaBaseSource)Source).IsAnalog;
            int      ndint    = rec.GetInt(isAnalog ? 5 + dn : 7 + dn);
            var      err      = MakeError(ndint);

            nwrite += AddMom(PokSignal, time, rec.GetInt(4 + dn), err);
            nwrite += AddMom(StateSignal, time, ndint);
            if (isAnalog)
            {
                nwrite += AddMom(ValueSignal, time, rec.GetDouble(7 + dn), err);
            }
            else
            {
                var strValue = rec.GetString(8 + dn);
                if (strValue.IndexOf("0x", StringComparison.Ordinal) >= 0)
                {
                    nwrite += AddMom(ValueSignal, time, Convert.ToUInt32(strValue, 16), err);
                }
                else
                {
                    nwrite += AddMom(ValueSignal, time, Convert.ToDouble(strValue), err);
                }
            }
            return(nwrite);
        }
예제 #18
0
 //Если провайдер позволяет, чтение из таблицы архива
 public ArchiveInterval(IRecordRead rec, IntervalType type) : base(rec)
 {
     Type       = type;
     Name       = rec.GetString("IntervalName");
     Id         = rec.GetInt("IntervalId");
     TimeChange = rec.GetTime("TimeChange");
 }
예제 #19
0
        public Prev(IRecordRead rec, Project project)
        {
            _project          = project;
            Code              = rec.GetString("FullCode");
            _calcParamArchive = _project.ArchiveParams[Code];
            var ap       = _calcParamArchive.ArchiveParam;
            var listLast = new List <IntervalType>();

            IsPrevAbs     = rec.GetBool("PrevAbs");
            IsLastBase    = rec.GetBool("LastBase");
            IsLastHour    = rec.GetBool("LastHour");
            IsLastDay     = rec.GetBool("LastDay");
            IsManyBase    = rec.GetBool("ManyBase");
            IsManyHour    = rec.GetBool("ManyHour");
            IsManyDay     = rec.GetBool("ManyDay");
            IsManyMoments = rec.GetBool("ManyMoments");

            if (IsLastBase)
            {
                listLast.Add(IntervalType.Base);
            }
            if (IsLastHour)
            {
                listLast.Add(IntervalType.Hour);
            }
            if (IsLastDay)
            {
                listLast.Add(IntervalType.Day);
            }
            if (listLast.Count > 0)
            {
                LastReportParam = new ArchiveReportParam(ap.FullCode, project.Code, ap.DataType, ap.SuperProcess, ap.FirstParam.CalcParamType, listLast);
            }
            var listMany = new List <IntervalType>();

            if (IsManyBase)
            {
                listMany.Add(IntervalType.Base);
                ManyBase = new List <Moment>();
            }
            if (IsManyHour)
            {
                listMany.Add(IntervalType.Hour);
                ManyHour = new List <Moment>();
            }
            if (IsManyDay)
            {
                listMany.Add(IntervalType.Day);
                ManyDay = new List <Moment>();
            }
            if (IsManyMoments)
            {
                listMany.Add(IntervalType.Moments);
                ManyMoments = new List <Moment>();
            }
            if (listMany.Count > 0)
            {
                ManyReportParam = new ArchiveReportParam(ap.FullCode, project.Code, ap.DataType, ap.SuperProcess, ap.FirstParam.CalcParamType, listMany);
            }
        }
예제 #20
0
 public CalcParam(CalcModule module, IRecordRead rec, bool isSubParam)
     : base(rec, isSubParam)
 {
     Module       = module;
     CompiledExpr = rec.GetString("CompiledExpr");
     Keeper       = new CalcKeeper(this);
 }
예제 #21
0
 //Загрузка из файла данных
 public ReportParam(IRecordRead rec)
 {
     ArchiveParam = new ArchiveParam(rec);
     Project      = rec.GetString("Project");
     Id           = rec.GetInt("ParamId");
     FromArchive  = rec.GetBool("FromArchive");
     FromProject  = rec.GetBool("FromProject");
 }
예제 #22
0
        //Загрузка из рекордсета ReporterData или файла данных отчета
        public ReportProjectBase(ReportBook book, IRecordRead rec)
        {
            Book  = book;
            Code  = rec.GetString("Project");
            Code2 = rec.GetString("ProjectCode2");
            Name  = rec.GetString("ProjectName");
            var prs = book.SysPage.GetProjects();

            if (prs.ContainsKey(CodeFinal))
            {
                CalcMode = prs[CodeFinal].CalcMode;
            }
            File = rec.GetString("ProjectFile");
            if (!DbVersion.IsProject(File))
            {
                File = null;
            }
        }
예제 #23
0
 protected int AddMomString(SourceSignal sig, DateTime time, IRecordRead rec, string field, MomErr err = null)
 {
     if (sig == null)
     {
         return(0);
     }
     sig.BufMom.String = rec.GetString(field);
     return(sig.AddMom(time, err));
 }
예제 #24
0
 public BaseSignal(IRecordRead rec)
 {
     Code           = rec.GetString("CodeSignal");
     Name           = rec.GetString("NameSignal");
     DataType       = rec.GetString("DataType").ToDataType();
     InfOut         = rec.GetString("InfOut");
     InfProp        = rec.GetString("InfProp");
     SignalType     = rec.GetString("SignalType");
     InitialSignals = rec.GetString("InitialSignals");
     Formula        = rec.GetString("Formula");
 }
예제 #25
0
 public Grafic(IRecordRead recg, ThreadCalc thread)
     : base(recg.GetInt("Dimension"), 0)
 {
     Code       = recg.GetString("Code");
     GraficType = recg.GetString("GraficType").ToGraficType();
     ThreadCalc = thread;
     while (!recg.EOF && recg.GetString("Code").ToLower() == Code.ToLower())
     {
         try
         {
             ReadPoint(recg);
             recg.Read();
         }
         catch (Exception ex)
         {
             thread.AddError("Ошибка загрузки графика", ex, "График=" + Code);
         }
     }
 }
예제 #26
0
        //Чтение значений по одному выходу из рекордсета источника
        protected override int ReadMoments(IRecordRead rec)
        {
            int      dn     = Source is KosmotronikaRetroSource ? 1 : 0;
            int      nwrite = 0;
            DateTime time   = rec.GetTime(0);

            nwrite += AddMom(NumWsSignal, time, rec.GetInt(2));
            nwrite += AddMom(ModeSignal, time, rec.GetInt(3));
            nwrite += AddMom(CodeSignal, time, rec.GetInt(4));
            nwrite += AddMom(SnSignal, time, rec.GetInt(5));
            nwrite += AddMom(NumTypeSignal, time, rec.GetInt(6));
            if (dn == 1)
            {
                nwrite += AddMom(AppartmentSignal, time, rec.GetInt(7));
            }
            nwrite += AddMom(ParamsSignal, time, rec.GetString(7 + dn));
            nwrite += AddMom(ExtCommandSignal, time, rec.GetString(8 + dn));
            nwrite += AddMom(PointSignal, time, rec.GetString(9 + dn));
            return(nwrite);
        }
예제 #27
0
 public ReportCell(IRecordRead rec) : base(rec)
 {
     Id       = rec.GetInt("CellId");
     X        = rec.GetInt("X");
     Y        = rec.GetInt("Y");
     SaveCode = rec.GetString("SaveCode");
     if (SaveCode.IsEmpty())
     {
         SaveCode = Page + "_" + Y + "_" + X;
     }
     AllowEdit = rec.GetBool("AllowEdit");
 }
예제 #28
0
 //Конструктор, на входе рекорсет rec, objects - список объектов, checkErrors: true - проверка сигналов, false - сигналы для компиляции
 public Signal(IRecordRead rec, DicI <ObjectSignal> objects, bool checkErrors)
 {
     ErrMess       = "";
     Code          = rec.GetString("CodeSignal");
     Name          = rec.GetString("NameSignal");
     Units         = rec.GetString("Units");
     DataType      = rec.GetString("DataType").ToDataType();
     InUseSource   = false;
     InUseReceiver = false;
     ObjectId      = rec.GetInt("ObjectId");
     ConstValue    = rec.GetString("ConstValue");
     SourceName    = rec.GetString("SourceName");
     ReceiverName  = rec.GetString("ReceiverName");
     Inf           = rec.GetString("Inf");
     Default       = rec.GetBool("Default");
     if (checkErrors)
     {
         if (Code.IsEmpty())
         {
             ErrMess += "Не заполнен код (CodeSignal); ";
         }
         if (DataType == DataType.Error)
         {
             ErrMess += "Недопустимый тип данных (DataType); ";
         }
         if (ConstValue.IsEmpty() && SourceName.IsEmpty() && ReceiverName.IsEmpty())
         {
             ErrMess += "Должно быть заполнено имя источника (SourceName), имя приемника (ReceiverName) или значение константы (ConstValue); ";
         }
     }
     if (objects.ContainsKey(ObjectId))
     {
         ObjectSignal = objects[ObjectId];
         ObjectSignal.Signals.Add(Code, this);
         FullCode = ObjectSignal.Code + "." + Code;
         if (checkErrors)
         {
             //((RecDao)rec).Put("FullCode", FullCode);
             if (Default)
             {
                 objects[ObjectId].DefalutsCount++;
             }
             if (ErrMess != "")
             {
                 objects[ObjectId].ErrorInSignals = true;
             }
         }
     }
 }
예제 #29
0
        //Конструктор
        internal FunOverload(FunCompile fun,  //Функция-владелец
                             IRecordRead rec) //Рекордсет с таблицей FunctionsOverloads
        {
            _arrayType = rec.GetString("ResultArray").ToArrayType();
            Code       = fun.Code + "_";

            for (int i = 1; i <= 9; ++i)
            {
                var dtype = rec.GetString("Operand" + i);
                if (dtype.IsEmpty())
                {
                    break;
                }
                string atype = i == 1 ? rec.GetString("Operand1Array") : "";
                var    fp    = new FunParam(dtype, atype, rec.GetString("Default" + i));
                _inputs.Add(fp);
                Code += fp.DataType.ToLetter();
            }
            for (int i = 1; i <= 2; ++i)
            {
                var dtype = rec.GetString("More" + i);
                if (dtype.IsEmpty())
                {
                    break;
                }
                var fp = new FunParam(dtype);
                _inputsMore.Add(fp);
                Code += fp.DataType.ToLetter();
            }

            var s  = rec.GetString("Result");
            var dt = s.ToDataType();

            _isCombined = dt == DataType.Error;
            if (!_isCombined)
            {
                _resultType = dt;
            }
            else
            {
                var p = s.Split('+');
                foreach (string c in p)
                {
                    if (c == "M1")
                    {
                        _inputsMore[0].UsedInResult = true;
                    }
                    else if (c == "M2")
                    {
                        _inputsMore[1].UsedInResult = true;
                    }
                    else
                    {
                        _inputs[int.Parse(c) - 1].UsedInResult = true;
                    }
                }
            }
        }
예제 #30
0
 //Подгрузка свойств имитируемого юнита из таблиц
 public ImitSignal(IRecordRead rec, Imitator imitator) : base("", rec.GetString("FullCode"), DataType.Variant, imitator)
 {
     Imitator        = imitator;
     ImitId          = rec.GetInt("ImitId");
     ImitType        = rec.GetInt("ImitType");
     _intervalLength = rec.GetInt("IntervalLength");
     if (_intervalLength < 0)
     {
         _intervalLength = 0;
     }
     _intervalSpan = new TimeSpan(0, 0, _intervalLength);
     _signalValue  = rec.GetDouble("SignalValue");
     _signalNd     = rec.GetInt("SignalNd");
 }