Ситуация, когда пароль от почтового ящика Gmail утерян, но 1С продолжает исправно отправлять и принимать письма, встречается довольно часто. Это происходит из-за особенностей современной авторизации Google. Рассмотрим подробно, как 1С хранит эти данные, можно ли извлечь пароль и что делать, если стандартные средства восстановления аккаунта не помогают.
В современных конфигурациях, таких как 1С:Управление нашей фирмой (УНФ) версии 1.6 и выше, используется Библиотека стандартных подсистем (БСП). Для работы с сервисами Google (включая Gmail) 1С перешла на протокол OAuth2. Проанализируем, чем этот способ отличается от обычного хранения пароля:
УчетныеЗаписиЭлектроннойПочты в явном или зашифрованном виде. Сейчас для Gmail такой способ считается небезопасным и Google его практически заблокировал.access_token (короткоживущий ключ для операций) и refresh_token (долгоживущий ключ для получения новых access-токенов).Разберем, где именно 1С:УНФ хранит техническую информацию о подключении к Gmail. Если 1С продолжает отправлять почту, значит, эти данные живы и их можно попытаться прочитать программно. Основным местом хранения является специализированный регистр сведений.
Проанализируем структуру регистра СеансовыеДанныеGoogle. В нем хранятся JSON-структуры, содержащие токены. Вы можете создать внешнюю обработку и попытаться прочитать содержимое этого регистра для вашей учетной записи:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СеансовыеДанныеGoogle.Данные,
| СеансовыеДанныеGoogle.УчетнаяЗапись
|ИЗ
| РегистрСведений.СеансовыеДанныеGoogle КАК СеансовыеДанныеGoogle
|ГДЕ
| СеансовыеДанныеGoogle.УчетнаяЗапись = &УчетнаяЗапись";
Запрос.УстановитьПараметр("УчетнаяЗапись", ВыбраннаяУчетка);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
// В поле 'Данные' обычно хранится структура в формате JSON
Сообщить("Данные токена: " + Результат.Данные);
КонецЦикла;
Важный момент: Знание refresh_token не позволит вам узнать основной пароль от Gmail, но позволит другой программе (не только 1С) действовать от имени вашего почтового ящика. Это полезно, если вам нужно срочно сделать бэкап писем через сторонние утилиты.
Если ваша учетная запись настроена через обычный пароль или «Пароль приложения», данные находятся в безопасном хранилище БСП. Напрямую в таблице Справочник.УчетныеЗаписиЭлектроннойПочты в поле Пароль вы увидите пустоту или техническую метку. Для извлечения данных необходимо использовать программный интерфейс БСП.
Рассмотрим пример кода, который позволяет получить пароль из хранилища (при наличии прав администратора):
Идентификатор = УчетнаяЗапись.ИдентификаторПароляВБезопасномХранилище;
Если ЗначениеЗаполнено(Идентификатор) Тогда
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Идентификатор);
Сообщить("Ваш пароль/код приложения: " + Пароль);
КонецЕсли;
Этот метод сработает только в том случае, если авторизация была настроена не через OAuth2 (то есть без появления окна авторизации Google в браузере при настройке).
Выясним причину ситуации, когда код восстановления на резервную почту приходит, но Google всё равно выдает ошибку: «Нам не удалось убедиться, что аккаунт принадлежит вам». Это происходит из-за механизмов анализа контекста.
Google учитывает следующие факторы:
Если доступ в веб-интерфейс потерян, а 1С еще работает, проанализируем план действий для минимизации потерь бизнеса:
Шаг 1: Экспорт почты из 1С. Поскольку 1С имеет доступ к ящику, вы можете использовать внутренние механизмы программы для пересылки критически важных писем на другой, подконтрольный вам адрес. В УНФ можно настроить правило обработки или просто вручную переслать документы.
Шаг 2: Использование токенов. Если вы опытный разработчик, вы можете извлечь refresh_token из базы 1С и использовать Google OAuth 2.0 Playground или Python-скрипты для скачивания архива писем через Gmail API. Это даст вам время до того момента, пока Google не аннулирует токен (что может случиться при долгой неактивности или попытках сброса пароля).
Шаг 3: Правильное восстановление. Перестаньте запрашивать коды восстановления каждые 5 минут. Это только усиливает подозрения Google. Сделайте паузу в 48 часов, после чего попробуйте инициировать процедуру восстановления, находясь в той же локальной сети (с тем же внешним IP), где работает ваш сервер 1С или основной рабочий компьютер.
Помните, что в случае с Gmail и современными версиями 1С, пароль как таковой внутри базы данных чаще всего отсутствует. Программа оперирует правами доступа, делегированными ей пользователем. Поэтому «вытащить» пароль из 1С не получится — его там просто нет. Основные усилия следует направить на восстановление доступа через инструменты Google, используя максимально привычную для системы «экосистему» (тот же провайдер, то же устройство, тот же город).