public void BuildRecordSets(IHermesDevice device)
        {
            //Загружаем один раз официантов и меню
            ComReader.BufferMembers = ComReader.GetMembers();
            ComReader.BufferMenu = ComReader.GetMenuToBuffer();

            //Новая загрузка меню
            var xmlParser = new MenuXmlParser();
            Menu.Clear();
            foreach (var xElement in xmlParser.GetButtonName(ComReader.BufferMenu))
            {
                Menu.AddComponent(xmlParser.BuildMenu(xElement));
            }
            //Разбираем меню в массив
            var xml = new MenuXml();
            ComReader.ListMenu = xml.MenuXmlToList(ComReader.BufferMenu);
            // Append a dictionary to the device which hold's all application specific data
            if (device.Tag == null)
                device.Tag = new Dictionary<string, object>(2);
            var nextId = 0;
            //Создаем Dictionary для сохранения RecordSet
            IDictionary<string, RecordSet> recSets = new Dictionary<string, RecordSet>();
            #region Строим RecordSet Официанты
            var list = ComReader.BufferMembers; //BufferMembers.xml список официантов
            // Recordset всегда!!! основывается на recorddefinition построеном с помощью Orderman Screen Designed.
            // (Recorddefinition определяют вид и формат записей)
            // В Sol есть Record-Definition USERS - это официанты
            var def = device.Resources.RecordDefinitions["USERS"];
            //Каждой записи Recordset необходим уникальный ID. Мы просто используем счетчик nextId
            var usersSet = new RecordSet(nextId++, def, RSET_USERS); //usersSet - официанты; public const string RSET_USERS = "Users";
            var name = from p in list.Elements("Элемент")
                       select p;
            foreach (var p in name)
            {
                //Каждый официант - свой Record
                var rec = new Record(def) {Tag = p};
                //Заполняем данные для отображения
                rec.Cells[0].Value = device.Resources.Images[0x0009];
                rec.Cells[1].Value = p.Attribute("Наименование").Value;
                rec.Tag = p.Attribute("IdUser").Value;
                usersSet.Add(rec);
            }
            //Добавляем в Dictionary RecordSt официанты
            recSets.Add(usersSet.Name, usersSet); //usersSet.Name - "Users"
            #endregion
            #region Строим RecordSet menu and StringTables
            recSets = BuildOrderRecordSet(recSets, device, ref nextId);
            recSets = BuildMenuRecordSet(recSets, device, ref nextId);
            recSets = BuildTablesRecordSet(recSets, device, ref nextId);
            recSets = BuildBillRecordSet(recSets, device, ref nextId);
            recSets = BuildPrinterTablesRecordSet(recSets, device, ref nextId);
            recSets = BuildModifiersTablesRecordSet(recSets, device, ref nextId);
            #endregion
            GetDeviceData(device)[RSET_NAME] = recSets;
            //Строим StringTables
            var menuModifiersStringTables = new Dictionary<string, RecordSet>();
            menuModifiersStringTables = BuildMenuModifiersStringTables(menuModifiersStringTables, ref nextId);
            GetDeviceData(device)["STRINGTABLE"] = menuModifiersStringTables;
        }
        public void TestMethodMenuToList()
        {
            ComReader.Start();
            DG = new DGobject { XelementMenu = ComReader.GetMenuToBuffer() };
            //var xml = new MenuXml();
            //var menu = xml.MenuXmlToList(DG.Menu);
            var xml = new MenuXmlParser();
            var menu = new Folder(){Id = "Главный фолдер"};
            foreach (var xElement in xml.GetButtonName(DG.XelementMenu))
            {
                menu.AddComponent(xml.BuildMenu(xElement));
            }

            var cc = menu.FindId("bb118da8-053c-11e0-8cad-20cf308e5b25");
            var ccc = (IModifiers)menu.FindId("e450b94c-0540-11e0-8cad-20cf308e5b25");
            var mod = ccc.GetModifiers();
            ComReader.Stop();
        }