public FrmLogin(IHermesDevice device)
     : base(device)
 {
     _device = device;
     PinNameIdOrderman user;
     if (!AllUser.AllUseraList.TryGetValue(_device.SerialNumber, out user))
     {
         Logger.Info("ERROR, new FrmLogin for ORDERMAN: {0}", _device.SerialNumber);
         FormMain.SendMail("ERROR, new FrmLogin for ORDERMAN:" + _device.SerialNumber.ToString(), "ERROR");
         var recordbuild = new BusinessForm(this._device);
         recordbuild.BuildRecordSets(this._device);
         Dg = new DGobject
              {
                  Device = _device, IdOrderman = _device.SerialNumber,
                  FrmLogin = this, SleepForm = RecSets.CurrentForm.FrmLogin,
                  Menu = recordbuild.Menu,
                  CurrentOrder = recordbuild.CurrentOrder,
                  TableReservation = false
              };
         AllUser.AllUseraList.Add(_device.SerialNumber, new PinNameIdOrderman()
                                                        {
                                                            DgObject = this.Dg,
                                                            Id = _device.SerialNumber,
                                                            Sleep = false
                                                        });
     }
     else
         {
             Dg = user.DgObject;
             Dg.FrmLogin = this;
             Dg.SleepForm = RecSets.CurrentForm.FrmLogin;
             Dg.TableReservation = false;
         }
     Theme = "custom";
 }
        protected override void OnLoaded()
        {
            //Проверяем допустимое количество ордерманов
            if (SeeNumber(FormMain.NumOrderman)) return;
            //обнаружить, если мы находимся в синхронизации
            int oldResSum;
            int oldDataSum;
            bool resInSync = false;
            bool dataInSync = false;
            if (ReadChecksum(out oldResSum, out oldDataSum) == true && this.Device is ISol)
            {
                ISol sol = (ISol)this.Device;
                if (sol.ResourceChecksum == oldResSum)
                    _resInSync = true;
                if (sol.DataChecksum == oldDataSum)
                    _dataInSync = true;
            }
            //if (_dataInSync != true || _resInSync != true)
            //{
            //    if (connectionType != HermesManager.ConnectionType.IP)
            //    {
            //        String text = "Ресурсы не синхронизированны. Прибор на радиоканале." +
            //            Environment.NewLine + "Поставте прибор на станцию!";
            //        FormMain.ConsolePrint(text);
            //        return;
            //    }
            //    _lblProgress.Visible = true;
            //    //FormMain.ConsolePrint(this.Device.ToString() + " NOT IN SYNC; SYNC will be started inside of PowerOn.OnLoaded()");
            //}

            // are our data directories in sync?
            //if (_dataInSync == false)
            if (_connectionType == HermesManager.ConnectionType.IP)
            {
                BusinessForm.BuildRecordSets(this.Device);
                _lblHeader.Text = "Загрузка меню и официантов ..";
                _lblProgress.Text = "0%";
                _lblProgress.Visible = true;
                _pBar.Value = 0;
                _pBar.Visible = true;
                _lblHeader.Visible = true;

                var bf = new BusinessForm(Device);
                int count = bf.RecordSets.Count;
                int pos = 0;
                // NO --> let's download the record sets
                foreach (RecordSet set in bf.RecordSets.Values)
                {
                    this.Device.Data.Download(set);
                    pos++;
                    _pBar.Value = 100 * pos / count;
                    SetProgress((pos - 1) * 100 / count);
                    this.Device.Transmit();
                }
                SetProgress(100);
            }
            if (_resInSync == false)
            {
                _lblHeader.Text = "Загрузка оформления...";
                _lblProgress.Text = "0%";
                _pBar.Value = 0;

                this.Device.Resources.Download(UpdateProgress);
            }
            else if (_dataInSync == false)
                RequestNewChecksums();
            else
                DeviceIsInSync();
        }
        protected override void OnLoaded()
        {
            //Проверяем допустимое количество ордерманов
            if (SeeNumber(FormMain.NumOrderman)) return;
            //обнаружить, если мы находимся в синхронизации
            int oldResSum;
            int oldDataSum;
            var resInSync = false;
            var dataInSync = false;
            if (ReadChecksum(out oldResSum, out oldDataSum) == true && this._device is ISol)
            {
                var sol = (ISol)this._device;
                if (sol.ResourceChecksum == oldResSum)
                    _resInSync = true;
                if (sol.DataChecksum == oldDataSum)
                    _dataInSync = true;
            }
            //Раскоментировать, если нехотим каждый раз грузить рекордсеты
            //if (_dataInSync != true || _resInSync != true)
            //{
            //    if (_connectionType != HermesManager.ConnectionType.IP)
            //    {
            //        var text = "Ресурсы не синхронизированы. Прибор на радиоканале." +
            //            Environment.NewLine + "Поставте прибор на станцию!";
            //        FormMain.ConsolePrint(text);
            //        //RemoveUser();
            //        return;
            //    }
            //    _lblProgress.Visible = true;
            //}
            if (_connectionType == HermesManager.ConnectionType.IP) RemoveUser();
            // Раскоментировать/закоментировать следующий, если нехотим каждый раз грузить рекордсеты
            //if (_dataInSync == false)
            if (_connectionType == HermesManager.ConnectionType.IP)
            {
                //RemoveUser();
                var recordbuild = new BusinessForm(this._device);
                recordbuild.BuildRecordSets(this._device);
                _dg.CurrentOrder = recordbuild.CurrentOrder;
                _dg.Menu = recordbuild.Menu;
                _lblHeader.Text = "Загрузка меню и официантов ..";
                _lblProgress.Text = "0%";
                _lblProgress.Visible = true;
                _pBar.Value = 0;
                _pBar.Visible = true;
                _lblHeader.Visible = true;
                var count = recordbuild.RecordSets.Count;
                var pos = 0;
                // NO --> let's download the record sets
                foreach (RecordSet set in recordbuild.RecordSets.Values)
                {
                    this._device.Data.Download(set);
                    pos++;
                    _pBar.Value = 100 * pos / count;
                    SetProgress((pos - 1) * 100 / count);
                    this._device.Transmit();
                }
                //Загрузка StringTables Menu/Modifiers
                this._device.Data.Download(recordbuild.MenuStringTables[RecSets.StringTables.Menu.ToString()]);
                this._device.Transmit();
                SetProgress(100);
            }
            if (_resInSync == false)
            {
                _lblHeader.Text = "Загрузка оформления...";
                _lblProgress.Text = "0%";
                _pBar.Value = 0;

                this._device.Resources.Download(UpdateProgress);
            }
            else if (_dataInSync == false) RequestNewChecksums();
                    else
                    {
                        //Проверяем если вышли из SLEEP
                        if (SeeSleep(_device.SerialNumber)) return;
                        DeviceIsInSync();
                    }
        }