void ConvertDirectionsBack(DeviceConfiguration deviceConfiguration, Firesec.Models.CoreConfiguration.config coreConfig, ref int gid)
		{
			var innerDirections = new List<partType>();
			int no = 0;

			foreach (var direction in deviceConfiguration.Directions)
			{
				var innerDirection = new partType()
				{
					type = "direction",
					no = no.ToString(),
					id = direction.Id.ToString(),
					gid = gid++.ToString(),
					name = direction.Name
				};
				++no;

				var zonesPartTypePinZ = new List<partTypePinZ>();
                foreach (var zoneUID in direction.ZoneUIDs)
				{
                    var zone = deviceConfiguration.Zones.FirstOrDefault(x => x.UID == zoneUID);
                    if (zone != null)
                    {
                        zonesPartTypePinZ.Add(new partTypePinZ() { pidz = zone.No.ToString() });
                    }
				}
				innerDirection.PinZ = zonesPartTypePinZ.ToArray();

				if (direction.DeviceRm != Guid.Empty || direction.DeviceButton != Guid.Empty)
				{
					var innerDirectionParameters = new List<paramType>();
					innerDirectionParameters.Add(new paramType()
					{
						name = "Device_RM",
						type = "String",
						value = GuidHelper.ToString(direction.DeviceRm)
					});

					innerDirectionParameters.Add(new paramType()
					{
						name = "Device_AM",
						type = "String",
						value = GuidHelper.ToString(direction.DeviceRm)
					});

					innerDirection.param = innerDirectionParameters.ToArray();
				}

				if (innerDirection.param != null)
				{
					var rmParameter = innerDirection.param.FirstOrDefault(x => x.name == "Device_RM");
					direction.DeviceRm = GuidHelper.ToGuid(rmParameter.value);
					var buttonParameter = innerDirection.param.FirstOrDefault(x => x.name == "Device_AM");
					direction.DeviceButton = GuidHelper.ToGuid(buttonParameter.value);
				}

				innerDirections.Add(innerDirection);
			}

			coreConfig.part = innerDirections.ToArray();
		}
        void ConvertGuardUsersBack(DeviceConfiguration deviceConfiguration, Firesec.Models.CoreConfiguration.config coreConfig, ref int gid)
		{
			var innerGuardUsers = new List<partType>();
			int no = 0;

			foreach (var guardUser in deviceConfiguration.GuardUsers)
			{
				var innerGuardUser = new partType()
				{
					type = "guarduser",
					no = no.ToString(),
					id = guardUser.Id.ToString(),
					gid = gid++.ToString(),
					name = guardUser.Name
				};
				++no;

				var innerZones = new List<partTypePinZ>();
				foreach (var zoneUID in guardUser.ZoneUIDs)
				{
					var zone = deviceConfiguration.Zones.FirstOrDefault(x=>x.UID == zoneUID);
					if (zone != null)
					{
						innerZones.Add(new partTypePinZ() { pidz = zone.No.ToString() });
					}
				}
				innerGuardUser.PinZ = innerZones.ToArray();

				var innerGuardUsersParameters = new List<paramType>();

				if (guardUser.CanSetZone)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "SetZone",
						type = "Bool",
						value = "1"
					});
				}

				if (guardUser.CanUnSetZone)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "UnSetZone",
						type = "Bool",
						value = "1"
					});
				}

				if (string.IsNullOrEmpty(guardUser.FIO) == false)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "FIO",
						type = "String",
						value = guardUser.FIO
					});
				}

				if (string.IsNullOrEmpty(guardUser.Function) == false)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "Function",
						type = "String",
						value = guardUser.Function
					});
				}

				if (string.IsNullOrEmpty(guardUser.Password) == false)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "Password",
						type = "String",
						value = guardUser.Password
					});
				}

				if (guardUser.DeviceUID != Guid.Empty)
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "DeviceUID",
						type = "String",
						value = guardUser.DeviceUID.ToString()
					});

				if (string.IsNullOrEmpty(guardUser.KeyTM) == false)
				{
					innerGuardUsersParameters.Add(new paramType()
					{
						name = "KeyTM",
						type = "String",
						value = guardUser.KeyTM
					});
				}

				innerGuardUser.param = innerGuardUsersParameters.ToArray();

				innerGuardUsers.Add(innerGuardUser);
			}

			var innerDirections = coreConfig.part.ToList();
			if (innerDirections != null)
			{
				innerGuardUsers.AddRange(innerDirections);
			}

			coreConfig.part = innerGuardUsers.ToArray();
		}