Как программно изменить или удалить логин и пароль интернет-поддержки в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе сопровождения информационных баз 1С возникают ситуации, когда необходимо сбросить или изменить данные авторизации в сервисе интернет-поддержки (ИТС). В типовых конфигурациях, таких как «1С:ERP Управление предприятием», «Комплексная автоматизация» или «Управление торговлей 11», для этого предусмотрена специальная кнопка Отключить в разделе настроек интернет-поддержки. Однако из-за ошибок в правах доступа, особенностей доработки конфигурации или сбоев кэша эта кнопка может исчезнуть из интерфейса. В таких случаях программисту приходится прибегать к программным методам решения задачи.

Разберем подробно, как работает механизм хранения данных авторизации, как правильно извлечь текущие данные и какими методами их можно очистить или перезаписать, используя возможности Библиотеки стандартных подсистем (БСП).

Где и как хранятся данные интернет-поддержки

Данные для входа в ИТС (логин и пароль) не хранятся в обычных реквизитах справочников или константах в открытом виде. Для обеспечения безопасности 1С использует механизм Безопасного хранилища. Это специальная системная таблица, содержимое которой зашифровано. Прямой доступ к ней через консоль запросов невозможен, а чтение данных допустимо только в контексте сервера под пользователем с достаточными правами (обычно это полные права или роль «Администрирование системы»).

Для взаимодействия с этими данными в составе БСП существует подсистема ИнтернетПоддержкаПользователей. Рассмотрим основные шаги по программному управлению этими настройками.

Шаг 1. Получение текущих данных авторизации

Прежде чем что-то удалять, проанализируем текущую ситуацию. Чтобы понять, какие данные сейчас сохранены в базе, мы можем воспользоваться методом программного интерфейса подсистемы. Это полезно для диагностики, например, если вы подозреваете, что в базе сохранен некорректный логин.

Рассмотрим пример кода, который выводит текущий логин и пароль (пароль в целях безопасности обычно возвращается в виде замаскированной строки или не возвращается вовсе в зависимости от версии БСП):


&НаСервере
Процедура ПолучитьДанныеИТСНаСервере()
    
    // Получаем структуру с данными авторизации
    ДанныеАвторизации = ИнтернетПоддержкаПользователей.ДанныеАутентификацииПользователяИнтернетПоддержки();
    
    Если ДанныеАвторизации = Неопределено Тогда
        Сообщить("Данные интернет-поддержки не найдены в базе.");
        Возврат;
    КонецЕсли;
    
    Для Каждого Элемент Из ДанныеАвторизации Цикл
        // Ключи в структуре обычно: "Логин" и "Пароль"
        Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
    КонецЦикла;
    
КонецПроцедуры

Обратите внимание, что метод ДанныеАутентификацииПользователяИнтернетПоддержки() возвращает структуру. Если интернет-поддержка никогда не подключалась, результат будет пустым или вызовет исключение, которое следует обрабатывать через конструкцию Попытка...Исключение.

Шаг 2. Программное удаление данных (сброс подключения)

Если в интерфейсе отсутствует кнопка Отключить, мы можем имитировать ее нажатие программно. Просто записать пустую строку в хранилище недостаточно — это может привести к некорректной работе механизмов проверки подписки. Правильным решением будет полное удаление соответствующих ключей из безопасного хранилища.

Выясним причину, почему это важно: система 1С проверяет само наличие ключа в хранилище. Если ключ существует (даже с пустым значением), система считает, что попытка подключения была произведена. Полное удаление заставляет подсистему перейти в статус «Не подключено».

Для реализации удаления выполним следующий код:


&НаСервере
Процедура ОчиститьДанныеАвторизацииИТС()
    
    // Получаем идентификатор подсистемы, который служит владельцем настроек
    ИдентификаторПодсистемы = ИнтернетПоддержкаПользователей.ИдентификаторПодсистемы();
    
    // Используем общий модуль для работы с безопасным хранилищем
    // Удаляем логин
    ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(ИдентификаторПодсистемы, "Логин");
    
    // Удаляем пароль
    ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(ИдентификаторПодсистемы, "Пароль");
    
    Сообщить("Данные интернет-поддержки успешно удалены из безопасного хранилища.");
    
КонецПроцедуры

После выполнения этого кода при открытии любого сервиса (например, «1С:Контрагент» или «Загрузка курсов валют») программа снова предложит ввести логин и пароль.

Шаг 3. Принудительное обновление (запись новых данных)

Иногда задача стоит иначе: нужно не просто удалить старые данные, а программно прописать новые (например, при массовом развертывании баз или централизованной смене паролей). Для этого в подсистеме предусмотрен высокоуровневый метод, который сам заботится о правильной записи в безопасное хранилище.

Проанализируем пример записи данных:


&НаСервере
Процедура ЗаписатьНовыеДанныеИТС(НовыйЛогин, НовыйПароль)
    
    Попытка
        // Метод выполняет сохранение данных и обновление внутренних флагов системы
        ИнтернетПоддержкаПользователей.СохранитьДанныеАутентификации(НовыйЛогин, НовыйПароль);
        Сообщить("Новые данные авторизации успешно сохранены.");
    Исключение
        ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
        Сообщить("Не удалось сохранить данные: " + ТекстОшибки);
    КонецПопытки;
    
КонецПроцедуры

Использование СохранитьДанныеАутентификации предпочтительнее прямой записи в хранилище через ОбщегоНазначения, так как этот метод гарантирует соблюдение логики БСП и корректное оповещение других модулей о смене учетных данных.

Важные нюансы и решение проблем

Даже при правильном коде вы можете столкнуться с тем, что данные «не сбрасываются» или «не обновляются». Рассмотрим основные причины:

  1. Кэширование сеанса. Подсистема интернет-поддержки кэширует состояние авторизации в рамках текущего сеанса пользователя. Если вы программно удалили данные, но не перезашли в программу, 1С может продолжать считать, что поддержка подключена. Для решения этой проблемы рекомендуется перезапустить сеанс или использовать служебный метод ИнтернетПоддержкаПользователейСлужебный.СброситьКэшНастроекПользователя() (если он доступен в вашей версии конфигурации).
  2. Привилегированный режим. Работа с безопасным хранилищем требует высоких прав. Если вы запускаете обработку под пользователем с ограниченными правами, методы могут не сработать. В этом случае код записи/удаления следует выносить в привилегированный модуль.
  3. Версии БСП. В старых версиях БСП (до 2.4) идентификаторы ключей могли отличаться. Если стандартные "Логин" и "Пароль" не срабатывают, следует изучить содержимое общего модуля ИнтернетПоддержкаПользователей, чтобы найти точные строковые константы, используемые в качестве ключей.

Таким образом, мы рассмотрели комплексный подход к управлению данными интернет-поддержки. Использование методов УдалитьДанныеИзБезопасногоХранилища и СохранитьДанныеАутентификации позволяет гибко управлять подключением к сервисам 1С даже в тех случаях, когда стандартный пользовательский интерфейс оказывается недоступен или работает некорректно.

← На главную