Возвращает срок предупреждения об истечении срока действия паролей пользователей в секундах.
Синтаксис
ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей()Полное описание, параметры и ограничения
Глобальный контекст.ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей (Global context.GetUserPasswordExpirationNotificationPeriod)
Глобальный контекст (Global context)
ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей (GetUserPasswordExpirationNotificationPeriod)
Доступен, начиная с версии 8.3.17.
Синтаксис:
ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей()
Возвращаемое значение:
Тип: Число.
Описание:
Возвращает срок предупреждения об истечении срока действия паролей пользователей в секундах.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.17.
Методическая информация
Практические примеры
Изменить согласованную пару сроков пароля и вернуть исходные настройки
Показывается порядок операций при зависимых min/max: временно убрать минимум, задать максимум, затем минимум. Предупреждение читается и восстанавливается отдельно.
Где и как запускать
Полный модуль управляемой формы; серверный опыт min/max и предупреждения только в новом пустом стенде, без ожидания срока и аутентификации.
Подготовка
Создайте с нуля отдельную пустую конфигурацию УчебнаяПарольнаяПолитика85 на платформе8.5.1.1343; управляемое приложение, без разделителей данных, расширений, обменов и подписок. Не переименовывайте рабочую базу под этот пример.
Это административные настройки всей учебной информационной базы, не значения в локальной структуре. Только один заранее созданный учебный администратор с правом Администрирование; ни одного рабочего пользователя или рабочего пароля.
Используйте отдельную новую файловую базу и единственный сеанс Предприятия. На время опыта исключите другие сеансы, повторную аутентификацию, фоновые входы и изменение паролей. Предварительно проверьте это вручную, а не полагайтесь только на имя конфигурации.
Обработки → ОпытПарольнойПолитики85 → управляемая основная форма. Добавьте реквизит ПодтверждаюПустойСтенд типа Булево, исходно Ложь, и покажите его флажком. Для каждого урока используйте отдельную обработку либо целиком замените модуль формы.
Добавьте команду с именем указанной клиентской процедуры, назначьте её действие и кнопку. Основной код — полный модуль формы; обе процедуры/функции уже показаны и не вставляются внутрь другого обработчика.
Нажмите F7 и обновите только новый стенд. runtimeVerifiedScenarios=0: здесь примеры не запускались, пользователей и пароли не меняли; выполнены только статические проверки.
Перед своим ручным запуском изучите весь блок восстановления. Исходные значения читаются до первой записи; после опыта восстанавливаются именно они, а не справочные значения по умолчанию.
Установите флажок только после подготовки стенда. Клиент передаёт подтверждение, сервер повторно проверяет его. Это защита от случайного запуска, не универсальная авторизация для production.
Не вводите и не выводите пароли. Код не создаёт пользователей, не вызывает проверку раскрытия конкретного пароля, не делает входов и не проверяет реальную реакцию диалогов аутентификации.
Если восстановление не подтвердилось, не повторяйте опыт и не входите другим пользователем: администратор должен вручную сверить только настройки отдельного учебного стенда. Принудительное завершение процесса не гарантирует выполнение восстановления.
Команда ПроверитьСроки85; исходная пара нового стенда должна быть неотрицательной и минимальный срок не выше максимального. Несогласованная пара отклоняется до записи.
&НаКлиенте
Процедура ПроверитьСроки85(Команда)
Если Не ПодтверждаюПустойСтенд Тогда
ВызватьИсключение "Подтвердите работу только в своём новом пустом стенде";
КонецЕсли;
Сообщить(ПроверитьСвоиСроки(ПодтверждаюПустойСтенд));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьСвоиСроки(Подтверждение)
Если ТипЗнч(Подтверждение) <> Тип("Булево") Тогда
ВызватьИсключение "Нужно явное подтверждение нового пустого стенда";
КонецЕсли;
Если Не Подтверждение Тогда
ВызватьИсключение "Только новый пустой стенд УчебнаяПарольнаяПолитика85 с отдельным согласием";
КонецЕсли;
ИсходныйМинимум = ПолучитьМинимальныйСрокДействияПаролейПользователей();
ИсходныйМаксимум = ПолучитьМаксимальныйСрокДействияПаролейПользователей();
ИсходноеПредупреждение = ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей();
Если ИсходныйМинимум < 0 Или ИсходныйМаксимум < ИсходныйМинимум Тогда
ВызватьИсключение "Для этого опыта нужна исходная согласованная неотрицательная пара сроков нового стенда";
КонецЕсли;
ОшибкаОпыта = "";
Попытка
УстановитьМинимальныйСрокДействияПаролейПользователей(0);
УстановитьМаксимальныйСрокДействияПаролейПользователей(60);
УстановитьМинимальныйСрокДействияПаролейПользователей(30);
УстановитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей(10);
Если ПолучитьМинимальныйСрокДействияПаролейПользователей() <> 30
Или ПолучитьМаксимальныйСрокДействияПаролейПользователей() <> 60
Или ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей() <> 10 Тогда
ВызватьИсключение "Учебная пара сроков или предупреждение не подтвердились";
КонецЕсли;
Исключение
ОшибкаОпыта = ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьМинимальныйСрокДействияПаролейПользователей(0);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не снят промежуточный минимум: " + ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьМаксимальныйСрокДействияПаролейПользователей(ИсходныйМаксимум);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлен максимум: " + ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьМинимальныйСрокДействияПаролейПользователей(ИсходныйМинимум);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлен минимум: " + ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей(ИсходноеПредупреждение);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлено предупреждение: " + ОписаниеОшибки();
КонецПопытки;
Попытка
Если ПолучитьМинимальныйСрокДействияПаролейПользователей() <> ИсходныйМинимум
Или ПолучитьМаксимальныйСрокДействияПаролейПользователей() <> ИсходныйМаксимум
Или ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей() <> ИсходноеПредупреждение Тогда
ВызватьИсключение "Исходные сроки ещё не восстановлены";
КонецЕсли;
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Проверка восстановления: " + ОписаниеОшибки();
КонецПопытки;
Если ОшибкаОпыта <> "" Тогда
ВызватьИсключение ОшибкаОпыта;
КонецЕсли;
Возврат "Числовые настройки минимум30 и максимум60, предупреждение10 секунд проверены. Исходные сроки восстановлены. Истечение пароля не моделировалось.";
КонецФункцииРазбор по шагам
Читаются фактические минимальный срок, максимальный срок и предупреждение. Исходная пара проверяется до первой записи.
Первым устанавливается минимум0, чтобы прежний высокий минимум не мешал новому максимуму60. Затем ставится учебный минимум30, который не превышает60.
Срок предупреждения устанавливается равным10 секундам; в справке этого метода единица измерения явно указана. Три значения проверяются повторным чтением.
После опыта сначала снова снимается промежуточный минимум. Возвращаются исходный максимум, затем исходный минимум; этот порядок не создаёт временно неверную пару при восстановлении допустимого снимка.
Предупреждение восстанавливается отдельно. Даже ошибка одного setter не отменяет попытки остальных; исходные и новые ошибки сохраняются.
Последнее чтение подтверждает исходный снимок. Урок не ждёт истечения срока, не меняет системные часы и не выполняет повторного входа.
Как проверить результат
Учебная пара30/60 согласована, а предупреждение10 подтверждается getter-методом.
Снятие промежуточного минимума идёт до восстановления исходного максимума.
Итоговая пара и предупреждение совпадают с прочитанными исходными значениями.
В коде нет паузы, изменения часов или попытки принудительно просрочить пароль администратора.
Ожидаемый результат
Зависимые числовые параметры проверены и восстановлены; наступление срока пароля не моделируется.
На что обратить внимание
Настройки действуют на всю информационную базу. Изменение записывается вне локальных переменных; не используйте код в рабочей базе или фоновом задании.
Восстановление после обработанного исключения не гарантирует восстановление при падении процесса, отключении питания или потере соединения. Поэтому нужен отдельный пустой стенд, а не production.
Каждая попытка восстановления независима, ошибки не замалчиваются. Даже успешное повторное чтение не превращает незавершённую миграцию пользовательских данных в откат.
Значения этого опыта иллюстрируют API и проверки, а не рекомендуемую политику безопасности организации. Не переносите их как готовый стандарт.
Проверка getter-методом доказывает только текущее значение настройки. Она не доказывает проверку конкретного пароля, историю ранее использованных паролей или реальный сценарий входа.
В справочнике runtimeVerifiedScenarios=0. Перед самостоятельным использованием нужны F7 и контролируемый ручной опыт в собственном стенде; фактический запуск здесь не выполнялся.
В установленной справке setter/getter минимального и максимального срока единица явно не уточнена. Числа30/60 здесь контрольные значения API, не рекомендация30/60 дней и не обещание измерения секунд; для предупреждения секунды указаны явно.
Значение0 и его влияние на проверку срока нельзя трактовать универсально по одному числу. Этот урок использует0 только как промежуточное значение для согласованного порядка записей.
Одновременная правка политики другим сеансом может сделать снимок устаревшим; исключите такие сеансы до опыта.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Прочитать сроки паролей в секундах и показать их в днях
Минимальный срок, максимальный срок и срок предупреждения — три разные настройки. Перевод в дни следует реальному конфигурационному коду, но значения не округляются и не изменяются.
Где и как запускать
Полный серверный модуль собственной учебной конфигурации. Штатное чтение настроек с сохранением фактической ошибки и остановкой либо новый собственный черновик в памяти, без применения настроек.
Подготовка
Используйте только отдельную конфигурацию УчебнаяКонфигурацияСинтаксиса. Создайте серверный общий модуль УчебнаяПолитика с флагом Сервер, без флага Привилегированный; вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из собственной серверной команды.
Первые четыре урока вызывают реальные штатные getters в серверном модуле. Выбранные страницы справки не задают для этих методов отдельного требования Администрирование; это не обещание отсутствия внутренних проверок прав. Любая фактическая ошибка сохраняется в ОписаниеОшибки и останавливает опыт без повышения прав, повторного вызова или подстановки значений. Пятый урок создаёт только новый объект в памяти и не читает текущие настройки.
Первые четыре урока только читают настройки. Пятый создаёт новый черновик БлокировкаСеансов в памяти. Ни один урок не вызывает УстановитьБлокировкуСеансов или изменение политики паролей.
Не вводите пароли пользователей и коды разрешения действующих блокировок. Учебник не проверяет чей-либо пароль, не отправляет его на внешний сервис и не выводит код /uc.
Секунды для сроков действия паролей сверены по вашему реальному модулю УНФ: C:\claude\UNF\UNF_XML\CommonModules\ПользователиСлужебный\Ext\Module.bsl, процедура ЗаполнитьНастройкиИзПолитикиПаролейПользователей, строки 3197–3233. Там используется деление на 24×60×60. Урок не вызывает этот модуль и не зависит от БСП.
Фактические настройки и административные ограничения зависят от вашей собственной базы. BSL-примеры не исполнялись в 1С автоматически.
Процедура ВыполнитьПример() Экспорт
Попытка
МинимумСекунд = ПолучитьМинимальныйСрокДействияПаролейПользователей();
МаксимумСекунд = ПолучитьМаксимальныйСрокДействияПаролейПользователей();
ПредупреждениеСекунд = ПолучитьСрокПредупрежденияОбИстеченииСрокаДействияПаролейПользователей();
СекундВДне = 24 * 60 * 60;
Сообщить(ТипЗнч(МинимумСекунд) = Тип("Число"));
Сообщить(ТипЗнч(МаксимумСекунд) = Тип("Число"));
Сообщить(ТипЗнч(ПредупреждениеСекунд) = Тип("Число"));
Сообщить("Минимальный срок: " + Строка(МинимумСекунд) + " секунд; " + Строка(МинимумСекунд / СекундВДне) + " дней");
Сообщить("Максимальный срок: " + Строка(МаксимумСекунд) + " секунд; " + Строка(МаксимумСекунд / СекундВДне) + " дней");
Сообщить("Предупреждение: " + Строка(ПредупреждениеСекунд) + " секунд; " + Строка(ПредупреждениеСекунд / СекундВДне) + " дней");
Если МинимумСекунд > 0 И МаксимумСекунд > 0 Тогда
Сообщить("Для двух положительных сроков минимум не больше максимума: " + Строка(МинимумСекунд <= МаксимумСекунд));
Иначе
Сообщить("Есть нулевое значение; оно показано как настроено и не подменено сроком");
КонецЕсли;
Сообщить(2592000 / СекундВДне = 30);
Сообщить(129600 / СекундВДне = 1.5);
Исключение
ВызватьИсключение "СТОП: штатное чтение настроек собственной базы не завершено: " + ОписаниеОшибки();
КонецПопытки;
КонецПроцедурыРазбор по шагам
Прочитать три собственных числовых настройки и сохранить исходные секунды.
СекундВДне=86400. Показать и исходные значения, и деление на 86400 без округления.
Проверить отношение минимум/максимум только для двух положительных сроков. Нулевые значения не объявлять автоматически ошибкой.
Отдельно проверить учебную арифметику 2592000 секунд=30 дней и 129600 секунд=1,5 дня.
Не устанавливать сроки и не проверять дату истечения пароля какого-либо пользователя.
Как проверить результат
Три проверки типов и две учебные арифметические проверки Истина.
Реальные сроки выводятся фактически; настройка пользователя не меняется.
Ожидаемый результат
Подробный пример единиц измерения, дробных дней и раздельных параметров, подтверждённый реальным кодом УНФ.
На что обратить внимание
Не считайте возвращённое число днями без преобразования.
Округление до целых дней может потерять часть суток; здесь показывается точное отношение.
Чтение общего максимального срока не сообщает индивидуальную дату последней смены пароля.
Урок не рекомендует конкретные сроки безопасности и не изменяет общую политику.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.