void AddRemoteZoneToPanel(BinaryPanel binaryPanel, Zone zone)
		{
			if (!binaryPanel.RemoteZones.Contains(zone))
			{
				var remoteBinaryPanels = new HashSet<Device>();
				foreach (var zoneDevice in zone.DevicesInZone)
				{
					var remoteBinaryPanel = BinaryPanels.FirstOrDefault(x => x.ParentPanel == zoneDevice.ParentPanel);
					if (remoteBinaryPanel.ParentPanel.UID != binaryPanel.ParentPanel.UID)
					{
						remoteBinaryPanels.Add(remoteBinaryPanel.ParentPanel);
					}
				}

				foreach (var remoteBinaryPanel in remoteBinaryPanels)
				{
					var zoneBinaryPanel = BinaryPanels.FirstOrDefault(x => x.ParentPanel == remoteBinaryPanel);
					var binaryZone = new BinaryZone(zone)
					{
						IsRemote = true,
						ParentPanel = remoteBinaryPanel
					};
					binaryZone.BinaryPanels.Add(binaryPanel);
					binaryZone.BinaryPanels.Add(zoneBinaryPanel);
					binaryPanel.RemoteZones.Add(zone);
					binaryPanel.BinaryRemoteZones.Add(binaryZone);
				}
			}
		}
		void CreatePanels()
		{
			BinaryPanels = new List<BinaryPanel>();
			foreach (var device in ConfigurationManager.Devices)
			{
				if (device.Driver.IsPanel)
				{
					var binaryPanel = new BinaryPanel(device);
					binaryPanel.CreatreDevices();
					BinaryPanels.Add(binaryPanel);
				}
			}
		}
		void AddLocalZoneToPanel(BinaryPanel binaryPanel, Zone zone)
		{
			var binaryZone = new BinaryZone(zone)
			{
				ParentPanel = binaryPanel.ParentPanel
			};
			if (!binaryPanel.LocalZones.Contains(zone))
			{
				binaryPanel.LocalZones.Add(zone);
				binaryPanel.BinaryLocalZones.Add(binaryZone);
			}
			if (!binaryZone.BinaryPanels.Contains(binaryPanel))
			{
				binaryZone.BinaryPanels.Add(binaryPanel);
			}
		}
		public DevicesGroupHelper(BinaryPanel binaryPanel)
		{
			var startDateTime = DateTime.Now;
			BinaryPanel = binaryPanel;
			ParentPanel = binaryPanel.ParentPanel;
			DevicesGroups = new List<DevicesGroup>();

			CreateDevicesGroup("Указатель на таблицу РМ", -1, DriverType.RM_1);
			CreateDevicesGroup("Указатель на таблицу МПТ", 0, DriverType.MPT);
			CreateDevicesGroup("Указатель на таблицу Дымовых", 12, DriverType.SmokeDetector);
			CreateDevicesGroup("Указатель на таблицу Тепловых", 0, DriverType.HeatDetector);
			CreateDevicesGroup("Указатель на таблицу Комбинированных", 0, DriverType.CombinedDetector);
			CreateDevicesGroup("Указатель на таблицу АМ-1", -1, DriverType.AM_1,
				DriverType.ShuzOffButton, DriverType.ShuzOnButton, DriverType.ShuzUnblockButton, DriverType.StartButton, DriverType.StopButton, DriverType.AutomaticButton);
			CreateDevicesGroup("Указатель на таблицу ИПР", 0, DriverType.HandDetector);
			CreateDevicesGroup("Указатель на таблицу Охранных извещателей", 0, DriverType.AM1_O);
			var OuterDevices_Group = CreateDevicesGroup("Указатель на таблицу Внешних ИУ", -1, DriverType.Computer);
			OuterDevices_Group.IsRemoteDevicesPointer = true;
			CreateDevicesGroup("Указатель на таблицу МДУ", 0, DriverType.Computer);
			CreateDevicesGroup("Указатель на таблицу БУНС", -1, DriverType.PumpStation);
			CreateDevicesGroup("Указатель на таблицу АМП-4", 0, DriverType.AMP_4);
			CreateDevicesGroup("Указатель на таблицу МРО", -1, DriverType.MRO);
			CreateDevicesGroup("Указатель на таблицу Задвижек", -1, DriverType.Valve);
			CreateDevicesGroup("Указатель на таблицу АМ-Т", -1, DriverType.AM1_T);
			CreateDevicesGroup("Указатель на таблицу АМТ-4", 0, DriverType.AMT_4);
			CreateDevicesGroup("Указатель на таблицу ППУ", 0, DriverType.Computer);
			CreateDevicesGroup("Указатель на таблицу АСПТ", 0, DriverType.ASPT);
			CreateDevicesGroup("Указатель на таблицу МУК-1Э", -1, DriverType.MDU);
			CreateDevicesGroup("Указатель на таблицу Выход реле", -1, DriverType.Exit);
			CreateDevicesGroup("Указатель на таблицу радиоканальный ручной", 0, DriverType.RadioHandDetector);
			CreateDevicesGroup("Указатель на таблицу радиоканальный дымовой", 0, DriverType.RadioSmokeDetector);
			CreateDevicesGroup("Указатель на таблицу МРО-2М", -1, DriverType.MRO_2);

			var deltaMiliseconds = (DateTime.Now - startDateTime).Milliseconds;
			totalMiliseconds += deltaMiliseconds;
			Trace.WriteLine("TotalMiliseconds=" + totalMiliseconds.ToString());
		}