Почему 1С спрашивает «открыть файл?» перед каждой внешней обработкой и как это прекратить
Содержание
Чтобы убрать предупреждение безопасности 1С при открытии внешней обработки, снимите у пользователя флаг «Защита от опасных действий»: Конфигуратор → Администрирование → Пользователи → карточка пользователя → вкладка «Основные». После перезапуска сеанса окно перестанет появляться для этого пользователя. Второй путь — параметр DisableUnsafeActionProtection в файле conf.cfg на компьютере, он отключает проверку сразу для выбранных баз.
Ещё лучше для рабочей базы — зарегистрировать обработку в справочнике дополнительных отчётов и обработок. Тогда защиту выключать не нужно вовсе: файл открывается из базы, без запроса, а для остальных файлов с диска предупреждение остаётся.
Откуда берётся окно «Предупреждение безопасности»
Это не ошибка и не вирус. Механизм называется «защита от опасных действий» и встроен в платформу 1С:Предприятие начиная с версии 8.3.9. Он срабатывает, когда пользователь открывает из файла то, что содержит программный код:
- 📄 внешнюю обработку
.epfчерез меню «Файл → Открыть»; - 📊 внешний отчёт
.erfтем же способом; - 🧩 программный код, подключаемый из файла без безопасного режима.
Платформа не знает, кто написал файл. Внешняя обработка выполняется с правами пользователя: может удалить документы, выгрузить справочник контрагентов, отправить данные по сети. Поэтому перед запуском 1С спрашивает подтверждение. Ответ «Да» открывает файл, «Нет» — отменяет.
Защита включается у пользователя по умолчанию. Если базу обновили с платформы ниже 8.3.9, у старых пользователей флаг тоже может оказаться включённым, поэтому окно «внезапно» появляется после обновления платформы.
Отличайте это окно от сообщения «Нарушение прав доступа!». Предупреждение безопасности — вопрос с кнопками «Да/Нет», файл всё равно можно открыть. Нарушение прав — запрет: у пользователя нет права на интерактивное открытие внешних обработок, и флаг защиты тут ни при чём.
Подпись файла, «недоверенный издатель» и каталог extensions
Многие ищут, как подписать обработку сертификатом или положить её в «доверенную папку», чтобы 1С перестала ругаться. Так это не работает .
Что важно знать про проверку файла:
- 🔏 платформа 1С не проверяет цифровую подпись файлов
.epfи.erf. Подписан файл или нет — окно появится одинаково; - 📁 доверенного каталога для внешних обработок нет. Перенос файла в другую папку, на сетевой диск или в каталог с названием extensions ничего не меняет;
- 🪟 сообщение Windows «Не удаётся проверить издателя» — другая история. Его показывает проводник для файлов, скачанных из интернета, ещё до запуска 1С.
Последний случай лечится средствами Windows. Откройте свойства файла в проводнике и на вкладке «Общие» поставьте галочку «Разблокировать» внизу окна. Отметка «файл получен из интернета» снимется, и проводник перестанет спрашивать.
Свою подпись внешних обработок поддерживают отдельные конфигурации и сервисы обмена обработками, но это их механизм, а не платформенный. На окно «Предупреждение безопасности» он не влияет.
Способ 1. Флаг «Защита от опасных действий» у пользователя
Самый прямой способ. Действует для одного пользователя во всех его сеансах, на любом компьютере.
- Запустите базу в режиме Конфигуратор под администратором.
- Откройте
Администрирование → Пользователи. - Дважды щёлкните нужного пользователя.
- На вкладке «Основные» снимите флаг «Защита от опасных действий».
- Нажмите «ОК».
- Пользователь закрывает 1С и входит заново.
Конфигуратор можно не закрывать и монопольный режим не нужен: список пользователей правится при работающих сеансах. Изменение подхватится при следующем входе пользователя.
Если в базе используется подсистема управления пользователями из типовой конфигурации, список пользователей ведётся в режиме «Предприятие». Правка флага в Конфигураторе на работу подсистемы не влияет: другие свойства пользователя (имя, роли, пароль) там менять не стоит, только этот флаг.
Когда так делать не нужно
Отключать защиту всем подряд — плохая идея. Окно — последний рубеж перед запуском чужого кода. Бухгалтер, которому прислали «обработку для сверки» по почте, без предупреждения откроет её одним кликом.
Разумная схема для офиса:
| Кто | Защита | Почему |
|---|---|---|
| Администратор, программист | Отключена | Открывает обработки десятки раз в день, сам их проверяет |
| Бухгалтер, кладовщик | Включена | Пользуется только зарегистрированными обработками |
| Технический пользователь для обменов и регламентов | Отключена | Окно в фоновом сеансе всё равно некому подтверждать |
Способ 2. Параметр DisableUnsafeActionProtection в conf.cfg
Этот способ работает на уровне компьютера, а не пользователя. Удобен, когда в базе сотня пользователей, а обработки открывают только с двух-трёх рабочих мест, или когда список пользователей трогать нельзя.
Файл общих настроек платформы лежит здесь:
C:\Program Files\1cv8\conf\conf.cfg
Для 32-разрядной платформы на 64-разрядной Windows — в C:\Program Files (x86)\1cv8\conf\. Откройте его Блокнотом от имени администратора и добавьте строку:
DisableUnsafeActionProtection=.*
Значение — регулярное выражение для строки соединения с базой. Вариант .* снимает защиту для всех баз на этом компьютере. Чтобы ограничить одной базой, впишите фрагмент её строки соединения:
DisableUnsafeActionProtection=.*srv1c.*buh_main.*
Несколько выражений перечисляются через точку с запятой. Строку соединения базы видно в окне запуска 1С: выделите базу и посмотрите путь внизу списка, например Srvr="srv1c";Ref="buh_main"; или File="D:\Bases\Buh";.
Правило применяется после перезапуска клиента 1С. Сеанс, открытый до правки, продолжит спрашивать.
В каталоге каждой версии платформы (...\1cv8\8.3.xx.xxxx\bin\conf\) тоже есть conf.cfg. Обычно он только ссылается на общий файл строкой ConfLocation, поэтому правьте общий. Тогда настройка переживёт обновление платформы.
Параметр отключает защиту для всех пользователей, работающих на этом компьютере. На терминальном сервере это значит — для всех сотрудников, которые на него заходят. Там лучше пользоваться способом 1 или 3.
Способ 3. Регистрация обработки в базе вместо отключения защиты
Это правильный способ для рабочей базы. Обработку один раз проверяет и добавляет администратор, а пользователи запускают её из меню программы, без файла на диске и без предупреждения.
В Бухгалтерии предприятия 3.0, ЗУП 3.1 и других конфигурациях на библиотеке стандартных подсистем:
- Включите опцию:
Администрирование → Печатные формы, отчеты и обработки→ флаг «Дополнительные отчеты и обработки». - Перейдите по ссылке «Дополнительные отчеты и обработки» в том же разделе.
- Нажмите «Добавить из файла» и выберите
.epfили.erf. - Укажите разделы и пользователей, которым обработка будет доступна.
- Запишите элемент.
Обработка появится в разделе, который вы выбрали, в группе дополнительных обработок. Конфигурация подключает её из базы сама и не задаёт пользователю вопрос безопасности.
Есть ограничение: так добавляются только обработки, подготовленные под этот механизм. Внутри должна быть экспортная функция СведенияОВнешнейОбработке() в модуле объекта. Если её нет, при добавлении программа сообщит, что обработка несовместима. Тогда попросите разработчика доработать файл — это небольшая правка, а не переписывание.
Обработкам, которые работают в безопасном режиме, конфигурация может не давать доступа к файлам и интернету. Если обработке это нужно, при регистрации появится запрос разрешений, его подтверждает администратор.
Права на открытие внешних обработок в группах доступа
Предупреждение безопасности тесно связано с правами. Если право на интерактивное открытие внешних обработок пользователю не выдано, он увидит не предупреждение, а запрет. Иногда администраторы путают одно с другим и выдают лишние права, пытаясь убрать окно.
В платформе есть два отдельных права:
- 🔑
ИнтерактивноеОткрытиеВнешнихОбработок; - 🔑
ИнтерактивноеОткрытиеВнешнихОтчетов.
В типовых конфигурациях на БСП их собирает роль «Интерактивное открытие внешних отчетов и обработок». Её выдают через профиль группы доступа: Администрирование → Настройки пользователей и прав → Группы доступа, затем профиль, в котором отмечена эта роль, и состав участников группы.
Как это работает вместе с защитой:
| Право на открытие | Флаг защиты | Что видит пользователь |
|---|---|---|
| Нет | Любой | Сообщение о нарушении прав, файл не откроется |
| Есть | Включён | Окно «Предупреждение безопасности», после «Да» файл откроется |
| Есть | Снят | Файл открывается сразу |
Для рядовых пользователей хороший вариант — не давать право на открытие из файла вовсе и пользоваться способом 3. Зарегистрированные обработки этого права не требуют.
Реестр Windows и параметры запуска: что не поможет
Защита от опасных действий не хранится в реестре Windows. Ключей вида HKEY_CURRENT_USER\Software\1C\..., которые её отключают, нет. Советы «удалите ветку 1С в реестре» в лучшем случае ничего не дадут, в худшем — сбросят настройки списка баз.
Параметра командной строки 1cv8, отключающего защиту, тоже нет. Ярлык с ключом /Execute запускает обработку при старте, но сам защиту не выключает: управляют ею по-прежнему флаг пользователя и conf.cfg.
Кэш тут тоже ни при чём. Очистка %APPDATA%\1C\1cv8 или запуск с /ClearCache окно не уберут. Это настройка пользователя или компьютера, а не временные файлы.
Рабочие точки управления, по сути, три:
| Где | Действует на | Кто меняет |
|---|---|---|
| Карточка пользователя ИБ | Одного пользователя на всех компьютерах | Администратор базы |
conf.cfg | Все базы или выбранные базы на одном компьютере | Администратор Windows |
| Регистрация обработки | Одну обработку для выбранных пользователей | Администратор базы |
Массовая настройка: код и развёртывание conf.cfg
Внешние компоненты для обхода защиты не нужны и опасны: компонента, которая «гасит» окно, сама по себе внешний код с правами пользователя. Автоматизировать стоит легальные способы.
Снять флаг у группы пользователей кодом
Платформа даёт доступ к свойству через объект пользователя информационной базы. Пример для внешней обработки, которую запускает администратор. Код выполняется на сервере, в процедуре с директивой &НаСервере:
ИменаПользователей = Новый Массив;
ИменаПользователей.Добавить("Обмен");
ИменаПользователей.Добавить("Иванов");
Для Каждого Имя Из ИменаПользователей Цикл
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Имя);
Если ПользовательИБ = Неопределено Тогда
Сообщить("Не найден пользователь: " + Имя);
Продолжить;
КонецЕсли;
Защита = Новый ОписаниеЗащитыОтОпасныхДействий;
Защита.ПредупреждатьОбОпасныхДействиях = Ложь;
ПользовательИБ.ЗащитаОтОпасныхДействий = Защита;
ПользовательИБ.Записать();
Сообщить("Защита снята: " + Имя);
КонецЦикла;
Для записи нужно право «Администрирование». Чтобы вернуть защиту, тот же код с Истина. Список имён держите явным: перебор всех пользователей подряд снимет защиту и у тех, кому она нужна.
Разложить conf.cfg по рабочим местам
Когда обработки открывают на десятке компьютеров, строку в conf.cfg добавляют скриптом через групповую политику или вручную по списку машин. Пример .bat, который дописывает строку один раз:
@echo off
set CFG=C:\Program Files\1cv8\conf\conf.cfg
findstr /i "DisableUnsafeActionProtection" "%CFG%" >nul
if errorlevel 1 (
echo DisableUnsafeActionProtection=.*srv1c.*buh_main.*>>"%CFG%"
)
Скрипт запускается с правами администратора Windows, иначе запись в Program Files будет запрещена. Пользователям, у которых 1С уже открыта, нужно перезапустить клиент
.