При разработке собственных расширений, отчетов или обработок для 1С часто возникает задача идентификации конкретного клиента. Одним из наиболее удобных и надежных способов является привязка функционала к логину пользователя на портале 1С:ИТС. В современных редакциях 1С:Бухгалтерия 3.0, построенных на базе Библиотеки стандартных подсистем (БСП) и Библиотеки интернет-поддержки (БИП), механизм хранения этих данных претерпел значительные изменения. В этой статье мы подробно разберем, где физически находятся данные авторизации и как их правильно извлечь программным путем.
Проанализируем ситуацию: если вы попытаетесь найти логин или пароль в привычных местах, таких как Константы или Регистры сведений, вы, скорее всего, потерпите неудачу. Ранее использовавшийся регистр УдалитьПараметрыИнтернетПоддержкиПользователей в актуальных версиях программ помечен как устаревший и обычно пуст.
Выясним причину: фирма «1С» перешла на использование механизма безопасного хранилища данных. Это специальное системное хранилище, данные в котором зашифрованы и привязаны к конкретной информационной базе. Прямого доступа к этим таблицам через консоль запросов не существует. Это сделано для обеспечения безопасности учетных данных пользователей портала 1С:ИТС.
Для взаимодействия с интернет-поддержкой разработчики должны использовать методы программного интерфейса библиотеки БИП. Рассмотрим основной способ получения полной структуры данных аутентификации.
Разберем по шагам реализацию функции, которая позволит нам вытащить логин и пароль на серверной стороне:
&НаСервере
Функция ПолучитьДанныеАутентификацииНаСервере()
// Используем стандартный метод библиотеки БИП
Данные = ИнтернетПоддержкаПользователей.ДанныеАутентификацииПользователяИнтернетПоддержки();
Возврат Данные;
КонецФункции
Метод ДанныеАутентификацииПользователяИнтернетПоддержки() возвращает объект типа Структура, содержащий ключи Логин и Пароль. Если интернет-поддержка в базе не настроена, функция вернет Неопределено или пустую структуру, что необходимо обрабатывать в коде.
Посмотрим на пример процедуры, которая выводит данные пользователю (например, для проверки корректности подключения):
&НаКлиенте
Процедура ПроверитьПодключение(Команда)
ДанныеИнтернетПоддержки = ПолучитьДанныеАутентификацииНаСервере();
Если ТипЗнч(ДанныеИнтернетПоддержки) = Тип("Структура") Тогда
Сообщить("Логин пользователя: " + ДанныеИнтернетПоддержки.Логин);
// Пароль обычно не требуется выводить, но он доступен в ДанныеИнтернетПоддержки.Пароль
Иначе
Сообщить("В данной базе интернет-поддержка не подключена!");
КонецЕсли;
КонецПроцедуры
Важный момент: Работа с безопасным хранилищем возможна только в серверном контексте. При попытке вызвать методы напрямую с клиента программа выдаст ошибку прав доступа.
Рассмотрим подробнее дополнительные функции, которые могут быть полезны в различных сценариях автоматизации:
ИнтернетПоддержкаПользователей.ПользовательПодключен(). Он возвращает булево значение и работает максимально быстро.ИнтернетПоддержкаПользователей.ЛогинПользователя(). Этот метод возвращает строку с логином.ОбщегоНазначения.РегистрационныйНомерПрограммы().Проанализируем технические сложности, с которыми может столкнуться разработчик:
Защита от копирования: Данные в безопасном хранилище привязаны к уникальному идентификатору информационной базы. Если вы скопируете базу (например, создадите копию для тестов), механизм защиты БСП может заблокировать доступ к интернет-поддержке в этой копии до подтверждения пользователем того, что база была перемещена. В этом случае программные методы могут вернуть пустое значение.
Профили безопасности: В облачных сервисах (например, 1С:Фреш) или при использовании строгих профилей безопасности на сервере 1С:Предприятие, доступ к методам ИнтернетПоддержкаПользователей может потребовать явного разрешения в настройках профиля.
Версионность БИП: В самых новых версиях конфигураций (где используется БИП 2.4 и выше) некоторые методы могут быть объявлены устаревшими. Рекомендуется всегда проверять актуальность методов через Синтакс-Помощник или изучать модуль ИнтернетПоддержкаПользователейПереопределяемый.
Многие разработчики используют логин интернет-поддержки как уникальный ключ для своих платных обработок. Проанализируем, как это сделать правильно:
Таким образом, использование штатных средств библиотеки интернет-поддержки позволяет гибко и безопасно работать с данными пользователей портала 1С:ИТС, обеспечивая корректную работу дополнительных сервисов и механизмов защиты программного кода.