/// <summary>Добавление блока в формулу</summary>
        /// <param name="a_Block">Блок</param>
        /// <returns></returns>
        private bool f_AppendBlock(Cl_FormulaConditionBlock a_Block)
        {
            if (a_Block == null)
            {
                return(false);
            }

            if (a_Block.p_Object is string)
            {
                string txt = a_Block.p_Object.ToString();
                if (m_Blocks.Count < 2)
                {
                    return(false);
                }
                Cl_Element el = m_Blocks[m_Blocks.Count - 2].p_Object as Cl_Element;
                if (el == null || el.p_IsNumber)
                {
                    return(false);
                }
                Cl_ElementParam prm = el.p_NormValues.FirstOrDefault(val => val.p_Value == txt);
                if (prm != null)
                {
                    a_Block.p_Object = prm;
                }
                else
                {
                    prm = el.p_PatValues.FirstOrDefault(val => val.p_Value == txt);
                    if (prm != null)
                    {
                        a_Block.p_Object = prm;
                    }
                    else
                    {
                        return(false);
                    }
                }
            }

            string text = a_Block.f_GetTextFromBlock();

            if (string.IsNullOrWhiteSpace(text))
            {
                return(false);
            }
            ctrlRTBFormula.SelectionStart  = ctrlRTBFormula.TextLength;
            ctrlRTBFormula.SelectionLength = 0;
            ctrlRTBFormula.SelectionColor  = a_Block.f_GetColorBlock();
            ctrlRTBFormula.AppendText(text);
            ctrlRTBFormula.SelectionColor = ctrlRTBFormula.ForeColor;
            m_Blocks.Add(a_Block);
            return(true);
        }