Удаляет сведения о политике паролей пользователей. Доступен только пользователю с административными правами.
Синтаксис
Удалить()Полное описание, параметры и ограничения
ПолитикаПаролейПользователей.Удалить (UserPasswordPolicy.Delete)
ПолитикаПаролейПользователей (UserPasswordPolicy)
Удалить (Delete)
Доступен, начиная с версии 8.3.17.
Синтаксис:
Удалить()
Описание:
Удаляет сведения о политике паролей пользователей.
Доступен только пользователю с административными правами.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.17.
Методическая информация
Практические примеры
Свой неназначенный шаблон политики: записать девять полей и отдельно удалить
Создаем только свою именованную политику, новым поиском сверяем все девять полей и рассчитываем интервал сроков из фактических значений. Никому её не назначаем и пароли не проверяем.
Где и как запускать
Новая собственная Windows VM, пустая File CF и толстый управляемый клиент 8.5.1.1343. Реальные создание/удаление предусмотрены только для будущего ручного опыта; сейчас runtime операций нет.
Подготовка
Это два независимых самостоятельных модуля формы. Для выбранной карточки подготовьте НОВУЮ целиком собственную Windows VM, новый профиль и новую пустую файловую базу, а не рабочую конфигурацию или копию с пользователями. Здесь 1С, VM и изменения базы не запускались.
Будущая ручная база находится в C:\1c-labs\OwnUnassignedPolicy85_ee57d0eb-e170-4f4f-9b77-01e17e6b1d60\IB. Если каталог, база или регистрация уже существуют, их не используйте и не очищайте. Строка регистрации строго File="C:\1c-labs\OwnUnassignedPolicy85_ee57d0eb-e170-4f4f-9b77-01e17e6b1d60\IB";. Это ограничение подготовки, не доказательство владения базой.
Конфигуратор: Имя=УчебнаяПолитикаПаролей85, Версия=ee57d0eb-e170-4f4f-9b77-01e17e6b1d60, Режим совместимости=Не использовать, Основной режим запуска=Управляемое приложение. Запуск только толстым управляемым клиентом 8.5.1.1343.
Общие → Роли: создайте АдминистраторУчебныхЗаписей85, через Действия установите все права, включая Администрирование. Не устанавливайте основные роли конфигурации и автоматическое назначение ролей новым пользователям. Код не выдает права и не очищает роли.
Администрирование → Пользователи: вручную создайте СВОЕГО учебного администратора OwnAdministration85Admin, назначьте ему эту роль и выберите личный пароль вне примера. Войдите под ним. Пустой список пользователей не подходит; имя и настоящий идентификатор администратора проверяются, но его пароль не читается.
Общие → Общие формы: создайте управляемую УчебнаяПолитика85, разместите в рабочей области начальной страницы. Вставьте весь код выбранной карточки в её модуль. Не объединяйте две карточки и не вызывайте обработчики вручную.
Две команды формы: СоздатьИПроверитьПолитику85 и УдалитьСвоюПолитику85. Для каждой назначьте Действие одноимённой процедуре с параметром Команда и создайте кнопку с соответствующим ИмяКоманды.
Реквизиты формы: СогласенНаСозданиеПолитики85 и СогласенНаУдалениеПолитики85 — Булево, исходно Ложь, два ручных флажка. Состояние85 — Строка, исходно Не запускалось, поле ТолькоПросмотр=Да. Внутренние имя, снимок и идентификатор не делайте редактируемыми реквизитами.
Один спокойный собственный сеанс, без других писателей. Урок действительно создаёт запись в своей базе; она остаётся до отдельной команды удаления. Проверки имени и снимка не атомарное резервирование или блокировка.
Поставьте только флажок создания и нажмите соответствующую кнопку один раз. Согласие расходуется ДО менеджеров, проверки администратора и чтения записей. После подтверждённого создания решите отдельно, нужно ли удаление; новое согласие обязательно.
Это другой отдельный новый стенд. Политика получает имя OwnPolicyTemplate85_ с собственной случайной меткой. Ни администратору, ни другому пользователю её не назначайте; общие параметры информационной базы не меняйте.
Явно задаются: минимум длины 12, минимальный срок 0 секунд, максимальный 600 секунд, повторение среди последних 2, предупреждение за 60 секунд, проверка сложности Ложь. Все значения в документированных диапазонах, минимальный срок не превышает максимальный.
Все девять полей читаются в настоящих типах. ДействиеПриНесоответствии... и ПроверкаРаскрытияПаролей доступны только для чтения; требуются фактические Нет и Ложь. Их не присваивают и не меняют настройки базы ради подходящего значения.
Нет в этом перечислении не обещает отсутствия всех действий: справка описывает запись события при выявлении нарушения. Урок не выполняет вход или проверку нарушения, не создаёт пароль и не вызывает внешние провайдеры.
&НаКлиенте
Перем Фаза85, СобственноеИмя85, ОжидаемыйСнимок85;
&НаКлиенте
Функция МенеджерКоманды85(Команда, Удаление85)
Если Удаление85 Тогда
Если Фаза85 <> "ПОДТВЕРЖДЕНО" Тогда
ВызватьИсключение "Удаление разрешено только после подтвержденного создания в этой форме";
КонецЕсли;
ИмяКоманды85 = "УдалитьСвоюПолитику85";
Согласие85 = СогласенНаУдалениеПолитики85;
Иначе
Если Фаза85 <> Неопределено Тогда
ВызватьИсключение "Повтор этого опыта в той же форме запрещен";
КонецЕсли;
ИмяКоманды85 = "СоздатьИПроверитьПолитику85";
Согласие85 = СогласенНаСозданиеПолитики85;
КонецЕсли;
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1c-labs\OwnUnassignedPolicy85_ee57d0eb-e170-4f4f-9b77-01e17e6b1d60\IB"";" Тогда
ВызватьИсключение "Нужны точно подготовленные собственная новая база и толстый клиент 8.5.1.1343";
КонецЕсли;
Если ТипЗнч(Команда) <> Тип("КомандаФормы")
Или Команда <> Команды.Найти(ИмяКоманды85)
Или ТипЗнч(Согласие85) <> Тип("Булево") Или Согласие85 <> Истина Тогда
ВызватьИсключение "Нажмите настоящую команду после отдельного ручного согласия";
КонецЕсли;
Если Удаление85 Тогда
СогласенНаУдалениеПолитики85 = Ложь;
Иначе
СогласенНаСозданиеПолитики85 = Ложь;
КонецЕсли;
Фаза85 = "НЕИЗВЕСТНО";
Состояние85 = "НЕИЗВЕСТНО: действие еще не подтверждено";
Доступ85 = РольДоступна("АдминистраторУчебныхЗаписей85");
Если ТипЗнч(Доступ85) <> Тип("Булево") Или Доступ85 <> Истина Тогда
ВызватьИсключение "Вручную подготовьте свою роль с административными правами";
КонецЕсли;
Пользователи85 = ПользователиИнформационнойБазы;
Если ТипЗнч(Пользователи85) <> Тип("МенеджерПользователейИнформационнойБазы") Тогда
ВызватьИсключение "Не получен настоящий менеджер пользователей";
КонецЕсли;
Администратор85 = Пользователи85.ТекущийПользователь();
Если ТипЗнч(Администратор85) <> Тип("ПользовательИнформационнойБазы")
Или Администратор85.Имя <> "OwnAdministration85Admin"
Или ТипЗнч(Администратор85.УникальныйИдентификатор) <> Тип("УникальныйИдентификатор")
Или Администратор85.УникальныйИдентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
ВызватьИсключение "Нужен собственный вручную созданный администратор этого сеанса";
КонецЕсли;
Политики85 = ПолитикиПаролейПользователей;
Если ТипЗнч(Политики85) <> Тип("МенеджерПолитикПаролейПользователей") Тогда
ВызватьИсключение "Не получен настоящий менеджер политик";
КонецЕсли;
Возврат Политики85;
#Иначе
ВызватьИсключение "Этот опыт предназначен только для толстого управляемого клиента";
#КонецЕсли
КонецФункции
&НаКлиенте
Процедура ДобавитьПоле85(Снимок85, Имя85, Значение85, ТребуемыйТип85)
Если ТипЗнч(Значение85) <> ТребуемыйТип85 Или Снимок85.Свойство(Имя85) Тогда
ВызватьИсключение "Неверный тип или повтор поля учебного снимка";
КонецЕсли;
Снимок85.Вставить(Имя85, Значение85);
КонецПроцедуры
&НаКлиенте
Процедура СверитьСнимки85(Текущий85, Ожидаемый85)
Если ТипЗнч(Текущий85) <> Тип("Структура") Или ТипЗнч(Ожидаемый85) <> Тип("Структура")
Или Текущий85.Количество() <> Ожидаемый85.Количество() Тогда
ВызватьИсключение "Изменился полный состав учебного снимка";
КонецЕсли;
Для Каждого Поле85 Из Текущий85 Цикл
Если Не Ожидаемый85.Свойство(Поле85.Ключ, ОжидаемоеЗначение85)
Или ТипЗнч(Поле85.Значение) <> ТипЗнч(ОжидаемоеЗначение85)
Или Поле85.Значение <> ОжидаемоеЗначение85 Тогда
ВызватьИсключение "Не совпало фактическое значение учебного снимка";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьИПроверитьПолитику85(Команда)
Попытка
Менеджер85 = МенеджерКоманды85(Команда, Ложь);
СобственноеИмя85 = "OwnPolicyTemplate85_" + Строка(Новый УникальныйИдентификатор);
Если Менеджер85.НайтиПоИмени(СобственноеИмя85) <> Неопределено Тогда
ВызватьИсключение "Совпало имя; найденная политика не используется";
КонецЕсли;
Политика85 = Менеджер85.СоздатьПолитику();
Если ТипЗнч(Политика85) <> Тип("ПолитикаПаролейПользователей") Тогда
ВызватьИсключение "Не получена настоящая новая политика";
КонецЕсли;
Политика85.Имя = СобственноеИмя85;
Политика85.МинимальнаяДлинаПаролей = 12;
Политика85.МинимальныйСрокДействияПаролей = 0;
Политика85.МаксимальныйСрокДействияПаролей = 600;
Политика85.ОграничениеПовторенияПаролейСредиПоследних = 2;
Политика85.СрокПредупрежденияОбИстеченииСрокаДействияПаролей = 60;
Политика85.ПроверкаСложностиПаролей = Ложь;
ОжидаемыйСнимок85 = СнимокПолитики85(Политика85);
Фаза85 = "НЕИЗВЕСТНО";
Состояние85 = "НЕИЗВЕСТНО: запись политики еще не подтверждена";
Политика85.Записать();
Прочитанная85 = Менеджер85.НайтиПоИмени(СобственноеИмя85);
ФактическийСнимок85 = СнимокПолитики85(Прочитанная85);
СверитьСнимки85(ФактическийСнимок85, ОжидаемыйСнимок85);
Интервал85 = ФактическийСнимок85.МаксимальныйСрокДействияПаролей
- ФактическийСнимок85.МинимальныйСрокДействияПаролей;
Фаза85 = "ПОДТВЕРЖДЕНО";
Состояние85 = "Проверено: " + ФактическийСнимок85.Имя
+ "; минимальная длина " + Строка(ФактическийСнимок85.МинимальнаяДлинаПаролей)
+ "; интервал сроков, секунд: " + Строка(Интервал85);
Исключение
Фаза85 = "STOP";
СогласенНаСозданиеПолитики85 = Ложь;
Состояние85 = "STOP: исход не подтвержден; автоматического удаления и повторов нет";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура УдалитьСвоюПолитику85(Команда)
Попытка
Менеджер85 = МенеджерКоманды85(Команда, Истина);
Если ТипЗнч(СобственноеИмя85) <> Тип("Строка") Или СобственноеИмя85 = "" Тогда
ВызватьИсключение "Нет подтвержденного собственного имени политики";
КонецЕсли;
Прочитанная85 = Менеджер85.НайтиПоИмени(СобственноеИмя85);
ФактическийСнимок85 = СнимокПолитики85(Прочитанная85);
СверитьСнимки85(ФактическийСнимок85, ОжидаемыйСнимок85);
Фаза85 = "НЕИЗВЕСТНО";
Состояние85 = "НЕИЗВЕСТНО: удаление политики еще не подтверждено";
Прочитанная85.Удалить();
Найденная85 = Менеджер85.НайтиПоИмени(СобственноеИмя85);
Если Найденная85 <> Неопределено Тогда
ВызватьИсключение "Отсутствие собственной политики не подтверждено";
КонецЕсли;
Фаза85 = "УДАЛЕНО";
Состояние85 = "Удаление проверено: " + СобственноеИмя85
+ "; точный поиск вернул Неопределено: " + Строка(Найденная85 = Неопределено);
Исключение
Фаза85 = "STOP";
СогласенНаУдалениеПолитики85 = Ложь;
Состояние85 = "STOP: исход не подтвержден; автоматического удаления и повторов нет";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Функция СнимокПолитики85(Политика85)
Если ТипЗнч(Политика85) <> Тип("ПолитикаПаролейПользователей") Тогда
ВызватьИсключение "Точный поиск не вернул ожидаемый настоящий объект";
КонецЕсли;
Снимок85 = Новый Структура;
ДобавитьПоле85(Снимок85, "Имя", Политика85.Имя, Тип("Строка"));
ДобавитьПоле85(Снимок85, "МинимальнаяДлинаПаролей", Политика85.МинимальнаяДлинаПаролей, Тип("Число"));
ДобавитьПоле85(Снимок85, "МинимальныйСрокДействияПаролей", Политика85.МинимальныйСрокДействияПаролей, Тип("Число"));
ДобавитьПоле85(Снимок85, "МаксимальныйСрокДействияПаролей", Политика85.МаксимальныйСрокДействияПаролей, Тип("Число"));
ДобавитьПоле85(Снимок85, "ОграничениеПовторенияПаролейСредиПоследних", Политика85.ОграничениеПовторенияПаролейСредиПоследних, Тип("Число"));
ДобавитьПоле85(Снимок85, "СрокПредупрежденияОбИстеченииСрокаДействияПаролей", Политика85.СрокПредупрежденияОбИстеченииСрокаДействияПаролей, Тип("Число"));
ДобавитьПоле85(Снимок85, "ПроверкаСложностиПаролей", Политика85.ПроверкаСложностиПаролей, Тип("Булево"));
ДобавитьПоле85(Снимок85, "ПроверкаРаскрытияПаролей", Политика85.ПроверкаРаскрытияПаролей, Тип("Булево"));
ДобавитьПоле85(Снимок85, "ДействиеПриНесоответствииПаролейТребованиямПриАутентификации", Политика85.ДействиеПриНесоответствииПаролейТребованиямПриАутентификации, Тип("ДействиеПриНесоответствииПароляТребованиямПриАутентификации"));
Если Снимок85.ПроверкаРаскрытияПаролей <> Ложь
Или Снимок85.ДействиеПриНесоответствииПаролейТребованиямПриАутентификации
<> ДействиеПриНесоответствииПароляТребованиямПриАутентификации.Нет Тогда
ВызватьИсключение "Настоящие значения полей только для чтения не подходят этому опыту";
КонецЕсли;
Если Снимок85.Количество() <> 9 Тогда
ВызватьИсключение "Неполный учебный снимок";
КонецЕсли;
Возврат Снимок85;
КонецФункции
Разбор по шагам
Нажмите СоздатьИПроверитьПолитику85 после своего согласия. Код проверит отдельный стенд и администратора, затем получит настоящего менеджера политик.
Точный поиск собственного нового имени обязан вернуть Неопределено. Пропущенное или пустое имя не используется: оно не является своим шаблоном.
СоздатьПолитику возвращает настоящий объект. Заполняются только семь доступных для записи полей; все девять полей читаются и проверяются до записи, включая два поля только для чтения.
Перед Записать состояние НЕИЗВЕСТНО. Следующий НайтиПоИмени должен вернуть настоящую политику; все девять фактических значений сравниваются с отдельным снимком.
Отчёт берет имя, минимальную длину и сроки из нового найденного объекта. Фактический интервал 600−0 должен составить 600 секунд; это не показ только что присвоенных локальных значений.
Для отдельного удаления поставьте СогласенНаУдалениеПолитики85 и нажмите УдалитьСвоюПолитику85. Сначала заново находятся собственное имя и все девять полей; только целиком совпавший свежий объект передаётся Удалить.
Ещё один НайтиПоИмени с тем же явно указанным именем должен вернуть Неопределено. Иное значение или исключение оставляет неподтверждённый исход; автоматического удаления/отката нет.
Как проверить результат
Без флажка создания: STOP до менеджеров и проверки администратора, без записи. В том же экземпляре повтор запрещён.
Будущий нормальный запуск: ФактическийСнимок85 содержит все девять типизированных значений; собственное имя, минимум длины 12 и вычисленный интервал 600 секунд берутся из нового найденного объекта.
Два поля только для чтения фактически Нет/Ложь. Несовпадение означает STOP до записи; не включайте или выключайте проверку раскрытия и не присваивайте действие ради опыта.
Никому не назначайте эту политику и не выполняйте вход/создание/проверку пароля. Этот урок проверяет параметры собственного неназначенного шаблона, не соблюдение политики при аутентификации.
Удаление без второго флажка запрещено. После отдельного подтверждённого удаления точный поиск имени возвращает Неопределено; статус не строится из void результата Удалить.
Изменение снимка, совпадение имени, отсутствие прав или исключение — STOP, без изменения найденной чужой политики, повторов или уборки. Реально не воспроизведённые ошибки не объявляйте проверенными.
Ожидаемый результат
Будущий успешный ручной запуск должен новым поиском подтвердить все девять полей собственной неназначенной политики и показать вычисленные 600 секунд. Отдельное удаление проверяется новым точным поиском имени. Это не проверка пароля, не назначение политики и не независимое доказательство долговечности записи; запуск в 1С не проверялся.
На что обратить внимание
Создание и удаление действительно меняют свою лабораторную базу. Ошибка после Записать или Удалить может означать частичный результат: STOP остаётся у этого экземпляра, без повтора, автоматической очистки и отката.
Удаление — отдельное решение человека, не завершение создания. Оно разрешено только после подтверждённого создания, нового согласия и полного свежего сравнения собственного объекта.
ТекущийПользователь возвращает состояние начала сеанса и нужен только для проверки своего администратора. Это НЕ повторное чтение созданной записи; для результата используются новые точные поиски.
Нет перечисления списка пользователей/политик, доступа к чужим паролям, привилегированного режима, назначений ролей или попыток входа. Состояние API не даёт гарантии всех внутренних действий платформы.
Проверки пути, роли и метки CF предотвращают ошибки подготовки, но не доказывают владение базой или атомарную защиту от других писателей. Один собственный спокойный сеанс обязателен.
STOP данного экземпляра сохраняется. Новый опыт возможен лишь после явной ручной подготовки другой новой собственной формы/лаборатории; открытие формы не является автоматическим восстановлением частичного результата.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.