public static void ParseBlockProperties(string schemaString, IsbNode routeBlockNode) { var schema = new XmlDocument(); schema.LoadXml(schemaString); var events = schema.SelectNodes("/Settings/Event/node()"); foreach (XmlNode eventXmlNode in events) { var eventString = GetNodeString(eventXmlNode); if (!System.String.IsNullOrEmpty(eventString)) { var eventNode = new IsbNode(); eventNode.Name = eventXmlNode.Name; eventNode.Text = eventString; routeBlockNode.Nodes.Add(eventNode); } } var properties = schema.SelectNodes("//Properties/Property[(@Type = '2' or @Type = '5') and @Name != 'Name']"); foreach (XmlNode property in properties) { var propertyStringNode = property.SelectSingleNode("Value/Value"); if (propertyStringNode != null) { var propertyString = GetNodeString(propertyStringNode); if (!System.String.IsNullOrEmpty(propertyString)) { var blockStringNode = new IsbNode(); blockStringNode.Name = property.Attributes["Description"].Value; blockStringNode.Text = propertyString; routeBlockNode.Nodes.Add(blockStringNode); } } } }
private List <IsbNode> LoadGroups(IsbNode rootNode) { var listGroups = new List <IsbNode>(); if (this.CheckTableExist("MBRegUnit")) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select t.id, t.name from (select MBRegUnit.RegUnit [id], Max(MBRegUnit.Name) [name] from MBRegUnit join MBReports on (MBRegUnit.RegUnit = MBReports.RegUnit) where MBReports.TypeRpt='Function' group by MBRegUnit.RegUnit) t order by t.name"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var node = new IsbNode(); node.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { node.Name = reader.GetString(1); } rootNode.Nodes.Add(node); listGroups.Add(node); } } reader.Close(); } return(listGroups); }
public static void ParseEvents(string eventsText, IsbNode parent) { var pattern = $"^({String.Join("|", EventIdsRegExPatterns)})"; var events = Regex.Split(eventsText, pattern, RegexOptions.Multiline); if (events.Length > 0) { var eventsNode = new IsbNode("События"); IsbNode eventNode = null; foreach (var eventText in events) { if (!String.IsNullOrWhiteSpace(eventText)) { if (Regex.IsMatch(eventText, pattern)) { var eventName = Regex.Replace(eventText, "\\{[-\\w]+\\}", ""); foreach (var part in EventCodePartToTitle.Keys) { eventName = eventName.Replace(part, EventCodePartToTitle[part]); } eventNode = new IsbNode(eventName); } else { eventNode.Text = eventText.Substring(2); eventsNode.Nodes.Add(eventNode); } } } parent.Nodes.Add(eventsNode); } }
private void LoadGroups(IsbNode rootNode) { SqlCommand command = new SqlCommand(); command.Connection = this.Connection; command.CommandText = @" select NGroup [id], GrName [name] from MBGrFunc order by GrName"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var node = new IsbNode(); //Номер группы функций node.Id = reader.GetInt32(0); //Имя группы функций node.Name = reader.GetString(1); rootNode.Nodes.Add(node); } } reader.Close(); }
private List <IsbNode> LoadGroups(IsbNode rootNode) { var listGroups = new List <IsbNode>(); if (this.CheckTableExist("SBRouteBlockGroup")) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select t.id, t.name from (select SBRouteBlockGroup.XrecID [id], Max(SBRouteBlockGroup.Name) [name] from SBRouteBlockGroup join SBRouteBlock on (SBRouteBlockGroup.XRecID = SBRouteBlock.BlockGroup) group by SBRouteBlockGroup.XRecID) t order by t.name"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var node = new IsbNode(); node.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { node.Name = reader.GetString(1); } rootNode.Nodes.Add(node); listGroups.Add(node); } } reader.Close(); } return(listGroups); }
private List <IsbNode> LoadGroups(IsbNode rootNode) { var listGroups = new List <IsbNode>(); SqlCommand command = new SqlCommand(); command.Connection = this.Connection; command.CommandText = @" select Analit, NameAn from MbAnalitSpr where Vid = (select Vid from MBVidAn where Kod = 'STANDARD_ROUTE_GROUPS' or Kod = 'ГТМ') order by NameAn"; command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var node = new IsbNode(reader.GetString(1)); // ИД группы маршрутов node.Id = reader.GetInt32(0); rootNode.Nodes.Add(node); listGroups.Add(node); } } reader.Close(); return(listGroups); }
void LoadMethods(IsbNode eDocTypeNode) { SqlCommand command = new SqlCommand(); command.Connection = this.Connection; command.CommandText = "SELECT [Name], [Exprn] FROM [MBEDocTypeMethod] WHERE [TypeID]=@TypeID AND [Exprn] IS NOT NULL ORDER BY [Name]"; SqlParameter paramVid = new SqlParameter("@TypeID", SqlDbType.Int); paramVid.Value = eDocTypeNode.Id; command.Parameters.Add(paramVid); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { var methodsNode = new IsbNode("Методы"); while (reader.Read()) { var methodNode = new IsbNode(); if (!reader.IsDBNull(0)) { methodNode.Name = reader.GetString(0).Trim(); methodNode.Code = methodNode.Name; } if (!reader.IsDBNull(1)) { methodNode.Text = reader.GetString(1); } methodsNode.Nodes.Add(methodNode); } eDocTypeNode.Nodes.Add(methodsNode); } reader.Close(); }
public IsbNode Load() { var functionsNode = new IsbNode("Функция"); LoadGroups(functionsNode); SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, FName, Txt, LastUpd, NGroup from MBFunc where Txt is not null order by FName"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var functionNode = new IsbNode(); functionNode.Type = IsbNodeType.Function; //ИД functionNode.Id = reader.GetInt32(0); //Имя функции functionNode.Name = reader.GetString(1); //Текст функции functionNode.Text = reader.GetString(2); //Дата и время последнего изменения if (!reader.IsDBNull(3)) { functionNode.LastUpdate = reader.GetDateTime(3); } functionsNode.Nodes.First(g => g.Id == reader.GetInt32(4)).Nodes.Add(functionNode); } } reader.Close(); functionsNode.Nodes = functionsNode.Nodes.Where(n => n.Nodes.Count > 0).ToList(); return(functionsNode); }
public IsbNode Load() { IsbNode listNode = null; if (this.CheckTableExist("MBReports")) { listNode = new IsbNode(); listNode.Name = "Сценарий (расчёт)"; var listGroups = LoadGroups(listNode); foreach (var groupNode in listGroups) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, NameRpt, Description, Report, LastUpd from MBReports where TypeRpt='Function' and RegUnit=@groupID order by NameRpt"; SqlParameter paramGroupId = new SqlParameter("@groupID", SqlDbType.Int); paramGroupId.Value = groupNode.Id; command.Parameters.Add(paramGroupId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var scriptNode = new IsbNode(); scriptNode.Type = IsbNodeType.Script; scriptNode.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { scriptNode.Name = reader.GetString(1); } if (!reader.IsDBNull(2)) { scriptNode.Text = reader.GetString(2); } if (!reader.IsDBNull(3)) { SqlBytes sqlbytes = reader.GetSqlBytes(3); System.Text.Encoding win1251 = System.Text.Encoding.GetEncoding(1251); string scriptText = win1251.GetString(sqlbytes.Value); var scriptTextNode = new IsbNode(); scriptTextNode.Name = "-=[ Текст сценария ]=-"; scriptTextNode.Text = scriptText; scriptNode.Nodes.Add(scriptTextNode); } if (!reader.IsDBNull(4)) { scriptNode.LastUpdate = reader.GetDateTime(4); } groupNode.Nodes.Add(scriptNode); } } reader.Close(); } } return(listNode); }
public SearchNode(IsbNode isbNode) { Name = isbNode.Name; IsbNode = isbNode; Visible = isbNode.IsMatch || isbNode.IsContainsMatchedNode; IsMatch = isbNode.IsMatch; LastUpdate = isbNode.LastUpdate; }
public IsbNode Load() { var methodsSupports = CheckTableExist("MBVidAnMethod"); var rootRefNode = new IsbNode("Тип справочника"); if (this.CheckTableExist("MBVidAn") && this.CheckTableExist("MBVidAnRecv")) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select Vid, Name, Kod, Exprn, LastUpd, Comment from MBVidAn order by Name ASC"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var refNode = new IsbNode(); refNode.Type = IsbNodeType.ReferenceType; //ИД refNode.Id = reader.GetInt32(0); //Имя (Код) if ((!reader.IsDBNull(1)) && (!reader.IsDBNull(2))) { refNode.Name = reader.GetString(1).Trim() + " (" + reader.GetString(2).Trim() + ")"; } if (!reader.IsDBNull(2)) { refNode.Code = reader.GetString(2).Trim(); } if (!reader.IsDBNull(3)) { ReferenceEventsParser.ParseEvents(reader.GetString(3).Trim(), refNode); } if (!reader.IsDBNull(4)) { refNode.LastUpdate = reader.GetDateTime(4); } if (!reader.IsDBNull(5)) { refNode.Text = reader.GetString(5).Trim(); } rootRefNode.Nodes.Add(refNode); } } reader.Close(); foreach (var node in rootRefNode.Nodes) { LoadRecvisites(node); if (methodsSupports) { LoadMethods(node); } } } return(rootRefNode); }
public IsbNode Load() { var methodsSupports = CheckTableExist("MBEDocTypeMethod"); IsbNode listNode = null; if (this.CheckTableExist("MBEDocType") && CheckTableExist("MBEDocTypeRecv")) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select TypeID, Kod, Name, Exprn, LastUpd, Comment from MBEDocType order by Name ASC"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { listNode = new IsbNode(); listNode.Name = "Тип карточки электронного документа"; while (reader.Read()) { var eDocNode = new IsbNode(); eDocNode.Type = IsbNodeType.EDocType; //ИД eDocNode.Id = reader.GetInt32(0); eDocNode.Code = reader.GetString(1).Trim(); //Имя eDocNode.Name = reader.GetString(2).Trim() + " (" + eDocNode.Code + ")"; //Текст событий if (!reader.IsDBNull(3)) { ReferenceEventsParser.ParseEvents(reader.GetString(3).Trim(), eDocNode); } //Дата последнего изменения if (!reader.IsDBNull(4)) { eDocNode.LastUpdate = reader.GetDateTime(4); } //Комментарий if (!reader.IsDBNull(5)) { eDocNode.Text = reader.GetString(5); } listNode.Nodes.Add(eDocNode); } } reader.Close(); foreach (var eDocNode in listNode.Nodes.Where(n => n.Id != 0)) { LoadRecvisites(eDocNode); if (methodsSupports) { LoadMethods(eDocNode); } } } return(listNode); }
public IsbNode Load() { IsbNode listNode = null; if (this.CheckTableExist("SBRouteBlock")) { listNode = new IsbNode("Блок типового маршрута"); var listGroups = LoadGroups(listNode); foreach (var groupNode in listGroups) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, Name, Comment, Properties, LastUpdate from SBRouteBlock where BlockGroup=@groupID order by Name"; SqlParameter paramGroupId = new SqlParameter("@groupID", SqlDbType.Int); paramGroupId.Value = groupNode.Id; command.Parameters.Add(paramGroupId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var routeBlockNode = new IsbNode(); routeBlockNode.Type = IsbNodeType.RouteBlock; //ИД routeBlockNode.Id = reader.GetInt32(0); //Имя if (!reader.IsDBNull(1)) { routeBlockNode.Name = reader.GetString(1); } //Комментарий if (!reader.IsDBNull(2)) { routeBlockNode.Text = reader.GetString(2); } //Свойства if (!reader.IsDBNull(3)) { var schemaBytes = (byte[])reader.GetValue(3); string schemaString = System.Text.Encoding.GetEncoding(1251).GetString(schemaBytes); RouteParser.ParseBlockProperties(schemaString, routeBlockNode); } if (!reader.IsDBNull(4)) { routeBlockNode.LastUpdate = reader.GetDateTime(4); } groupNode.Nodes.Add(routeBlockNode); } } reader.Close(); } } return(listNode); }
public IsbNode Load() { IsbNode listNode = null; listNode = new IsbNode("Типовой маршрут"); var listGroups = LoadGroups(listNode); foreach (var groupNode in listGroups) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = @" select MBAnalit.Analit , ltrim(MBAnalit.Kod) , MBAnalit.NameAn + ' (' + ltrim(MBAnalit.Kod) + ')' , MBText.SearchCondition , (select max(prot.DateAct) from XProtokol prot where prot.SrcObjID = 119 and prot.SrcRecID = MBAnalit.Analit) as LastUpd from MBAnalit join MBText on MBAnalit.Analit = MBText.SrcRecID and MBText.SrcObjID = 119 where MBAnalit.HighLvl=@groupID and MBAnalit.Vid = (select Vid from MBVidAn where Kod = 'STANDARD_ROUTES' or Kod = 'ТМТ') order by MBAnalit.NameAn"; SqlParameter paramGroupId = new SqlParameter("@groupID", SqlDbType.Int); paramGroupId.Value = groupNode.Id; command.Parameters.Add(paramGroupId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var routeNode = new IsbNode(reader.GetString(2)); routeNode.Type = IsbNodeType.StandardRoute; routeNode.Id = reader.GetInt32(0); routeNode.Code = reader.GetString(1); // Схема if (!reader.IsDBNull(3)) { var schemaBytes = (byte[])reader.GetValue(3); string schemaString = System.Text.Encoding.GetEncoding(1251).GetString(schemaBytes); RouteParser.ParseRoute(schemaString, routeNode); } if (!reader.IsDBNull(4)) { routeNode.LastUpdate = reader.GetDateTime(4); } groupNode.Nodes.Add(routeNode); } } reader.Close(); } return(listNode); }
public IsbNode Load() { var methodsSupports = CheckTableExist("SBDialogMethod"); var rootRefNode = new IsbNode("Диалог"); if (this.CheckTableExist("SBDialog") && this.CheckTableExist("SBDialogRequisiteLink")) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, Name, Code, EventHandlersText, LastUpd, Comment from SBDialog order by Name ASC"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var refNode = new IsbNode(); refNode.Type = IsbNodeType.Dialog; refNode.Id = reader.GetInt32(0); refNode.Code = reader.GetString(2).Trim(); refNode.Name = reader.GetString(1).Trim() + " (" + refNode.Code + ")"; if (!reader.IsDBNull(3)) { ReferenceEventsParser.ParseEvents(reader.GetString(3).Trim(), refNode); } if (!reader.IsDBNull(4)) { refNode.LastUpdate = reader.GetDateTime(4); } if (!reader.IsDBNull(5)) { refNode.Text = reader.GetString(5).Trim(); } rootRefNode.Nodes.Add(refNode); } } reader.Close(); foreach (var node in rootRefNode.Nodes) { LoadRecvisites(node); if (methodsSupports) { LoadMethods(node); } } } return(rootRefNode); }
private List <IsbNode> LoadGroups(IsbNode rootNode) { var listGroups = new List <IsbNode>(); Int32 vidAnalitId = GetVidAnalitId("WIZARD_GROUPS"); if (vidAnalitId >= 0) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select Analit, NameAn, Soder from MBAnalit where Vid=@vidAnalit"; SqlParameter paramVidAnalit = new SqlParameter("@vidAnalit", SqlDbType.Int); paramVidAnalit.Value = vidAnalitId; command.Parameters.Add(paramVidAnalit); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var node = new IsbNode(); node.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { node.Name = reader.GetString(1); } if (!reader.IsDBNull(2)) { node.Text = reader.GetString(2); } rootNode.Nodes.Add(node); listGroups.Add(node); } } reader.Close(); } return(listGroups); }
/// <summary> /// Загрузка реквизитов диалога /// </summary> /// <param name="recvGroupNode"> /// Ссылка на узел диалога /// A <see cref="IsbNode"/> /// </param> void LoadRecvisites(IsbNode refNode) { SqlCommand command = new SqlCommand(); command.Connection = this.Connection; command.CommandText = "SELECT [Name], [Code], [ChangeEventHandlerText], [LookupEventHandlerText], [Section] FROM [SBDialogRequisiteLink] WHERE [DialogID]=@DialogID AND ([ChangeEventHandlerText] IS NOT NULL OR [LookupEventHandlerText] IS NOT NULL) ORDER BY [RequisiteNumber]"; SqlParameter paramVid = new SqlParameter("@DialogID", SqlDbType.Int); paramVid.Value = refNode.Id; command.Parameters.Add(paramVid); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { var sectionCodeToSectionNode = new Dictionary <Char, IsbNode>(); while (reader.Read()) { var section = reader.GetString(4)[0]; IsbNode recvGroupNode = null; if (sectionCodeToSectionNode.ContainsKey(section)) { recvGroupNode = sectionCodeToSectionNode[section]; } else { var sectionName = ReferenceEventsParser.SectionCodeToName.ContainsKey(section) ? ReferenceEventsParser.SectionCodeToName[section] : "Неизвестно [" + section + "]"; recvGroupNode = new IsbNode(sectionName); refNode.Nodes.Add(recvGroupNode); sectionCodeToSectionNode.Add(section, recvGroupNode); } var recvNode = new IsbNode(); if (!reader.IsDBNull(0)) { recvNode.Name = reader.GetString(0); } if (!reader.IsDBNull(1)) { recvNode.Code = reader.GetString(1); recvNode.Name += " (" + recvNode.Code + ")"; } if (!reader.IsDBNull(2)) { var exprnRefRecvNode = new IsbNode(); exprnRefRecvNode.Name = "-=[ Вычисление ]=-"; exprnRefRecvNode.Text = reader.GetString(2); recvNode.Nodes.Add(exprnRefRecvNode); } if (!reader.IsDBNull(3)) { var inpExprnRefRecvNode = new IsbNode(); inpExprnRefRecvNode.Name = "-=[ Выбор из справочника ]=-"; inpExprnRefRecvNode.Text = reader.GetString(3); recvNode.Nodes.Add(inpExprnRefRecvNode); } recvGroupNode.Nodes.Add(recvNode); } } reader.Close(); }
public IsbNode Load() { System.Text.Encoding win1251 = System.Text.Encoding.GetEncoding(1251); IsbNode listNode = null; Int32 vidAnalitId = GetVidAnalitId("WIZARDS"); if (vidAnalitId >= 0) { listNode = new IsbNode(); listNode.Name = "Мастер действий"; listNode.Text = null; listNode.Id = vidAnalitId; var listGroups = LoadGroups(listNode); foreach (var groupNode in listGroups) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = @" select MBAnalit.Analit , MBAnalit.NameAn , MBAnalit.Soder , MBText.SearchCondition , (select max(prot.DateAct) from XProtokol prot where prot.SrcObjID = 119 and prot.SrcRecID = MBAnalit.Analit) as LastUpd from MBAnalit join MBText on MBText.SrcRecID = MBAnalit.Analit and MBText.SrcObjID = 119 where Vid=@vidAnalit and HighLvl=@groupID"; SqlParameter paramVidAnalit = new SqlParameter("@vidAnalit", SqlDbType.Int); SqlParameter paramGroupId = new SqlParameter("@groupID", SqlDbType.Int); paramVidAnalit.Value = vidAnalitId; paramGroupId.Value = groupNode.Id; command.Parameters.Add(paramVidAnalit); command.Parameters.Add(paramGroupId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var wizardNode = new IsbNode(); wizardNode.Type = IsbNodeType.Wizard; wizardNode.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) { wizardNode.Name = reader.GetString(1); } if (!reader.IsDBNull(2)) { wizardNode.Text = reader.GetString(2); } if (!reader.IsDBNull(3)) { SqlBytes sqlbytes = reader.GetSqlBytes(3); try { WizardParser.ParseWizardText(win1251.GetString(sqlbytes.Value), wizardNode); } catch (Exception e) { MessageBoxButtons buttons = MessageBoxButtons.OK; MessageBoxIcon icon = MessageBoxIcon.Information; MessageBox.Show("Ошибка парсинга схемы мастера " + wizardNode.Name, "Ошибка разбора схемы мастера", buttons, icon); } } if (!reader.IsDBNull(4)) { wizardNode.LastUpdate = reader.GetDateTime(4); } groupNode.Nodes.Add(wizardNode); } } reader.Close(); } } return(listNode); }
private void LoadRecvisites(IsbNode eDocTypeNode) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select [Name], [Kod], [Exprn], [InpExprn], [Razd] from MBEDocTypeRecv where [TypeID] = @eDocTypeID and (not([Exprn] is null) or not([InpExprn] is null)) order by [Name]"; SqlParameter paramEDocTypeId = new SqlParameter("@eDocTypeID", SqlDbType.Int); paramEDocTypeId.Value = eDocTypeNode.Id; command.Parameters.Add(paramEDocTypeId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { var sectionCodeToSectionNode = new Dictionary <Char, IsbNode>(); while (reader.Read()) { var section = reader.GetString(4)[0]; IsbNode recvGroupNode = null; if (sectionCodeToSectionNode.ContainsKey(section)) { recvGroupNode = sectionCodeToSectionNode[section]; } else { var sectionName = ReferenceEventsParser.SectionCodeToName.ContainsKey(section) ? ReferenceEventsParser.SectionCodeToName[section] : "Неизвестно [" + section + "]"; recvGroupNode = new IsbNode(sectionName); eDocTypeNode.Nodes.Add(recvGroupNode); sectionCodeToSectionNode.Add(section, recvGroupNode); } var eDocRecvNode = new IsbNode(); //Имя if (!reader.IsDBNull(0)) { eDocRecvNode.Name = reader.GetString(0); } //Код реквизита if (!reader.IsDBNull(1)) { eDocRecvNode.Code = reader.GetString(1); eDocRecvNode.Name = string.Format("{0} ({1})", eDocRecvNode.Name, eDocRecvNode.Code); } //Вычисление для реквизита и действия if (!reader.IsDBNull(2)) { var exprnEDocRecvNode = new IsbNode(); exprnEDocRecvNode.Name = "-=[ Вычисление ]=-"; exprnEDocRecvNode.Text = reader.GetString(2); eDocRecvNode.Nodes.Add(exprnEDocRecvNode); } //Выбор из справочника для реквизита типа "справочник" или "строка" if (!reader.IsDBNull(3)) { var eventEDocRecvNode = new IsbNode(); eventEDocRecvNode.Name = "-=[ Выбор из справочника ]=-"; eventEDocRecvNode.Text = reader.GetString(3); eDocRecvNode.Nodes.Add(eventEDocRecvNode); } recvGroupNode.Nodes.Add(eDocRecvNode); } } reader.Close(); }
public IsbNode Load() { IsbNode listNode = null; listNode = new IsbNode("Custom Calculations"); var config = LoadConfig(); foreach (Calculation setting in config.Calculations) { SqlCommand command = new SqlCommand(); command.Connection = Connection; var codeSelect = String.IsNullOrWhiteSpace(setting.FieldForUseAsCode) ? "''" : "tbl." + setting.FieldForUseAsCode; var addToNameSelect = String.IsNullOrWhiteSpace(setting.FieldForUseAsCode) && setting.FieldForUseAsCode != "NameAn" ? "" : " + ' (' + tbl." + setting.FieldForUseAsCode + "+ ')'"; if (setting.IsTextRequisite) { command.CommandText = @" select ref.NameAn " + addToNameSelect + @" , " + codeSelect + @" , MBText." + setting.RequisiteName + @" , (select max(prot.DateAct) from XProtokol prot where prot.SrcObjID = 119 and prot.SrcRecID = ref.Analit) as LastUpd from MBAnalitSpr ref join " + setting.TableName + @" tbl on tbl.Analit = ref.Analit join MBText on tbl.XRecID = MBText.SrcRecID and MBText.SrcObjID = (select XRecID from XObj where TblName like '" + setting.TableName + @"') where ref.Vid = (select Vid from MBVidAn where Kod = '" + setting.ReferenceName + "')"; } else { command.CommandText = @" select ref.NameAn " + addToNameSelect + @" , " + codeSelect + @" , tbl." + setting.RequisiteName + @" , (select max(prot.DateAct) from XProtokol prot where prot.SrcObjID = 119 and prot.SrcRecID = ref.Analit) as LastUpd from MBAnalitSpr ref join " + setting.TableName + @" tbl on tbl.Analit = ref.Analit where ref.Vid = (select Vid from MBVidAn where Kod = '" + setting.ReferenceName + "')"; } command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { var refNode = new IsbNode(setting.CalculationName); while (reader.Read()) { if (!reader.IsDBNull(2)) { string calculation = ""; if (setting.IsTextRequisite) { var bytes = (byte[])reader.GetValue(2); calculation = System.Text.Encoding.UTF8.GetString(bytes); } else { calculation = reader.GetString(2); } var recordNode = new IsbNode(reader.GetString(0)); recordNode.Code = reader.GetString(1); recordNode.Text = calculation; if (!reader.IsDBNull(3)) { refNode.LastUpdate = reader.GetDateTime(3); } refNode.Nodes.Add(recordNode); } } listNode.Nodes.Add(refNode); } reader.Close(); } return(listNode); }
public IsbNode Load() { IsbNode listNode = null; if (this.CheckTableExist("MBReports")) { listNode = new IsbNode(); listNode.Name = "Аналитический отчёт"; var listGroups = LoadGroups(listNode); foreach (var groupNode in listGroups) { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, NameRpt, Description, Exprn, Report, Viewer, LastUpd from MBReports where TypeRpt='MBAnAccRpt' and RegUnit=@groupID order by NameRpt ASC"; SqlParameter paramGroupId = new SqlParameter("@groupID", SqlDbType.Int); paramGroupId.Value = groupNode.Id; command.Parameters.Add(paramGroupId); command.Prepare(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var reportNode = new IsbNode(); reportNode.Type = IsbNodeType.Report; //ИД отчёта reportNode.Id = reader.GetInt32(0); //Имя отчёта if (!reader.IsDBNull(1)) { reportNode.Name = reader.GetString(1); } //Описание отчёта if (!reader.IsDBNull(2)) { reportNode.Text = reader.GetString(2); } //Шаблон отчёта if (!reader.IsDBNull(4)) { SqlBytes sqlbytes = reader.GetSqlBytes(4); System.Text.Encoding win1251 = System.Text.Encoding.GetEncoding(1251); string scriptText = win1251.GetString(sqlbytes.Value); var reportTextNode = new IsbNode(); reportTextNode.Name = "-=[ Шаблон ]=-"; reportTextNode.Text = scriptText; reportNode.Nodes.Add(reportTextNode); } //Расчёт отчёта if (!reader.IsDBNull(3)) { string templateText = reader.GetString(3); var reportTemplateNode = new IsbNode(); reportTemplateNode.Name = "-=[ Расчёт ]=-"; reportTemplateNode.Text = templateText; reportNode.Nodes.Add(reportTemplateNode); } if (!reader.IsDBNull(6)) { reportNode.LastUpdate = reader.GetDateTime(6); } groupNode.Nodes.Add(reportNode); } } reader.Close(); } } return(listNode); }
public IsbNode Load() { IsbNode listNode = null; if (this.CheckTableExist("MBReports")) { listNode = new IsbNode(); listNode.Name = "Интегрированный отчёт"; { SqlCommand command = new SqlCommand(); command.Connection = Connection; command.CommandText = "select XRecID, NameRpt, Comment, Exprn, Report, Viewer, LastUpd from MBReports where TypeRpt='MBAnalitV' order by NameRpt ASC"; SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { var reportNode = new IsbNode(); reportNode.Type = IsbNodeType.IntegratedReport; //ИД отчёта reportNode.Id = reader.GetInt32(0); //Имя отчёта if (!reader.IsDBNull(1)) { reportNode.Name = reader.GetString(1); } //Описание отчёта if (!reader.IsDBNull(2)) { reportNode.Text = reader.GetString(2); } //Шаблон отчёта if (!reader.IsDBNull(4)) { SqlBytes sqlbytes = reader.GetSqlBytes(4); System.Text.Encoding win1251 = System.Text.Encoding.GetEncoding(1251); string scriptText = win1251.GetString(sqlbytes.Value); var reportTextNode = new IsbNode(); reportTextNode.Name = "-=[ Шаблон ]=-"; reportTextNode.Text = scriptText; reportNode.Nodes.Add(reportTextNode); } //Расчёт отчёта if (!reader.IsDBNull(3)) { string templateText = reader.GetString(3); var reportTemplateNode = new IsbNode(); reportTemplateNode.Name = "-=[ Расчёт ]=-"; reportTemplateNode.Text = templateText; reportNode.Nodes.Add(reportTemplateNode); } if (!reader.IsDBNull(6)) { reportNode.LastUpdate = reader.GetDateTime(6); } listNode.Nodes.Add(reportNode); } } reader.Close(); } } return(listNode); }
public static void ParseWizardText(string originText, IsbNode wizardNode) { /********************************************************************** * Структура свойств мастера находится в структуре, похожей на * Delphi Form. Все теги расположены в отдельных строках. * Значения тегов в формате Unicode. Свойствам мастера присуща * Объектная структура. Иерархия соблюдается за счёт табуляции * тегов. Если значение тега очень длинное то оно разбивается на * несколько строк с указанием в конце строки символа конкатенации(+) **********************************************************************/ /********************************************************************** * Сначала идёт три "События мастера": * До выбора * Начало * Завершение * * Потом идут этапы мастера, например "Этап 1: Запрос параметров совещания" * Этап содержит два события: * Начало * Завершение * А также события: * Previous * Next * Finish * Cancel * Ещё есть событие: * ОК **********************************************************************/ var parsedWizardDfm = DfmParser.Parse(originText); // Wizard Events var events = parsedWizardDfm.Nodes.Where(n => n.PropertyName == "Events").First().Nodes; foreach (var ev in events) { var textNode = ev.Nodes.Where(n => n.PropertyName == "ISBLText").FirstOrDefault(); if (textNode != null) { var wizardEventNode = new IsbNode(); wizardEventNode.Text = (string)textNode.PropertyValue; var eventNameNode = ev.Nodes.Where(n => n.PropertyName == "EventType").FirstOrDefault(); if (eventNameNode != null) { var eventCode = (string)eventNameNode.PropertyValue; wizardEventNode.Name = _wizardEventCodeToName.ContainsKey(eventCode) ? _wizardEventCodeToName[eventCode] : eventCode; } else { wizardEventNode.Name = "Неизвестное событие"; } wizardNode.Nodes.Add(wizardEventNode); } } foreach (var step in parsedWizardDfm.Nodes.Where(n => n.PropertyClass?.EndsWith("StepList") ?? false).First().Nodes.Where(n => n.PropertyClass?.EndsWith("WizardStep") ?? false)) { var wizardStep = new IsbNode(""); foreach (var eventNode in step.Nodes.Where(n => n.PropertyName == "Events").First().Nodes) { var stepEventNode = new IsbNode(); foreach (var eventParam in eventNode.Nodes) { if (eventParam.PropertyName == "ISBLText") { stepEventNode.Text = (string)eventParam.PropertyValue; } if (eventParam.PropertyName == "EventType") { var eventCode = (string)eventParam.PropertyValue; stepEventNode.Name = _wizardEventCodeToName.ContainsKey(eventCode) ? _wizardEventCodeToName[eventCode] : eventCode; } } if (!String.IsNullOrWhiteSpace(stepEventNode.Text)) { wizardStep.Nodes.Add(stepEventNode); } } foreach (var actionNode in step.Nodes.Where(n => n.PropertyClass?.EndsWith("WizardActionList") ?? false).First().Nodes.Where(n => n.PropertyClass?.EndsWith("WizardAction") ?? false)) { var actionEventNode = new IsbNode(); foreach (var eventNode in actionNode.Nodes.Where(n => n.PropertyName == "Events").First().Nodes) { var textNode = eventNode.Nodes.Where(n => n.PropertyName == "ISBLText").FirstOrDefault(); if (textNode != null) { actionEventNode.Text = (string)textNode.PropertyValue; actionEventNode.Name = (string)actionNode.Nodes.Where(n => n.PropertyName == "Title").First().PropertyValue; wizardStep.Nodes.Add(actionEventNode); } } } if (wizardStep.Nodes.Count > 0) { wizardStep.Name = (string)step.Nodes.Where(n => n.PropertyName == "Title").First().PropertyValue; wizardNode.Nodes.Add(wizardStep); } } }
/// <summary> /// Рекурсивный поиск по дереву разработки /// </summary> /// <param name="node"></param> /// <param name="searchStrArray"></param> /// <param name="caseSensitive"></param> /// <param name="regExp"></param> /// <param name="findAll"></param> /// <returns></returns> bool FilterNode(IsbNode node, string[] searchStrArray, bool caseSensitive, bool regExp, bool findAll) { bool isFound = false; //Сначала выделим текущий элемент так, как будто в нём ничего не найдено node.IsMatch = false; node.IsContainsMatchedNode = false; if (node.Nodes != null) { foreach (var subNode in node.Nodes) { if (FilterNode(subNode, searchStrArray, caseSensitive, regExp, findAll)) { node.IsContainsMatchedNode = true; isFound = true; } } } string isblText = node.Text; string nodeName = node.Name; bool searchSatisfied = false; if (regExp) { RegexOptions regExpOptions = caseSensitive ? RegexOptions.Compiled : RegexOptions.Compiled | RegexOptions.IgnoreCase; foreach (string searchPhrase in searchStrArray) { Regex regEx = new Regex(searchPhrase, regExpOptions); if ((!string.IsNullOrEmpty(isblText) && regEx.IsMatch(isblText)) || regEx.IsMatch(nodeName)) { searchSatisfied = true; if (!findAll) { break; } } else { if (findAll) { searchSatisfied = false; break; } } } } else { var comparation = caseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; foreach (string searchPhrase in searchStrArray) { if ( (!string.IsNullOrEmpty(isblText) && isblText.IndexOf(searchPhrase, 0, comparation) >= 0) || (!string.IsNullOrEmpty(nodeName) && nodeName.IndexOf(searchPhrase, 0, comparation) >= 0) ) { searchSatisfied = true; if (!findAll) { break; } } else { if (findAll) { searchSatisfied = false; break; } } } } if (searchSatisfied) { node.IsMatch = true; isFound = true; } return(isFound); }
public static void ParseRoute(string schemaString, IsbNode routeNode) { var schema = new XmlDocument(); schema.LoadXml(schemaString); var events = schema.SelectNodes("/Settings/Event/node()"); var eventNameToTitle = new Dictionary<String, String>() { {"InitScript", "Начало выбора"}, {"Script", "Завершение выбора"}, {"TaskStart", "Возможность старта"}, {"TaskAbortPossibility", "Возможность прекращения"}, {"TaskAbort", "Прекращение"} }; foreach (XmlNode eventXmlNode in events) { var eventString = GetNodeString(eventXmlNode); if (!System.String.IsNullOrEmpty(eventString)) { var eventNode = new IsbNode(); eventNode.Name = eventNameToTitle.ContainsKey(eventXmlNode.Name) ? eventNameToTitle[eventXmlNode.Name] : eventXmlNode.Name; eventNode.Text = eventString; routeNode.Nodes.Add(eventNode); } } var routeProperties = schema.SelectNodes("/Settings/Properties/Property[(@Type = '2' or @Type = '5') and @Name != 'Name']"); foreach (XmlNode property in routeProperties) { var propertyStringNode = property.SelectSingleNode("Value/Value"); if (propertyStringNode != null) { var propertyString = GetNodeString(propertyStringNode); if (!System.String.IsNullOrEmpty(propertyString)) { var routeStringNode = new IsbNode(property.Attributes["Description"].Value); routeStringNode.Text = propertyString; routeNode.Nodes.Add(routeStringNode); } } } var blocks = schema.SelectNodes("//Block"); foreach (XmlNode block in blocks) { var blockNode = new IsbNode(); var nameProperty = block.SelectSingleNode("Properties/Property[(@Type = '2' or @Type = '5') and @Name = 'Name']/Value/Value"); if (nameProperty != null) blockNode.Name = block.Attributes["ID"].Value + ". " + GetNodeString(nameProperty); else blockNode.Name = block.Attributes["ID"].Value; var properties = block.SelectNodes("Properties/Property[(@Type = '2' or @Type = '5') and @Name != 'Name']"); foreach (XmlNode property in properties) { var propertyStringNode = property.SelectSingleNode("Value/Value"); if (propertyStringNode != null) { var propertyString = GetNodeString(propertyStringNode); if (!System.String.IsNullOrEmpty(propertyString)) { var blockStringNode = new IsbNode(property.Attributes["Description"].Value); blockStringNode.Text = propertyString; blockNode.Nodes.Add(blockStringNode); } } } if (blockNode.Nodes.Count > 0) { routeNode.Nodes.Add(blockNode); } else blockNode = null; } }