Esempio n. 1
0
        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);
                    }
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 public SearchNode(IsbNode isbNode)
 {
     Name       = isbNode.Name;
     IsbNode    = isbNode;
     Visible    = isbNode.IsMatch || isbNode.IsContainsMatchedNode;
     IsMatch    = isbNode.IsMatch;
     LastUpdate = isbNode.LastUpdate;
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        /// <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();
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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();
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }
Esempio n. 23
0
        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);
                }
            }
        }
Esempio n. 24
0
        /// <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);
        }
Esempio n. 25
0
        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;

            }
        }