Расширения конфигурации и ошибка «Установлен безопасный режим. Выполнение операции запрещено»
Если при работе с 1С:Предприятие Вы столкнулись с такой ошибкой — Вам нужно проверить свойство «Безопасный режим», установленное при подключении расширения конфигурации. Давайте рассмотрим вариант проверки этого свойства, который подходит для всех конфигураций. Для перехода к списку расширений Вам нужно открыть панель «Все функции». Подробно как это сделать Вы можете прочитать в статье « Открытие панели «Все функции» в 1С 8 «.
Безопасный режим и привилегированный режим исполнения кода
Наибольшую опасность представляют оператор встроенного языка Выполнить() и встроенная функция Вычислить(). Они позволяют выполнить фрагмент кода, который передается им в качестве строкового значения. Если такой фрагмент кода формируется пользователем, а выполняется на сервере, то это представляет потенциальную угрозу для безопасности системы. В то же время возможность выполнения кода, введенного пользователем, необходима.
Для того чтобы исключить потенциально опасные ситуации в этих случаях, в версии 8.2 реализован безопасный режим работы кода на встроенном языке. Его рекомендуется включать при выполнении потенциально опасного кода на сервере.
Начиная с версии 8.2 в глобальном контексте реализован метод УстановитьБезопасныйРежим(<БезопасныйРежим>), позволяющий включить (истина) или выключить (ложь) безопасный режим, и метод БезопасныйРежим(), позволяющий проверить, включен или выключен безопасный режим.
В безопасном режиме ( значение истина) действуют следующие ограничения:
- привилегированный режим отменяется, если он был установлен,
- попытки перейти в привилегированный режим игнорируются,
- запрещены операции с COM-объектами,
- запрещена загрузка и подключение внешних компонентов,
- запрещен доступ к файловой системе, кроме временных файлов,
- запрещен доступ к Интернету.
Работа расширения в безопасном режиме
Если при старте «1С:Предприятия» ваше расширение успешно применилось к конфигурации, это еще не гарантия того, что все расширяющие методы, которые находятся в расширении, будут выполняться. Это связано с безопасностью.
В обычном режиме исполнения встроенного языка будут расширяться все методы конфигурации – и клиентские, и серверные.
Если же прикладное решение работает в файловом варианте (как в нашем случае) или в клиент-серверном варианте без профилей безопасности, то при применении расширения в безопасном режиме исполнения встроенного языка будут расширяться только клиентские методы и серверные обработчики форм, которые установлены через панель свойств. К остальным серверным методам (в т. ч. и к аннотированным серверным методам модулей) расширение применяться не будет.
Стандартно расширение создается с установленным флажком Безопасный режим :
Рис 1. Установка безопасного
режима в свойствах расширения
Но в режиме 1С:Предприятие при открытии, например, формы элемента справочника, в модуле которого создан расширяющий метод, появится всплывающее окно с сообщением об ошибке расширения модуля объекта справочника. Чтобы увидеть более подробное сообщение, нужно нажать на это всплывающее окно или на гиперссылку Информация для технической поддержки в окне информации о программе:
Рис 2 Сообщение об ошибке расширения модуля объекта в режиме «1С:Предприятие»
Из сообщения видно, что расширение применено к конфигурации, но та часть, которая отвечает за расширение модуля, работать не будет. Причина ошибки в том, что расширение применено к конфигурации в безопасном режиме.
Чтобы расширение модуля заработало, нужно снять у него флажок Безопасный режим в списке расширений.
Если же ваше прикладное решение работает в клиент-серверном варианте, то возможность расширения серверных модулей регулируется профилем безопасности. Имя профиля безопасности задается здесь же, в списке расширений, в колонке Безопасный режим, имя профиля безопасности (см. рис.1). В самом профиле безопасности вы можете или разрешить расширение для всех серверных модулей, а исключения перечислить в свойстве Недоступные для расширения модули, или просто перечислить все разрешенные расширения модулей в свойстве Доступные для расширения модули.
Рекомендации по подготовке расширений конфигурации, дополнительных отчетов и обработок

1. Рекомендации по подготовке расширений конфигурации
1.1. Основные причины отказа
Большинство расширений конфигурации не проходят аудит по следующим причинам:
- Расширение не предназначено для выполнения в безопасном режиме.
- Расширение не подготовлено к использованию в сервисе.
- Не задана версия расширения.
1.2. Особенности расширений конфигурации
- У расширения должны быть заданы уникальное имя и версия расширения.
- Разработка должна выполняться на той же версии платформы.
- Необходима адаптация к безопасному режиму и режиму разделения данных.
1.3. Полезная информация
- Необходимо выполнять требования, указанные в Руководстве разработчика «1С:Предприятия 8.3»: глава «Расширение конфигурации» (см. по ссылке).
- Если расширение содержит формы, разработчик должен обеспечить их работоспособность в веб-клиенте под всеми веб-браузерами, поддерживаемыми технологической платформой «1С:Предприятие 8».
2. Рекомендации по подготовке дополнительных отчетов и обработок
2.1. Основные причины отказа
90% дополнительных отчетов и обработок не проходят аудит по следующим причинам:
- Неправильное подключение дополнительного отчета/обработки к БСП.
- Дополнительный отчет или обработка не предназначены для выполнения в безопасном режиме.
- Дополнительный отчет или обработка не подготовлены к использованию в сервисе.
- Неверное обращение к дополнительному отчету/обработке из кода.
2.2. Подключение дополнительного отчета/обработки к БСП
Регистрация дополнительного отчета или обработки в информационной базе происходит на основании параметров регистрации, которые поставляет отчет/обработка. Эти параметры регистрации должны формироваться в виде структуры как результат выполнения функции СведенияОВнешнейОбработке модуля отчета/обработки:

Описание полей структуры параметров регистрации приведено в документации БСП по ссылке.
Параметры регистрации включают таблицу команд, поставляемых дополнительным отчетом (дополнительной обработкой):
- для глобальных дополнительных отчетов/обработок эти команды размещаются в глобальном командном интерфейсе;
- для назначаемых дополнительных отчетов/обработок эти команды размещаются в контексте тех объектов, для которых они предназначаются, при этом в параметрах регистрации дополнительного отчета/обработки должны быть указаны объекты назначения (массив строк имен объектов метаданных).
Вид дополнительного отчета/обработки, тип использования поставляемых команд должен соответствовать замыслу дополнительного отчета/обработки.
2.3. Обращение к дополнительному отчету/обработке из кода
Следует учесть, что нельзя обращаться к дополнительному отчету/обработке по имени, например:
Дополнительный отчет/обработка подключается информационной базе с другим именем (уникальным идентификатором). Поэтому для формирования обращения к дополнительному отчету/обработке следует в обработчике ПриСозданииНаСервере определить полное имя подключенного отчета/обработки следующим образом:
И далее обращаться к дополнительному отчету/обработке следующим образом:
2.4. Отладка дополнительного отчета/обработки
При отладке дополнительного отчета или обработки открывайте его не через главное меню: Файл — Открыть , а через интерфейс подсистемы дополнительных отчетов и обработок БСП.
Открывайте и проверяйте обработку не c правами администратора, а с набором прав тех пользователей, которые будут использовать обработку.
3. Как использовать методы, запрещенные в безопасном режиме
3.1. Безопасный режим
Все расширения конфигурации, дополнительные отчеты/обработки выполняются в сервисе в безопасном режиме с использованием профилей безопасности.
В безопасном режиме запрещены следующие операции:
- Выполнение методов Выполнить() и Вычислить()
- Привилегированный режим
- Работа с внешними компонентами
- Работа с файловой системой, кроме временных файлов
- Работа с приложениями операционной системы
- COM-объекты (серверный код может выполняться на Linux, мы не можем гарантировать наличие COM-объектов на сервере)
- Доступ к Интернету и др.
Подробнее о безопасном режиме можно прочесть в документации по «1С:Предприятию» по ссылке.
3.2. Профили безопасности
Некоторые действия, запрещенные в безопасном режиме, могут быть разрешены с помощью профилей безопасности.
Профиль безопасности — это набор явно заданных разрешений на выполнение определенных действий, который можно назначать информационным базам, расширениям конфигурации, дополнительным отчетам и обработкам. Профили безопасности хранятся в кластере серверов «1С:Предприятия».
Профили безопасности автоматически формируются (при необходимости) для расширений конфигурации, дополнительных отчетов и обработок, загружаемых в сервис:
- для расширений конфигурации — на основании запросов разрешений на выполнение небезопасных действий, указанных при загрузке расширения в сервис, а также результатов автоматической проверки расширения конфигурации;
- для дополнительных отчетов и обработок конфигурации — на основании запросов разрешений на выполнение небезопасных действий, указанных в функции СведенияОВнешнейОбработке дополнительного отчета или обработки.
Подробнее о профилях безопасности можно прочесть в документации по «1С:Предприятию» по ссылке и в разделах Профили безопасности глав «Настройка и использование подсистем при разработке конфигурации» и «Программный интерфейс» документации Библиотеки стандартных подсистем (БСП), см. здесь и здесь.
3.3. Какие небезопасные методы можно, и какие нельзя использовать
В расширениях конфигурации, дополнительных отчетах и обработках, предназначенных для использования в сервисе, можно использовать следующие небезопасные операции:
- доступ к каталогу временных файлов (на чтение и/или на запись);
- доступ к интернет-ресурсам;
- привилегированный режим;
- доступ к внешним компонентам, входящим в состав конфигурации, для которой разработаны расширение конфигурации, дополнительный отчет или обработка.
- доступ к файловой системе (кроме доступа к каталогу временных файлов);
- доступ к COM-объектам (поскольку серверный код может выполняться на Linux, мы не можем гарантировать наличие COM-объектов на сервере);
- доступ к внешним компонентам, не входящим в состав конфигурации, для которой разработаны расширение конфигурации, дополнительный отчет или обработка;
- приложения операционной системы;
- средства криптографии на стороне сервера.
Учтите, что небезопасные операции запрещены только на сервере!
3.4. Запрос разрешений для расширений конфигурации
Если в расширении конфигурации используются операции, не разрешенные в безопасном режиме, то при загрузке версии расширения в сервис необходимо указать необходимые разрешения на выполнение небезопасных операций (подробнее см. в статье по ссылке):

Разрешения на доступ к внешним компонентам, входящим в состав конфигурации, запрашивать не надо, они будут предоставлены автоматически.
3.5. Запрос разрешений для дополнительных отчетов и обработок
При необходимости использования в дополнительном отчете или обработке операций, не разрешенных в безопасном режиме:
-
Запрашивайте в функции СведенияОВнешнейОбработке дополнительного отчета или обработки нужные разрешения с помощью вызовов функций:
4. Вопросы производительности
Расширения конфигурации, дополнительные отчеты и обработки не должны вызывать деградацию производительности сервиса. Поэтому используемые запросы на встроенном языке должны быть оптимально построены и соответствовать стандартам (подробнее см. здесь и здесь). Типичные причины неоптимальной работы запросов и методы оптимизации запросов рассмотрены в статье 1С:ИТС по ссылке.
Особое внимание следует уделить оптимизации:
- соединений с виртуальными таблицами, подзапросами (они могут привести к значительному замедлению запроса);
- отборов с «ИЛИ»;
- запросов с получением данных через точку от полей составного ссылочного типа (при выполнении такого запроса будет выполняться соединение со всеми таблицами объектов, входящими в составной тип).
Частые формулировки отказа: “Запрос построен неоптимально. Необходимо руководствоваться рекомендациями https://its.1c.ru/db/metod8dev/content/5842/hdoc”
При написании расширения конфигурации, дополнительного отчета и обработки необходимо избегать кода, выполнение которого может привести к неоправданно повышенному потреблению процессорного времени. В первую очередь это касается «пустых» циклов:

5. Универсальные обработки и расширения
Следует избегать универсальных расширений конфигурации, дополнительных обработок, особенно если они могут изменять данные пользователей. Следует создавать расширения и обработки, направленные на решение конкретных задач. Универсальные расширения и обработки опасны по следующим причинам:
- для их использования может быть необходим высокий уровень квалификации пользователей, а его гарантировать невозможно;
- пользователь может изменить реквизиты служебных объектов или объектов, которые он не собирался менять;
- возможно нарушение бизнес-логики прикладного решения.
Частые формулировки отказа: “Мы не можем разрешить использование универсальных обработок, так как их применение предполагает высокий уровень квалификации пользователей, а гарантировать эту квалификацию невозможно”
6. Использование временных файлов
При доступе к временным файлам необходимо следовать требованиям стандартов, описанным по ссылке. В частности, неправильно писать:
- гарантируется уникальность имени временного файла;
- выполняется автоматическая очистка при рестарте рабочего процесса.
Также необходимо обеспечить удаление временных файлов после использования.
Частые формулировки отказа: “Для получения имени временного файла необходимо использовать метод ПолучитьИмяВременногоФайла(); Необходимо удалять временные файлы после использования”.
7. Прочие вопросы
При разработке расширений конфигурации, дополнительных отчетов и обработок необходимо учитывать следующие требования.
- Длительные операции необходимо выполнять в фоновом режиме.
- Если пользовательские данные покидают сервис, то пользователь должен дать на это согласие.
- Не должна нарушаться штатная логика работы прикладных решений (конфигураций). Не следует отключать штатные механизмы и проверки, например с помощью конструкций вида:
Как подключить расширение конфигурации
Установка расширений выполняется пользователем с полными правами (с правами администратора).
Необходимо скачать и распаковать архив с расширением.
Расширение можно установить двумя способами:
- В пользовательском режиме.
- Через конфигуратор.
Установка расширений в пользовательском режиме
Пункт меню НСИ и администрирование -> Печатные формы, отчеты и обработки -> Расширения :


По одноименной ссылке открывается окно, в котором отображаются все установленные в базу расширения.

Нажать кнопку Добавить из файла -> Предупреждение безопасности_ Продолжить:

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

- УТ – Управление торговлей
- КА – Комплексная автоматизация
- ERP – Управление предприятием
- УНФ – Управление нашей фирмой
- БП – Бухгалтерия предприятия
В скобках может быть указана версия конфигурации:

После загрузки файла открывается окно:

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

Установка расширений через конфигуратор
Необходимо скачать и распаковать архив с расширением.
Конфигурация –> Расширения конфигурации –> Создать –> Ок:


Создано пустое расширение. Выделить его:

Конфигурация –> Загрузить конфигурацию из файла:

Выбрать нужный файл:



Снять галки Безопасный режим и Защита от опасных действий. Запустить отладку. Программа откроется в пользовательском режиме.

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

Вас интересуют дополнительные функции,
модули, индивидуальные разработки?