예제 #1
0
        public ParamNode(TablikKeeper keeper, ITerminalNode terminal, TablikCalcParam param, IEnumerable <IExprNode> args = null)
            : base(keeper, terminal)
        {
            Param = param;
            Args  = args != null?args.ToArray() : new IExprNode[0];

            if (Keeper.Module == param.Module && !Keeper.Param.UsedParams.ContainsKey(param))
            {
                Keeper.Param.UsedParams.Add(param, terminal.Symbol);
            }
        }
예제 #2
0
 //Загрузить параметры из таблицы
 private void LoadPars(DaoRec rec)
 {
     while (rec.Read())
     {
         var par = new TablikCalcParam(this, rec, false, false);
         ParamsId.Add(par.ParamId, par);
         ParamsAll.Add(par.Code, par);
         if (par.CalcOn && !par.IsFatalError)
         {
             Params.Add(par.Code, par);
         }
     }
 }
예제 #3
0
 //Определение типа данных
 public override void DefineType()
 {
     Type = new SimpleType(DataType.Void);
     if (!(Args[0].Type is TablikCalcParam) || ((TablikCalcParam)Args[0].Type).Params.Count == 0)
     {
         AddError("Аргументом функция Подпараметры может быть только параметр с подпараметрами");
     }
     else
     {
         Param = (TablikCalcParam)Args[0].Type;
         Keeper.Param.BaseParams.Add(Param);
     }
 }
예제 #4
0
 //Загрузить подпараметры из таблицы
 private void LoadSubPars(DaoRec rec)
 {
     while (rec.Read())
     {
         var par = new TablikCalcParam(this, rec, true, false);
         SubParamsId.Add(par.ParamId, par);
         var opar = ParamsId[par.OwnerId];
         opar.ParamsId.Add(par.ParamId, par);
         opar.ParamsAll.Add(par.Code, par);
         if (par.CalcOn && !par.IsFatalError)
         {
             opar.Params.Add(par.Code, par);
         }
     }
 }
예제 #5
0
        //Добавляет параметр в дерево параметров
        private void JoinToParamTree()
        {
            if (Code == null)
            {
                return;
            }
            if (OwnerId != 0)
            {
                Owner    = Module.ParamsId[OwnerId];
                FullCode = Owner.FullCode + "." + Code;
                CalcOn  &= Owner.CalcOn;
            }
            else
            {
                FullCode = Code;
            }

            var owner = OwnerId == 0 ? (ISubParams)Module : Owner;

            owner.ParamsId.Add(ParamId, this);
            if (!owner.ParamsAll.ContainsKey(Code) || !owner.ParamsAll[Code].CalcOn)
            {
                owner.ParamsAll.Add(Code, this, true);
            }
            if (CalcOn)
            {
                if (owner.Params.ContainsKey(Code))
                {
                    ErrMess += "Повтор кода расчетного параметра (" + Code + "); ";
                    owner.Params[Code].ErrMess += "Повтор кода расчетного параметра (" + Code + "); ";
                }
                else
                {
                    owner.Params.Add(Code, this);
                }
            }
        }
예제 #6
0
 public TablikKeeper(TablikCalcParam param)
 {
     Param = param;
 }