Получает дополнительные настройки аутентификации пользователей информационной базы.
Синтаксис
ПолучитьНастройкиВосстановленияПароля()Полное описание, параметры и ограничения
МенеджерДополнительныхНастроекАутентификации.ПолучитьНастройкиВосстановленияПароля (AdditionalAuthenticationSettingsManager.GetPasswordRecoverySettings)
МенеджерДополнительныхНастроекАутентификации (AdditionalAuthenticationSettingsManager)
ПолучитьНастройкиВосстановленияПароля (GetPasswordRecoverySettings)
Доступен, начиная с версии 8.3.15.
Синтаксис:
ПолучитьНастройкиВосстановленияПароля()
Возвращаемое значение:
Тип: НастройкиВосстановленияПароля.
Описание:
Получает дополнительные настройки аутентификации пользователей информационной базы.
Доступность:
Сервер, толстый клиент.
См. также:
МенеджерДополнительныхНастроекАутентификации, метод ПолучитьНастройкиАутентификацииЧерезЭлектроннуюПочту
Использование в версии:
Доступен, начиная с версии 8.3.15.
Методическая информация
Практические примеры
Два отключенных шаблона: изменить только свои заголовки и перечитать все поля
Практика настоящих настроек платформы: получаем собственные отключенные шаблоны, меняем заголовки и проверяем все 20+18 полей новым чтением. Никаких писем, кодов или восстановления пароля.
Где и как запускать
Новая полностью собственная Windows VM и пустая File база 8.5.1.1343; толстый управляемый клиент. Только будущая ручная подготовка/запись своих настроек, сейчас runtime операций нет.
Подготовка
Это самостоятельный полный модуль формы, а не дополнение к другому уроку. Для каждой карточки подготовьте отдельную НОВУЮ полностью собственную Windows VM, новый профиль и новую пустую файловую базу. Не рабочая конфигурация и не копия с пользователями. Здесь 1С, виртуальную машину, изменения базы и сеть не запускали.
В своей новой виртуальной машине создайте пустую базу в C:\1c-labs\OwnAuthSettings85_6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b\IB. Если путь/регистрация/база уже существуют, их не используйте и не очищайте. Строка регистрации должна быть ровно File="C:\1c-labs\OwnAuthSettings85_6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b\IB";. Это только ограничение подготовки, не идентификатор базы или доказательство владения.
Конфигуратор: Имя=УчебныеНастройкиВхода85, Версия=6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b, Режим совместимости=Не использовать, Основной режим запуска=Управляемое приложение. Только толстый клиент управляемого приложения 8.5.1.1343; не веб/тонкий клиент, сервис или общая база.
Создайте в этой пустой конфигурации роль АдминистраторУчебныхНастроек85; через Действия установите все права и вручную назначьте роль своему текущему учебному администратору. Минимум отдельных прав API страницы не обещают. РольДоступна проверяет роль, не владение базой; код прав не выдает. Не переносите пользователей/пароли/привилегированный режим из рабочей базы.
Общие → Общие формы: управляемая НастройкиВхода85, разместить в рабочей области начальной страницы. Вставьте весь код именно этой карточки в модуль формы. Команда ПроверитьШаблоны85: Действие=ПроверитьШаблоны85(Команда), кнопка с этим ИмяКоманды. Обработчик вручную не вызывайте.
Реквизиты: СогласенНаШаблоны85 — Булево, исходно Ложь, ручной флажок; Состояние85 — Строка, исходно Не запускалось, поле ТолькоПросмотр=Да. Отдельные карточки не объединяйте в один модуль: это два независимых опыта с разной ручной подготовкой.
В Конфигураторе откройте Администрирование → Дополнительные настройки аутентификации... для своей новой базы. Закончите ручную подготовку, нажмите OK и закройте диалог до опыта. Документация предупреждает о задержке отображения до 20 секунд; таймер не доказательство состояния — код сверяет настоящие getter значения.
Работайте в одном спокойном собственном сеансе без других писателей настроек. Полные снимки перед записью не атомарная блокировка. Только после чтения инструкции поставьте свой флажок и нажмите кнопку один раз; согласие расходуется ДО менеджера и getter чтений.
Каждый setter действительно меняет настройки своей базы и значения не возвращает. Перед ним состояние НЕИЗВЕСТНО, затем отдельный новый getter и сравнение всех полей. Это состояние API в будущем запуске, не доказанная долговечность записи или гарантия всех внутренних действий платформы.
Восстановление и вход через электронную почту оставьте выключенными: требуются оба настоящих режима Нет. SMTP адрес, пользователь, пароль, токен и адрес отправителя должны быть пустыми; ссылки восстановления/помощи пустыми, Отображать гиперссылку помощи выключено. Никаких настоящих учетных данных.
Заголовок восстановления подготовьте ровно: Лаборатория: восстановление ДО 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b. Заголовок почтового входа: Лаборатория: вход ДО 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b. Оба текста сообщения HTML: <p>Код: &VerificationCode</p>.
Если при выключенном способе поля редактируются, заполните их сразу. Если недоступны: только на этом новом стенде временно выберите отправку кода для восстановления/включите аутентификацию через электронную почту, снимите Использовать стандартный сервис отправки и отредактируйте собственные заголовки/HTML. Не отправляйте код/письмо, не вводите SMTP данные. СНОВА отключите оба способа ДО OK. Не сохраняйте включенный способ ради опыта.
Документация не гарантирует, что неактивные поля останутся после такого редактирования. Если диалог не позволяет подготовить отключенные шаблоны или очищает их, остановитесь: код даст STOP, его проверки не обходят и другой способ автоматически не включают.
Остальные поля читаются в их настоящих типах и сохраняются без изменения. Всего 20 полей восстановления и 18 почтового входа, включая пустые чувствительные поля; они не выводятся. Не копируйте режим стандартного сервиса из исходного примера КА2. Для длины почтового кода API указывает 4–50, хотя UI справка упоминает 4–60; верхнюю границу 60 не используйте.
&НаКлиенте
Перем ОпытИспользован85;
&НаКлиенте
Функция НачатьОпыт85(Команда)
Если ОпытИспользован85 <> Неопределено Тогда
ВызватьИсключение "Экземпляр уже использован; повтор запрещен";
КонецЕсли;
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1c-labs\OwnAuthSettings85_6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b\IB"";" Тогда
ВызватьИсключение "Не совпали собственная учебная конфигурация, версия или регистрация";
КонецЕсли;
#Иначе
ВызватьИсключение "Нужен толстый клиент управляемого приложения 8.5.1.1343";
#КонецЕсли;
Доступ = РольДоступна("АдминистраторУчебныхНастроек85");
Если ТипЗнч(Доступ) <> Тип("Булево") Или Доступ <> Истина
Или ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда <> Команды.Найти("ПроверитьШаблоны85") Тогда
ВызватьИсключение "Нет своей роли или настоящей команды формы";
КонецЕсли;
Если ТипЗнч(СогласенНаШаблоны85) <> Тип("Булево") Или СогласенНаШаблоны85 <> Истина Тогда
ВызватьИсключение "Подтвердите изменение настроек своей новой базы";
КонецЕсли;
ОпытИспользован85 = Истина;
СогласенНаШаблоны85 = Ложь;
Состояние85 = "НЕИЗВЕСТНО: настройки еще не проверены";
Менеджер85 = ДополнительныеНастройкиАутентификации;
Если ТипЗнч(Менеджер85) <> Тип("МенеджерДополнительныхНастроекАутентификации") Тогда
ВызватьИсключение "Не получен настоящий менеджер платформы";
КонецЕсли;
Возврат Менеджер85;
КонецФункции
&НаКлиенте
Процедура ДобавитьПоле85(Снимок, Имя, Значение, ТребуемыйТип)
Если ТипЗнч(Значение) <> ТребуемыйТип Или Снимок.Свойство(Имя) Тогда
ВызватьИсключение "Тип поля не совпал или имя повторяется";
КонецЕсли;
Снимок.Вставить(Имя, Значение);
КонецПроцедуры
&НаКлиенте
Функция КопияСнимка85(Исходный)
Копия = Новый Структура;
Для Каждого Поле Из Исходный Цикл
Копия.Вставить(Поле.Ключ, Поле.Значение);
КонецЦикла;
Возврат Копия;
КонецФункции
&НаКлиенте
Процедура СверитьСнимки85(Текущий, Ожидаемый)
Если ТипЗнч(Текущий) <> Тип("Структура") Или ТипЗнч(Ожидаемый) <> Тип("Структура") Тогда
ВызватьИсключение "Не получены собственные полные снимки";
КонецЕсли;
Если Текущий.Количество() <> Ожидаемый.Количество() Тогда
ВызватьИсключение "Не совпало число полей";
КонецЕсли;
Для Каждого Поле Из Текущий Цикл
Если Не Ожидаемый.Свойство(Поле.Ключ, ОжидаемоеЗначение) Тогда
ВызватьИсключение "Не совпало имя поля";
КонецЕсли;
Если ТипЗнч(Поле.Значение) <> ТипЗнч(ОжидаемоеЗначение) Или Поле.Значение <> ОжидаемоеЗначение Тогда
ВызватьИсключение "Полное значение поля не совпало; содержимое не показываем";
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьШаблоны85(Команда)
Попытка
Менеджер85 = НачатьОпыт85(Команда);
ДоВосстановления = СнимокВосстановления85(Менеджер85.ПолучитьНастройкиВосстановленияПароля());
ДоПочты = СнимокПочты85(Менеджер85.ПолучитьНастройкиАутентификацииЧерезЭлектроннуюПочту());
Если ДоВосстановления.СпособВосстановленияПароля <> СпособВосстановленияПароляПользователяИнформационнойБазы.Нет
Или ДоПочты.СпособАутентификацииЧерезЭлектроннуюПочту <> СпособАутентификацииЧерезЭлектроннуюПочту.Нет
Или ДоВосстановления.АдресСервераSMTP <> "" Или ДоПочты.АдресСервераSMTP <> ""
Или ДоВосстановления.ПользовательSMTP <> "" Или ДоПочты.ПользовательSMTP <> ""
Или ДоВосстановления.ПарольSMTP <> "" Или ДоПочты.ПарольSMTP <> ""
Или ДоВосстановления.ТокенДоступа <> "" Или ДоПочты.ТокенДоступа <> ""
Или ДоВосстановления.Отправитель <> "" Или ДоПочты.Отправитель <> ""
Или ДоВосстановления.НавигационнаяСсылкаВосстановленияПароля <> "" Или ДоВосстановления.НавигационнаяСсылкаПомощи <> ""
Или ДоВосстановления.ОтображатьГиперссылкуПомощи <> Ложь Тогда
ВызватьИсключение "Не совпала собственная отключенная подготовка; значений не показываем";
КонецЕсли;
Если ДоВосстановления.Заголовок <> "Лаборатория: восстановление ДО 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b"
Или ДоПочты.Заголовок <> "Лаборатория: вход ДО 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b"
Или ДоВосстановления.ТекстСообщенияHTML <> "<p>Код: &VerificationCode</p>"
Или ДоПочты.ТекстСообщенияHTML <> "<p>Код: &VerificationCode</p>" Тогда
ВызватьИсключение "Не подготовлены собственные заголовки и тексты шаблонов";
КонецЕсли;
ОжидаемоеВосстановление = КопияСнимка85(ДоВосстановления);
ОжидаемаяПочта = КопияСнимка85(ДоПочты);
ОжидаемоеВосстановление.Заголовок = "Лаборатория: восстановление ПОСЛЕ 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b";
ОжидаемаяПочта.Заголовок = "Лаборатория: вход ПОСЛЕ 6c164ff5-bd5f-4f9d-ae0b-c4194cbe435b";
Состояние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(Настройки)
Если ТипЗнч(Настройки) <> Тип("НастройкиВосстановленияПароля") Тогда
ВызватьИсключение "Getter не вернул требуемые native настройки";
КонецЕсли;
Снимок = Новый Структура;
ДобавитьПоле85(Снимок, "ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения", Настройки.ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "СпособВосстановленияПароля", Настройки.СпособВосстановленияПароля, Тип("СпособВосстановленияПароляПользователяИнформационнойБазы"));
ДобавитьПоле85(Снимок, "ПарольSMTP", Настройки.ПарольSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "АдресСервераSMTP", Настройки.АдресСервераSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "АутентификацияПоТокену", Настройки.АутентификацияПоТокену, Тип("ИспользованиеАутентификацииИнтернетПочтыПоТокену"));
ДобавитьПоле85(Снимок, "ДлинаКодаПодтверждения", Настройки.ДлинаКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "Заголовок", Настройки.Заголовок, Тип("Строка"));
ДобавитьПоле85(Снимок, "ИмяОтправителя", Настройки.ИмяОтправителя, Тип("Строка"));
ДобавитьПоле85(Снимок, "ИспользоватьSSL", Настройки.ИспользоватьSSL, Тип("Булево"));
ДобавитьПоле85(Снимок, "МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения", Настройки.МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "ПользовательSMTP", Настройки.ПользовательSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "НавигационнаяСсылкаВосстановленияПароля", Настройки.НавигационнаяСсылкаВосстановленияПароля, Тип("Строка"));
ДобавитьПоле85(Снимок, "НавигационнаяСсылкаПомощи", Настройки.НавигационнаяСсылкаПомощи, Тип("Строка"));
ДобавитьПоле85(Снимок, "ОтображатьГиперссылкуПомощи", Настройки.ОтображатьГиперссылкуПомощи, Тип("Булево"));
ДобавитьПоле85(Снимок, "Отправитель", Настройки.Отправитель, Тип("Строка"));
ДобавитьПоле85(Снимок, "ПортSMTP", Настройки.ПортSMTP, Тип("Число"));
ДобавитьПоле85(Снимок, "СрокДействияКодаПодтверждения", Настройки.СрокДействияКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "ТекстСообщенияHTML", Настройки.ТекстСообщенияHTML, Тип("Строка"));
ДобавитьПоле85(Снимок, "ТокенДоступа", Настройки.ТокенДоступа, Тип("Строка"));
ДобавитьПоле85(Снимок, "ТолькоЗащищеннаяАутентификацияSMTP", Настройки.ТолькоЗащищеннаяАутентификацияSMTP, Тип("Булево"));
Если Снимок.Количество() <> 20 Тогда
ВызватьИсключение "Снимок не содержит всех полей";
КонецЕсли;
Возврат Снимок;
КонецФункции
&НаКлиенте
Функция СнимокПочты85(Настройки)
Если ТипЗнч(Настройки) <> Тип("НастройкиАутентификацииЧерезЭлектроннуюПочту") Тогда
ВызватьИсключение "Getter не вернул требуемые native настройки";
КонецЕсли;
Снимок = Новый Структура;
ДобавитьПоле85(Снимок, "АлфавитКодаПодтверждения", Настройки.АлфавитКодаПодтверждения, Тип("Строка"));
ДобавитьПоле85(Снимок, "АдресСервераSMTP", Настройки.АдресСервераSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "ПортSMTP", Настройки.ПортSMTP, Тип("Число"));
ДобавитьПоле85(Снимок, "Отправитель", Настройки.Отправитель, Тип("Строка"));
ДобавитьПоле85(Снимок, "АутентификацияПоТокену", Настройки.АутентификацияПоТокену, Тип("ИспользованиеАутентификацииИнтернетПочтыПоТокену"));
ДобавитьПоле85(Снимок, "СпособАутентификацииЧерезЭлектроннуюПочту", Настройки.СпособАутентификацииЧерезЭлектроннуюПочту, Тип("СпособАутентификацииЧерезЭлектроннуюПочту"));
ДобавитьПоле85(Снимок, "ДлинаКодаПодтверждения", Настройки.ДлинаКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения", Настройки.ДлительностьБлокировкиЗапросаОбновленияКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения", Настройки.МаксимальноеКоличествоНеуспешныхПопытокПроверкиКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "Заголовок", Настройки.Заголовок, Тип("Строка"));
ДобавитьПоле85(Снимок, "ИмяОтправителя", Настройки.ИмяОтправителя, Тип("Строка"));
ДобавитьПоле85(Снимок, "ИспользоватьSSL", Настройки.ИспользоватьSSL, Тип("Булево"));
ДобавитьПоле85(Снимок, "ПарольSMTP", Настройки.ПарольSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "ПользовательSMTP", Настройки.ПользовательSMTP, Тип("Строка"));
ДобавитьПоле85(Снимок, "СрокДействияКодаПодтверждения", Настройки.СрокДействияКодаПодтверждения, Тип("Число"));
ДобавитьПоле85(Снимок, "ТекстСообщенияHTML", Настройки.ТекстСообщенияHTML, Тип("Строка"));
ДобавитьПоле85(Снимок, "ТокенДоступа", Настройки.ТокенДоступа, Тип("Строка"));
ДобавитьПоле85(Снимок, "ТолькоЗащищеннаяАутентификацияSMTP", Настройки.ТолькоЗащищеннаяАутентификацияSMTP, Тип("Булево"));
Если Снимок.Количество() <> 18 Тогда
ВызватьИсключение "Снимок не содержит всех полей";
КонецЕсли;
Возврат Снимок;
КонецФункции
Разбор по шагам
Подготовьте отключенные собственные шаблоны и форму. Один раз поставьте СогласенНаШаблоны85 и нажмите ПроверитьШаблоны85.
Код проверяет свою базу/версию/роль/команду и расходует согласие. Получает настоящие настройки платформы и типизированные снимки всех 20 и 18 полей, подтверждает отключенные способы и пустые чувствительные поля.
Перед первой записью новый getter заново сверяет все поля восстановления. Только после совпадения меняется Заголовок настоящего объекта и вызывается setter. Новый getter сравнивает новый заголовок и все 19 остальных полей.
Так же меняется заголовок почтового шаблона и новым getter проверяются все 18 полей. В конце восстановление еще раз перечитывается целиком. Состояние85 показывает только фактические новые собственные заголовки.
Как проверить результат
Без флажка: STOP до получения менеджера/настроек и до setters; Проверено не появляется. Этот экземпляр повторно не используйте.
Нормальный будущий опыт: Состояние85 начинается Проверено и содержит два фактических заголовка со словом ПОСЛЕ. В отладчике проверьте ИтогВосстановления и ПослеПочты: полные 20/18 полей, только заголовки изменены, оба способа Нет.
На отдельном новом стенде измените один собственный исходный заголовок или HTML. Ожидается STOP ДО первой записи, не автоматическое исправление или отправка сообщения.
Непустой SMTP параметр или режим не Нет также должен дать STOP без показа значения и без записи. Эти отрицательные пробы только в своем новом стенде, никогда не с настоящим паролем/токеном.
Повтор кнопки в том же экземпляре после успеха/ошибки дает STOP без новой записи. Исключение setter — неизвестный исход, не доказанный откат. Нет автоматического повтора/уборки.
Если подготовить выключенные поля не получилось, честно отметьте опыт непроверенным и остановитесь; не подменяйте getter объект Структурой, не вызывайте обработчик вручную.
Ожидаемый результат
Будущий успешный ручной запуск должен показать два новых собственных заголовка после полного чтения 20/18 полей, сохранив остальные значения. Это не отправка письма, не восстановление пароля и не независимое доказательство долговечности записи. Сейчас запуск в 1С не проверялся.
На что обратить внимание
Новый вызов getter и полное сравнение его actual состояния — не то же самое, что показ только что измененного локального объекта. Но и независимой гарантии durable хранения или отсутствия внутренних platform calls этот опыт не дает.
Четыре метода настройки меняют информационную базу. Это не чисто работа в памяти. Ошибка после первого setter может оставить частичный результат: автоматического отката, очистки и повторения нет.
Своя Структура используется только для типизированной копии/сравнения. В setter передается настоящий полученный объект настроек, не Структура и не новый фиктивный менеджер.
Метаданные/роль/File-маркер ограничивают ожидаемую подготовку, не доказывают владение ОС или базой. Один спокойный собственный сеанс обязателен; снимки не атомарные блокировки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.