Почему 1С работает с ограничениями и как снять безопасный режим для расширений и обработок
Содержание
Безопасный режим в 1С отключают не кнопкой при запуске программы, а в свойствах того, что работает с ограничениями: у расширения снимают флажок «Безопасный режим» в Администрирование → Печатные формы, отчеты и обработки → Расширения, а у пользователя — флажок «Защита от опасных действий» в Конфигураторе. Отдельного «безопасного запуска», как у Windows, у 1С:Предприятия 8.3 нет.
Частое заблуждение — что 1С «сама перешла в безопасный режим» из-за сбоя и её нужно оттуда «вывести» перезагрузкой. На деле платформа ограничивает конкретный код: расширение, внешнюю обработку , загруженный модуль. База при этом работает штатно. Ниже — как найти, какой из механизмов мешает, и как аккуратно его отключить или настроить.
Что в 1С 8.3 называют безопасным режимом
Под одним названием скрываются три разных механизма. Путают их постоянно, поэтому сначала определите, с каким имеете дело.
| Механизм | Что ограничивает | Где настраивается |
|---|---|---|
| Безопасный режим выполнения кода | Расширения, внешние отчёты и обработки, код через Выполнить() | Свойства расширения, карточка дополнительной обработки, вызов УстановитьБезопасныйРежим() |
| Защита от опасных действий | Открытие внешних файлов, запуск кода, который может навредить базе или компьютеру | Свойства пользователя в Конфигураторе, файл conf.cfg |
| Профили безопасности | Что разрешено коду в безопасном режиме на сервере | Свойства информационной базы в консоли кластера |
В безопасном режиме код не может делать то, что выходит за пределы базы:
- 📁 читать и записывать файлы на диске;
- 🧩 создавать COM-объекты и подключать внешние компоненты;
- 🚀 запускать сторонние программы;
- 🌐 обращаться к интернету и другим серверам;
- 🔓 включать привилегированный режим.
Обычная работа с документами и справочниками внутри базы разрешена. Поэтому расширение с новой печатной формой спокойно работает в безопасном режиме, а обработка загрузки выписки из файла — уже нет.
Почему 1С ограничивает расширения и обработки
Ограничения включаются не случайно. За каждым стоит понятное условие.
- 🧱 Расширение подключено из режима 1С:Предприятие. Типовые конфигурации на библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11 и другие) ставят новому расширению безопасный режим по умолчанию.
- 📄 Внешняя обработка зарегистрирована как дополнительная. Если разработчик не указал, что ей нужен полный доступ, программа запустит её в безопасном режиме.
- 👤 У пользователя включена защита от опасных действий. Тогда при открытии внешнего файла через
Файл → Открытьпоявляется окно «Предупреждение безопасности». - 🖥 Для базы на сервере назначен профиль безопасности. Код в безопасном режиме получит только то, что разрешено в профиле.
- 🧑💻 Код сам включил ограничения. Разработчик вызвал
УстановитьБезопасныйРежим(Истина)перед выполнением чужого или произвольного кода.
Защита от опасных действий появилась в платформе 8.3.9. Поэтому после перехода со старой платформы пользователи часто впервые видят предупреждения на тех же обработках, которые раньше открывались молча.
Как понять, что именно включило безопасный режим
Начните с текста ошибки. Если в нём есть слова «безопасном режиме» и название операции (работа с файлами, создание COM-объекта, подключение внешней компоненты), ограничение пришло от безопасного режима выполнения кода.
Если же при открытии файла появилось окно «Предупреждение безопасности», это защита от опасных действий. Это два разных механизма, и отключаются они по-разному.
Разработчик может проверить состояние прямо в отладчике. В окне вычисления выражения введите БезопасныйРежим(). Функция вернёт Истина, если код в этой точке выполняется с ограничениями. Если безопасный режим включён с профилем, функция вернёт имя профиля строкой.
Как вывести 1С из безопасного режима штатными средствами
Начните со штатных способов. Они не требуют правки файлов и оставляют след в настройках программы.
Расширение конфигурации в режиме 1С:Предприятие
- Войдите в программу пользователем с полными правами.
- Откройте
Администрирование → Печатные формы, отчеты и обработки → Расширения. - Выделите нужное расширение и откройте его.
- Снимите флажок «Безопасный режим».
- Подтвердите действие и перезапустите программу.
Расширение заработает без ограничений после следующего входа. Пользователи, которые сейчас в базе, увидят изменения только после перезапуска своих сеансов.
Расширение без безопасного режима получает доступ к файлам, сети и внешним программам на компьютере и сервере. Снимайте флажок только у расширений из проверенного источника: от своего программиста или поставщика, которому доверяете.
Расширение в Конфигураторе
- Откройте базу в Конфигураторе.
- Перейдите в
Конфигурация → Расширения конфигурации. - Выделите расширение и откройте его свойства.
- Снимите флажок «Безопасный режим». Рядом находится флажок «Защита от опасных действий» — его снимайте, только если расширение выполняет действия, на которые реагирует защита.
Дополнительная обработка или отчёт
Режим работы внешней обработки задаёт сам её код. Разработчик указывает его в функции СведенияОВнешнейОбработке():
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
Если параметр равен Истина или не указан, обработка подключится в безопасном режиме. После изменения кода обработку нужно заново загрузить в карточку в списке Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. При загрузке программа покажет, какие разрешения запрашивает обработка, и попросит их подтвердить.
💡 Если обработку написал сторонний специалист и в ней стоит Истина, а ей нужна работа с файлами — это ошибка разработчика. Просите исправленную версию, а не ищите обход.
Код, который вызывает безопасный режим сам
Программист включает ограничения так:
УстановитьБезопасныйРежим(Истина);
Выполнить(ТекстКода);
Отключить безопасный режим кодом, который сам в нём выполняется, нельзя. Снять ограничение можно только на том уровне, где его установили. Если ошибка возникает внутри такого кода, править нужно место вызова, а не настройки базы.
Отключение защиты от опасных действий: пользователь и файл conf.cfg
Защиту от опасных действий снимают для одного пользователя или сразу для набора баз на компьютере.
Для одного пользователя
- Откройте базу в Конфигураторе.
- Перейдите в
Администрирование → Пользователи. - Откройте нужного пользователя.
- На вкладке «Основные» снимите флажок «Защита от опасных действий».
- Сохраните. Пользователь должен перезайти в программу.
Это правильный путь для бухгалтера, который каждый день открывает проверенные внешние обработки, например загрузку банковской выписки от своего программиста.
Для всех баз на компьютере через conf.cfg
Когда пользователей много, а защита мешает на служебном компьютере (тестовый стенд, сервер обработки обменов), её снимают в файле настроек платформы. Это ручная правка конфигурационного файла, поэтому действуйте аккуратно.
- Закройте все окна 1С на этом компьютере.
- Найдите файл
conf.cfgв каталоге установленной версии платформы:C:\Program Files\1cv8\<номер версии>\bin\conf\conf.cfg. - Сделайте копию файла рядом, например
conf.cfg.bak. - Откройте файл Блокнотом от имени администратора.
- Добавьте строку с параметром и сохраните файл.
DisableUnsafeActionProtection=.*
Значение — регулярное выражение для строки соединения с базой. Запись .* снимает защиту для всех баз. Лучше ограничить её конкретной базой, указав фрагмент строки соединения, например имя базы на сервере:
DisableUnsafeActionProtection=.*ref=buh_test.*
Параметр действует для каждой версии платформы отдельно. После установки новой версии в новый каталог строку придётся добавить заново — иначе предупреждения вернутся.
Отключение защиты для всех баз на рабочем компьютере бухгалтера — плохая идея. Любой присланный по почте файл .epf откроется без вопросов. Для рабочих мест лучше снимать флажок у конкретного пользователя.
Сравнение способов
| Способ | Когда подходит | Риск |
|---|---|---|
| Флажок у расширения | Одно проверенное расширение требует файлов или сети | Низкий, если источник известен |
| Повторная регистрация обработки | Обработка из списка дополнительных требует полного доступа | Низкий, разрешения видны при загрузке |
| Флажок у пользователя | Один пользователь регулярно открывает внешние файлы | Средний: защиты нет во всех его действиях |
conf.cfg | Служебный компьютер, тестовые базы | Высокий для рабочих мест |
Сброс кэша, если настройки не применились
Бывает, что флажок сняли, программу перезапустили, а ограничения остались. Частая причина — клиент взял сведения из старого кэша на компьютере.
Самый простой способ — запустить программу с параметром очистки кэша. В окне запуска выделите базу, нажмите «Изменить», дойдите до последней страницы мастера и впишите в поле дополнительных параметров запуска:
/ClearCache
После одного успешного запуска параметр лучше убрать, иначе каждый вход будет медленнее.
Если не помогло, удалите кэш вручную:
- Закройте все окна 1С у этого пользователя.
- Откройте каталог
%APPDATA%\1C\1cv8, вставив путь в адресную строку Проводника. - Удалите папки с длинными именами из букв и цифр (идентификаторы баз). Файлы
.v8iи папки без такого имени не трогайте. - Повторите то же для каталога
%LOCALAPPDATA%\1C\1cv8.
Удалять кэш безопасно: это временные данные на компьютере, сама база не меняется. Пропадут только сохранённые настройки окон и форм у этого пользователя.
Для базы на сервере сеансы держат расширения в памяти. Если изменение нужно применить сразу у всех, попросите пользователей выйти из программы. Принудительно завершать сеансы через консоль кластера можно, но несохранённые документы при этом потеряются, поэтому делайте это вне рабочего времени.
Как настроить 1С, чтобы безопасный режим не мешал работе
Цель — не отключить защиту везде, а дать полный доступ только тому коду, которому он действительно нужен.
Для серверных баз добавьте профили безопасности. Профиль описывает, какие каталоги, адреса и внешние компоненты разрешены коду в безопасном режиме. Его назначают в свойствах информационной базы в консоли кластера. В свойствах базы есть два поля: профиль безопасности для всей базы и профиль для кода в безопасном режиме. Настраивать их стоит администратору сервера: ошибка в профиле может остановить обмены и печать сразу у всех пользователей.
Типовые конфигурации на БСП умеют сами запрашивать у администратора разрешения для профилей. Когда такая настройка включена, при подключении расширения или обработки программа показывает список нужных ей ресурсов и предлагает их разрешить.
Ошибки, из-за которых ограничения возвращаются
- ❌ Флажок сняли у копии расширения, а работает другое. Если в списке два расширения с похожими именами, проверьте, какое из них активно.
- ❌ Обновили платформу и забыли про conf.cfg. Новая версия читает свой файл, строки из старого каталога она не видит.
- ❌ Обработку открывают через
Файл → Открыть, хотя она зарегистрирована в базе. Внешний файл и зарегистрированная копия — разные вещи, у них разные режимы. - ❌ Защиту сняли у пользователя, а заходят под другим. Особенно часто бывает, когда несколько человек работают под общей учётной записью.
- ❌ Перерегистрировали обработку, но не обновили её у пользователей. Открытые сеансы продолжают работать со старой версией до перезахода.