Как получить доступ к РС "БезопасноеХранилищеДанных" во внешней обработке и настроить привилегированный режим?

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

Разберем классическую ситуацию, с которой сталкиваются многие разработчики при создании внешних обработок для конфигураций на базе Библиотеки Стандартных Подсистем (БСП), таких как «1С:Бухгалтерия 3.0». Вы создаете обработку для отправки SMS, прописываете параметры регистрации, добавляете необходимые разрешения, но при запуске под пользователем без прав «Администратор» обработка падает с ошибкой доступа к регистру сведений БезопасноеХранилищеДанных.

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


РазрешениеПривилегированныйРежим = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима("Для SMS-рассылки");    
ПараметрыРегистрации.Разрешения.Добавить(РазрешениеПривилегированныйРежим);

А затем в коде самой обработки вручную устанавливает привилегированный режим для чтения настроек:


УстановитьПривилегированныйРежим(Истина);
НастройкиОтправкиSMS = НастройкиОтправкиSMS();
УстановитьПривилегированныйРежим(Ложь);

Однако по факту это не работает: привилегированный режим не устанавливается, и чтение данных завершается ошибкой.

Почему УстановитьПривилегированныйРежим(Истина) игнорируется?

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

Если бы платформа позволяла просто переключиться в привилегированный режим из безопасной "песочницы", это полностью обесценило бы саму суть безопасного режима и профилей безопасности. Следовательно, попытка вручную включить полные права внутри внешней обработки обречена на провал.

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

Как правильно работать с "Безопасным хранилищем данных"

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

Вам не нужно пытаться вручную повышать права или выполнять прямые запросы к регистру. Вместо этого используем готовые прокси-методы из подсистемы «Базовая функциональность»:

  1. ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Ключ) — для чтения данных.
  2. ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Ключ, Данные) — для записи данных.

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

Особенности настройки и отладки

Посмотрим на несколько важных нюансов, которые нужно учитывать при исправлении ошибки:

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

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

← На главную