public static V8Field Field_from_tree(Tree field_tree, ref bool has_version, V8Table parent) { V8Field fld = new V8Field(parent); if (field_tree.Get_Type() != Node_Type.nd_string) { throw new Exception("Ошибка получения имени поля таблицы. Узел не является строкой."); } fld.Name = field_tree.Get_Value(); field_tree = field_tree.Get_Next(); Field_type_declaration type_declaration; try { type_declaration = Field_type_declaration.Parse_tree(field_tree); } catch { throw new Exception($"Поле {fld.Name}"); } fld.Type = type_declaration.Type; fld.Null_exists = type_declaration.Null_exists; fld.Type_manager = FieldType.Create_type_manager(type_declaration); if (fld.Type == TypeFields.tf_version) { has_version = true; } return(fld); }
private DepotVer Get_depot_version(byte[] record) { DepotVer depotVer = DepotVer.UnknownVer; V8Field fldd_depotver = Table_depot.Get_field("DEPOTVER"); if (fldd_depotver != null) { String Ver = fldd_depotver.Get_presentation(record, true); if (String.Compare(Ver, "0300000000000000") == 0) { depotVer = DepotVer.Ver3; } else if (String.Compare(Ver, "0500000000000000") == 0) { depotVer = DepotVer.Ver5; } else if (String.Compare(Ver, "0600000000000000") == 0) { depotVer = DepotVer.Ver6; } else if (String.Compare(Ver, "0700000000000000") == 0) { depotVer = DepotVer.Ver7; } else { depotVer = DepotVer.UnknownVer; //msreg_m.AddMessage_("Неизвестная версия хранилища", MessageState::Error, "Версия хранилища", Ver); Console.WriteLine("Неизвестная версия хранилища"); } return(depotVer); } return(depotVer); }