void ConvertDirectionsBack()
        {
            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 zones = new List<partTypePinZ>();
                foreach (var zone in direction.Zones)
                {
                    zones.Add(new partTypePinZ() { pidz = zone.ToString() });
                }
                innerDirection.PinZ = zones.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);
            }

            FiresecConfiguration.part = innerDirections.ToArray();
        }
        void ConvertGuardUsersBack()
        {
            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 zone in guardUser.Zones)
                {
                    innerZones.Add(new partTypePinZ() { pidz = zone.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 = FiresecConfiguration.part.ToList();
            if (innerDirections != null)
            {
                innerGuardUsers.AddRange(innerDirections);
            }

            FiresecConfiguration.part = innerGuardUsers.ToArray();
        }