//Работа со справочными таблицами private bool TablContains(int numTabl, Moment mcode, Moment msub, int fieldNum) { bool e = true; if (!_calc.Project.Tabls.ContainsKey(numTabl)) { e = false; } else { var tabl = _calc.Project.Tabls[numTabl]; TablParam p = null; if (mcode.DataType.LessOrEquals(DataType.Integer)) { e &= tabl.ParamsNum.ContainsKey(mcode.Integer); if (e) { p = tabl.ParamsNum[mcode.Integer]; } } else { e &= tabl.ParamsCode.ContainsKey(mcode.String); if (e) { p = tabl.ParamsCode[mcode.String]; } } if (e && msub != null) { if (msub.DataType.LessOrEquals(DataType.Integer)) { e &= p.ParamsNum.ContainsKey(msub.Integer); } else { e &= p.ParamsCode.ContainsKey(msub.String); } e &= tabl.SubFieldsCount > fieldNum; } else { e &= tabl.FieldsCount > fieldNum; } } return(e); }
//Обрабатывает все фунции GetTabl, GetTablName, GetSubTabl, GetSubTablName private void GetTabl(int numTabl, Moment mcode, Moment msub, int fieldNum, Moment res) { if (!_calc.Project.Tabls.ContainsKey(numTabl)) { PutErr("Таблица " + numTabl + " не найдена", res); } else { var tabl = _calc.Project.Tabls[numTabl]; bool e = true; TablParam p = null; if (mcode.DataType.LessOrEquals(DataType.Integer)) { if (!tabl.ParamsNum.ContainsKey(mcode.Integer)) { e = false; } else { p = tabl.ParamsNum[mcode.Integer]; } } else { if (!tabl.ParamsCode.ContainsKey(mcode.String)) { e = false; } else { p = tabl.ParamsCode[mcode.String]; } } if (e && msub != null) { if (msub.DataType.LessOrEquals(DataType.Integer)) { if (!p.ParamsNum.ContainsKey(msub.Integer)) { e = false; } else { p = p.ParamsNum[msub.Integer]; } } else { if (!p.ParamsCode.ContainsKey(msub.String)) { e = false; } else { p = p.ParamsCode[msub.String]; } } } e &= fieldNum >= -1; if (msub == null) { e &= tabl.FieldsCount > fieldNum; } else { e &= tabl.SubFieldsCount > fieldNum; } if (!e) { PutErr("Не найдено значение в таблице " + numTabl + ", параметр " + mcode.String + (msub == null ? "" : ", подпараметр " + (msub.String ?? "")) + (fieldNum >= 0 ? ", колонка " + fieldNum : ""), res); } else { res.String = fieldNum == -1 ? p.Name : p.Values[fieldNum]; } } }