Как отключить безопасный режим при открытии внешней обработки в 1С 8.3 под ограниченными правами?

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

В современных версиях платформы 1С:Предприятие 8.3 (начиная с 8.3.9 и выше) разработчики и администраторы часто сталкиваются с ситуацией, когда внешняя обработка, идеально работающая под полными правами, «отказывается» выполнять свои функции под учетной записью обычного пользователя (например, кассира или менеджера). При попытке совершить операцию с файлами, вызвать внешнюю компоненту или выполнить COM-объект система выдает ошибку: «Установлен безопасный режим. Выполнение операции запрещено». Рассмотрим подробно, почему это происходит и как правильно решить эту проблему, соблюдая требования безопасности и логику Библиотеки Стандартных Подсистем (БСП).

Почему возникает блокировка в режиме «Файл — Открыть»

Проанализируем поведение платформы. В 1С 8.3 реализована жесткая политика безопасности: если у пользователя в профиле нет роли АдминистраторСистемы (не путать с просто полными правами), то любая обработка, открытая через стандартное меню Файл — Открыть, принудительно запускается в безопасном режиме. В этом режиме платформа блокирует любые потенциально опасные действия:

  1. Работа с файловой системой (чтение, запись файлов).
  2. Использование COM-объектов.
  3. Загрузка внешних компонент.
  4. Выполнение команд операционной системы.
  5. Работа с интернет-ресурсами.

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

Шаг 1. Описание сведений о внешней обработке

Разберем, как подготовить обработку для корректной работы в составе конфигурации. Для этого в модуле объекта обработки должна присутствовать экспортная функция СведенияОВнешнейОбработке(). Рассмотрим пример заполнения структуры параметров, где мы явно указываем, что безопасный режим должен быть отключен.


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

Шаг 2. Использование механизма разрешений БСП

Просто установить флаг БезопасныйРежим = Ложь в современных конфигурациях (таких как «Розница 2.2» или «Бухгалтерия 3.0») бывает недостаточно. БСП требует явного описания того, какие «опасные» действия планирует совершать обработка. Для этого используется массив Разрешения.

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

Пример добавления разрешения на доступ к каталогу временных файлов:


Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
Разрешения.Добавить(Разрешение);

Шаг 3. Регистрация в справочнике «Дополнительные отчеты и обработки»

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

  1. Зайдем в систему под пользователем с правами Администратор.
  2. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.
  3. Нажмем Добавить из файла и выберем нашу обработку.
  4. При регистрации система проанализирует функцию СведенияОВнешнейОбработке(). Если там указаны разрешения, 1С выведет окно с запросом: «Программа запрашивает разрешения...». Необходимо нажать кнопку Разрешить.
  5. Настроим доступ: укажите разделы интерфейса, где будет видна обработка, и выберите пользователей (например, группу «Кассиры»), которым она будет доступна.

Теперь пользователь (кассир) должен запускать обработку не через «Файл — Открыть», а через соответствующий раздел интерфейса (например, «Сервис» или через кнопку «Дополнительные обработки»). В этом случае система применит настройки безопасности, заданные администратором, и безопасный режим будет либо отключен, либо расширен необходимыми правами.

Как отладить такую обработку под пользователем

Выясним ситуацию: под администратором все работает, а под пользователем при запуске из интерфейса база «падает» или выдает ошибки прав. Отладка внешней обработки, запущенной из справочника, сложнее, чем обычно, так как платформа создает временную копию файла. Рассмотрим эффективный прием:

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

Важный совет: Если вы часто дорабатываете внешнюю обработку, используйте расширение для перехвата момента подключения обработки, чтобы подменять путь к файлу на ваш рабочий исходник. Это позволит избежать постоянного переподключения файла в справочнике «Дополнительные отчеты и обработки» при каждом изменении кода.

Резюме решения

Для успешного обхода ограничений безопасного режима мы должны отказаться от интерактивного открытия файлов через меню «Файл». Вместо этого используем механизм Дополнительных отчетов и обработок, программно описываем необходимые Разрешения в модуле объекта и проходим процедуру одобрения этих разрешений администратором системы. Это единственный штатный и безопасный способ обеспечить работу внешнего кода с правами доступа к ресурсам компьютера в современных конфигурациях 1С.

← На главную