Как программно получить логин и пароль интернет-поддержки в 1С:Бухгалтерия 3.0

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

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

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

Проанализируем ситуацию: если вы попытаетесь найти логин или пароль в привычных местах, таких как Константы или Регистры сведений, вы, скорее всего, потерпите неудачу. Ранее использовавшийся регистр УдалитьПараметрыИнтернетПоддержкиПользователей в актуальных версиях программ помечен как устаревший и обычно пуст.

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

Программный интерфейс для получения данных

Для взаимодействия с интернет-поддержкой разработчики должны использовать методы программного интерфейса библиотеки БИП. Рассмотрим основной способ получения полной структуры данных аутентификации.

Разберем по шагам реализацию функции, которая позволит нам вытащить логин и пароль на серверной стороне:


&НаСервере
Функция ПолучитьДанныеАутентификацииНаСервере()
    // Используем стандартный метод библиотеки БИП
    Данные = ИнтернетПоддержкаПользователей.ДанныеАутентификацииПользователяИнтернетПоддержки();
    
    Возврат Данные;
КонецФункции

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

Пример использования в обработке

Посмотрим на пример процедуры, которая выводит данные пользователю (например, для проверки корректности подключения):


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

Важный момент: Работа с безопасным хранилищем возможна только в серверном контексте. При попытке вызвать методы напрямую с клиента программа выдаст ошибку прав доступа.

Альтернативные и специализированные методы

Рассмотрим подробнее дополнительные функции, которые могут быть полезны в различных сценариях автоматизации:

  1. Проверка факта подключения: Если вам не нужен сам логин, а достаточно знать, авторизован ли пользователь, используйте метод ИнтернетПоддержкаПользователей.ПользовательПодключен(). Он возвращает булево значение и работает максимально быстро.
  2. Получение только логина: Для целей лицензирования или логирования удобнее использовать ИнтернетПоддержкаПользователей.ЛогинПользователя(). Этот метод возвращает строку с логином.
  3. Работа с регистрационными номерами: Помните, что к одному логину на портале может быть привязано множество программных продуктов. Для более надежной защиты ваших разработок рекомендуется использовать связку логина и регистрационного номера программы, который можно получить через ОбщегоНазначения.РегистрационныйНомерПрограммы().

Нюансы и ограничения безопасности

Проанализируем технические сложности, с которыми может столкнуться разработчик:

Защита от копирования: Данные в безопасном хранилище привязаны к уникальному идентификатору информационной базы. Если вы скопируете базу (например, создадите копию для тестов), механизм защиты БСП может заблокировать доступ к интернет-поддержке в этой копии до подтверждения пользователем того, что база была перемещена. В этом случае программные методы могут вернуть пустое значение.

Профили безопасности: В облачных сервисах (например, 1С:Фреш) или при использовании строгих профилей безопасности на сервере 1С:Предприятие, доступ к методам ИнтернетПоддержкаПользователей может потребовать явного разрешения в настройках профиля.

Версионность БИП: В самых новых версиях конфигураций (где используется БИП 2.4 и выше) некоторые методы могут быть объявлены устаревшими. Рекомендуется всегда проверять актуальность методов через Синтакс-Помощник или изучать модуль ИнтернетПоддержкаПользователейПереопределяемый.

Использование логина для системы лицензирования

Многие разработчики используют логин интернет-поддержки как уникальный ключ для своих платных обработок. Проанализируем, как это сделать правильно:

  1. Создайте в своей обработке защищенный модуль (с установленным паролем).
  2. При запуске обработки вызывайте процедуру проверки, которая сравнивает текущий логин в базе с разрешенным списком (или проверяет его через ваш внешний веб-сервис).
  3. Предусмотрите кэширование результата проверки. Если у клиента временно пропадет интернет, поддержка может "отвалиться", и ваша обработка перестанет работать, что вызовет негатив. Сохраняйте дату последней успешной проверки в скрытых настройках.

Таким образом, использование штатных средств библиотеки интернет-поддержки позволяет гибко и безопасно работать с данными пользователей портала 1С:ИТС, обеспечивая корректную работу дополнительных сервисов и механизмов защиты программного кода.

← На главную