Как реализовать запрос разрешений при подключении расширения в 1С:Фреш?

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

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

Понимание механизма безопасности в 1С:Фреш

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

Для корректной работы расширения необходимо:

  1. Правильно сформировать манифест расширения.
  2. Использовать методы платформы для проверки и регистрации разрешений.
  3. Учитывать контекст исполнения кода (интерактивный или фоновый).

Реализация запроса разрешений

Вместо бесконечного вывода вопроса пользователю при каждом обращении к стороннему ресурсу, мы должны настроить систему так, чтобы разрешение было получено единожды. Это делается через механизмы работы с профилями безопасности и объектом Безопасность.

Рассмотрим пошагово, как подойти к этой задаче:

Шаг 1. Декларативное описание. При создании расширения важно указать используемые ресурсы в манифесте. Это позволяет платформе при установке расширения корректно сформировать запрос для администратора или пользователя.

Шаг 2. Проверка наличия прав программно. Перед выполнением сетевого запроса используйте методы платформы для проверки прав. Если права отсутствуют, необходимо вызвать механизм запроса разрешений.


// Пример проверки наличия права на использование внешнего ресурса
Если Не Безопасность.ПроверитьРазрешение(ИдентификаторРесурса) Тогда
    // Инициация запроса на предоставление прав
    Безопасность.ЗапроситьРазрешение(ИдентификаторРесурса);
КонецЕсли;

Работа с регламентными заданиями

Многие разработчики совершают ошибку, пытаясь вызвать интерактивное подтверждение внутри регламентного задания. В 1С:Фреш это приведет к ошибке, так как регламентные задания работают в фоновом режиме без участия пользователя.

Правильный подход:

  1. Администратор сервиса или пользователь с соответствующими правами должен предоставить разрешение вручную через настройки безопасности расширения в интерактивном режиме.
  2. Разрешение сохраняется в системе безопасности сервера.
  3. После этого регламентное задание сможет использовать этот ресурс, так как платформа увидит, что право уже было предоставлено ранее.

Использование программного интерфейса расширений

Для выполнения сложных операций расширение должно обладать правом АдминистрированиеРасширенийКонфигурации. Используйте глобальный менеджер РасширенияКонфигурации для анализа того, какие объекты изменены и какие расширения активны в текущем сеансе.

Если вы хотите узнать, принадлежит ли объект текущему расширению, используйте следующий подход:


// Проверка принадлежности объекта к расширению
Если ОбъектыМетаданных.Справочники.Номенклатура.ЕстьИзмененияРасширениямиКонфигурации() Тогда
    // Выполняем логику, специфичную для расширенного объекта
КонецЕсли;

Рекомендации для прохождения аудита

Чтобы успешно пройти аудит в 1С:Фреш, следуйте этим советам:

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

← На главную