public void Add(StationElement el)
        {
            var buf = elements.Where(x => x.name == el.name);

            if (buf.Count() == 0)
            {
                elements.Add(el);
            }
            else
            {
                throw new Exception("NotUniqueName");
            }
        }
        static public void CompareConditions(string blockName, string elementName, StationElement el)
        {
            var scr = GetScriptByName(blockName, elementName);

            if (scr == null)
            {
                var lst = scriptsList.Where(x => x is MutuallyExclusiveTemplate).Select(x => x as MutuallyExclusiveTemplate);

                scr = lst.SingleOrDefault(x => x.secondElementBlockName == blockName && x.secondElementName == elementName);
            }

            if (scr != null)
            {
                if (el is TwoPositionsElement)
                {
                    var element = el as TwoPositionsElement;
                    if (scr is TwoPositionsElementTemplate)
                    {
                        var script = scr as TwoPositionsElementTemplate;
                        if (element.position == script.nessPosition)
                        {
                            script.InstallScriptCondition(true);
                        }
                        else
                        {
                            script.InstallScriptCondition(false);
                        }
                    }
                    else if (scr is MutuallyExclusiveTemplate)
                    {
                        var script   = scr as MutuallyExclusiveTemplate;
                        var firstEl  = StationModel.GetStationBlock(script.blockName).elementsList.GetItemByName(script.elementName) as TwoPositionsElement;
                        var secondEl = StationModel.GetStationBlock(script.secondElementBlockName).elementsList.GetItemByName(script.secondElementName) as TwoPositionsElement;
                        if (firstEl.position && secondEl.position)
                        {
                            script.InstallScriptCondition(false);
                        }
                        else
                        {
                            script.InstallScriptCondition(true);
                        }
                    }
                }
                //else

                //if (el is PositionalSwitchModel)
                //{
                //    var element = el as PositionalSwitchModel;

                //    if (scr is PositionalSwitchConditionTemplate)
                //    {
                //        var script = scr as PositionalSwitchConditionTemplate;
                //        if (script.necessaryPosition == element.conditionList[element.currentPosition].value)
                //        {
                //            script.InstallScriptCondition(true);
                //        }
                //        else script.InstallScriptCondition(false);
                //    }

                //    else if (scr is IsPostionalSwitchPositionUse)
                //    {
                //        var script = scr as IsPostionalSwitchPositionUse;

                //    }
                //}
                CheckAllScripts();
            }
        }