/// <summary>
            /// Конструктор основной с параметрами
            /// </summary>
            /// <param name="dtRecieved">Мктка даты/времени получения</param>
            /// <param name="xmlSource">XML-документ</param>
            public PACKAGE(DateTime dtRecieved, XmlDocument xmlSource)
            {
                m_dtRecieved = dtRecieved;
                m_dtSended   = DateTime.MinValue;

                m_state = STATE.NEW;

                m_xmlSource = UDPListener.CopyXmlDocument(xmlSource);

                m_tableParameters = new DataTable();
                m_tableParameters.Columns.AddRange(new DataColumn[] {
                    new DataColumn(@"GROUP", typeof(string))
                    , new DataColumn(@"PARAMETER", typeof(string))
                });
                m_tableValues = new DataTable();
                m_tableValues.Columns.AddRange(new DataColumn[] {
                    new DataColumn(@"GROUP", typeof(string))
                    , new DataColumn(@"PARAMETER", typeof(string))
                    , new DataColumn(@"VALUE", typeof(float))
                });

                m_listXmlTree = new FormMain.ListXmlTree();

                m_state = STATE.PARSING;

                for (int i = 0; i < m_xmlSource.ChildNodes.Count; i++)
                {
                    if (m_xmlSource.ChildNodes[i].NodeType == XmlNodeType.Element)
                    {
                        m_listXmlTree.Add(new FormMain.ListXmlTree());

                        m_listXmlTree.Tag = m_xmlSource.ChildNodes[i].Name;

                        parseNode(m_xmlSource.ChildNodes[i], m_listXmlTree[m_listXmlTree.Count - 1] as FormMain.ListXmlTree);
                    }
                    else
                    {
                        ;
                    }
                }

                m_state = STATE.PARSED; //ERROR
            }
            /// <summary>
            /// Распознать элемент XML-документа
            /// </summary>
            /// <param name="node">Элемент XML-документа</param>
            /// <param name="listXmlTree">Элемент списка</param>
            /// <returns>Результат обработки элемента XML-документа</returns>
            private int parseNode(XmlNode node, FormMain.ListXmlTree listXmlTree)
            {
                int iRes = -1;

                FormMain.ListXmlTree newItemXmlTree;
                float value = -1F;

                if (node.HasChildNodes == true)
                {
                    if (node.ChildNodes.Count > 0)
                    {
                        for (int i = 0; i < node.ChildNodes.Count; i++)
                        {
                            if (!(node.ChildNodes[i].Attributes == null))
                            {
                                newItemXmlTree = new FormMain.ListXmlTree();
                                listXmlTree.Add(newItemXmlTree);

                                newItemXmlTree.Tag = node.ChildNodes[i].Name;

                                parseNode(node.ChildNodes[i], newItemXmlTree);
                            }
                            else
                            {
                                //Logging.Logg().Warning(MethodBase.GetCurrentMethod()
                                //    , string.Format(@"XML-элемент Name={0} не имеет аттрибутов...", node.Name)
                                //    , Logging.INDEX_MESSAGE.NOT_SET)
                                ;
                            }
                        }
                    }
                    else
                    {
                        return(1);
                    }
                }
                else
                {
                    try {
                        if (!(node.Attributes == null))
                        {
                            if (string.IsNullOrEmpty(node.Attributes.GetNamedItem("value").Value) == false)
                            {
                                if (float.TryParse(node.Attributes.GetNamedItem("value").Value, out value) == false)
                                {
                                    value = -1F;
                                }
                                else
                                {
                                    ; //значние получено
                                }
                            }
                            else
                            {
                                value = -1F;
                            }

                            listXmlTree.Attributes = new List <KeyValuePair <string, string> >();
                            if (!(node.Attributes.GetNamedItem("value") == null))
                            {
                                listXmlTree.Attributes.Add(new KeyValuePair <string, string>(node.Attributes.GetNamedItem("value").Name
                                                                                             , node.Attributes.GetNamedItem("value").Value));
                            }
                            else
                            {
                                Logging.Logg().Warning(MethodBase.GetCurrentMethod()
                                                       , string.Format(@"XML-элемент Name={0} не имеет аттрибута 'value'...", node.Name)
                                                       , Logging.INDEX_MESSAGE.NOT_SET);
                            }

                            m_tableValues.Rows.Add(new object[] {
                                node.ParentNode.Name
                                , node.Name
                                , value
                            });

                            iRes = 0;
                        }
                        else
                        {
                            ; //???
                        }
                    } catch (Exception e) {
                        Logging.Logg().Exception(e, @"PackageHandlerQueue.PACKAGE::parseNode () - ...", Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }

                return(iRes);
            }