Отключение безопасного режима открытия обработки.
Галка "Защита от опасных действий" у пользователя снята, права у пользователя не полные — это кассир.
Обработка опубликована без безопасного режима. Открывается через публикацию. После очередного обновления запуск обработки приводит к аварийному завершению работы платформы.
Решил протестировать — открывая обработку через меню Файл\открыть.
При открытии обработки выходит ошибка:
<ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXMLРозница.Форма.Форма.Форма(31)>: Ошибка при вызове конструктора (Файл)
Файл = Новый Файл(ИмяФайлаВыгрузки);
по причине:
Установлен безопасный режим. Выполнение операции запрещено
Как отключить этот безопасный режим?
В модуле обработке
Должно быть что-то типа
(5) причем тут права?
Подключаете к отладке своего пользователя
Открываете файл, смотрите
(3) смотря какие права у пользователя
(2) у меня видимо старое бсп, нет такого
(11) она не открывается, пишет нарушение прав или ошибку, которая в (0)?
Если нарушение прав — у него прав нет на интерактивное открытие обработок значит
Если как в 0, то уже на этом этапе можно подключить отладку
(0) Конечно то, что в (0), ты вообще читал?
И что даст откладка на том моменте, который описан в (0) — там все ОК, просто в безопасном режиме половина действий не работает — там нечего отлаживать
(13) в ПриСозданииНаСервере
УстановитьБезопасныйРежим(Ложь);
И отладкой посмотри значение БезопасныйРежим()
<ВнешняяОбработка.ВыгрузкаЗагрузкаДанныхXMLРозница.Форма.Форма.Форма(14)>: Ошибка при вызове метода контекста (УстановитьБезопасныйРежим)
УстановитьБезопасныйРежим(Ложь);
по причине:
В данной процедуре/ функции не был установлен безопасный режим
Вот так "решилась" проблема:
1) Изменил в конфигураторе имя обработки
2) Скопировал основную форму, назначил ее основной формой.
Вуаля, пользователем открывается.
Т.о. где-то в конфигурации хранится список обработок с безопасным режимом открытия.
Вопрос: "где?"
Функция СведенияОВнешнейОбработке() Экспорт
// Создадим структуру для возврата
параметрыРегистрации_ = Новый Структура("Вид,Назначение,Наименование,Версия,БезопасныйРежим,Информация,Команды,ВерсияБСП");
параметрыРегистрации_.Вид = "ДополнительнаяОбработка";
параметрыРегистрации_.Назначение = "";
параметрыРегистрации_.Наименование = "Обмен данных между магазинами";
параметрыРегистрации_.Версия = "1.0";
параметрыРегистрации_.БезопасныйРежим = Ложь;
параметрыРегистрации_.Информация = "Обработка выгружает / загружает данные";
//параметрыРегистрации_.ВерсияБСП = "2.4.1.84";
ДобавитьКоманду(ТаблицаКоманд,
НСтр("ru = ‘Обмен данных между магазинами’"),
"ОткрытьОбработкуОбменаДаннымиМеждуМагазинами",
"ОткрытиеФормы");
// Вернем структуру
Возврат параметрыРегистрации_;
(18) проблема такая у всех присутствует.
Попробуй, например в Бухгалтерии 3.0 пользователю с правами Бухгалтер, Открытие внешних отчетов и обработок открыть обработку, в которой в ПриСозданийНаСервере будет поиск файлов (например как ниже) и все — та же ошибка про безопасный режим
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
найденныеФайлы_ = НайтиФайлы(ОбщегоНазначенияКлиентСервер.КаталогФайловойИнформационнойБазы(), "НужныйФайл.txt");
Если найденныеФайлы_.Количество() = 0 Тогда
Иначе
КонецЕсли;
Исправляем Установлен безопасный режим. Выполнение операции запрещено для внешней обработки
1С с выходом новых платформ и типовых конфигураций добавляет все новые механизмы для обеспечения безопасности в работе пользователей. Разработчикам, в свою очередь, требуется принять новые правила безопасности и доработать свои типовые решения. В этой записи мы разберем причины предупреждения «Установлен безопасный режим. Выполнение операции запрещено» и возможные пути по исправлению поведения.
- Отключение безопасного режима в интерфейсе
- Отключение безопасного режима при проектировании внешней обработки (печатной формы)
Отключение безопасного режима в интерфейсе
Если у Вас перестала запускаться внешняя обработка с сообщением о безопасном режиме, в первую очередь проверьте свойство «Защита от опасных действий» для пользователя, под которым выполняется запуск внешней обработки:

Если Вы доверяете поставщику внешней обработки — Вы можете отключить защиту от опасных действий. Дело в том, что определенный функционал внешней обработки или отчета может требовать отключения безопасного режима (подключение через Com-соединение к Excel, получение данных из сети). Именно поэтому возможна ситуация, когда необходимо будет отключить защиту для определенного пользователя.
Еще одна возможная ситуация — внешняя обработка перестала запускаться по расписанию с сообщениями об установленном безопасном режиме. Чтобы дать возможность нормально работать такой обработке — для регламентного задания нужно выбрать пользователя с полными правами (и отключенной защитой от опасных действий). Для этого переходим в регламентные задания (Администрирование => Обслуживание => Регламентные и фоновые задания). В списке регламентных заданий находим нужное регламентное задание по шаблону: Дополнительная обработка: Имя обработки.
1с установлен безопасный режим. Отключаем ошибку.

Чаще всего можно столкнуться с ошибкой в 1с «установлен безопасный режим» при подключении или обновлении внешней дополнительной обработки. Задача решается за 2-3 минуты.
Для начала, разберемся в природе самой ошибки.
Причина
Вспоминаем, что в 1С Предприятии существует безопасный режим исполнения программного кода. В таком режиме изначально запускаются все внешние отчеты и обработки для безопасного выполнения кода. Если уверены, что обработка чиста от вредоносного кода, то смело отключаем безопасный режим в 1С.
Решение
Необходимо отключить безопасный режим для нашей обработки, в режиме предприятия.
Шаг 1
Прежде всего, необходимо открыть раздел «Все функции». Примечательно, что в последних версиях раздел может называться «функции для технического специалиста». Далее мы открываем обработку «Групповое изменение реквизитов«.

Шаг 2
В обработке выбираем, что будет изменять — Дополнительные отчеты и обработки. Открываем «Все элементы» и устанавливаем отбор нашей обработки. Условие отбора — имя обработки.

Шаг 3
Включаем служебные реквизиты. Для этого переходим в раздел «Дополнительные параметры», открываем Специальные возможности и устанавливаем галку «показывать служебные реквизиты».
Шаг 4
Теперь реквизит «Безопасный режим». Устанавливаем значение «Нет» и подтверждаем действие — нижний угол экрана «Изменить реквизиты». Готово! Таким образом мы убрали ошибку в 1С Установлен безопасный режим.

В результате должно появиться уведомление, что реквизиты были изменены. Осталось перезапустить обработку.
Безопасный режим работы
В случае необходимости использования на сервере «ненадежного» программного кода: внешние обработки или программный код, вводимый пользователем для использования в методах Выполнить() и Вычислить(), можно воспользоваться безопасным режимом работы.
В безопасном режиме:
- Привилегированный режим отменяется.
- Переход в привилегированный режим игнорируется.
- Запрещены операции, приводящие к использованию внешних средств по отношению к платформе «1С:Предприятие» (включая неблокирующие аналоги указанных методов):
- Механизмы COM:
- COMОбъект();
- ПолучитьCOMОбъект();
- ОболочкаHTMLДокумента.ПолучитьCOMОбъект().
- Загрузка внешних компонентов:
- ЗагрузитьВнешнююКомпоненту();
- ПодключитьВнешнююКомпоненту().
- ЗначениеВФайл();
- КопироватьФайл();
- ОбъединитьФайлы();
- ПереместитьФайл();
- РазделитьФайл();
- СоздатьКаталог();
- УдалитьФайлы();
- Новый Файл;
- Новый xBase;
- ЗаписьHTML.ОткрытьФайл();
- ЧтениеHTML.ОткрытьФайл();
- ЧтениеXML.ОткрытьФайл();
- ЗаписьXML.ОткрытьФайл();
- ЧтениеFastInfoset.ОткрытьФайл();
- ЗаписьFastInfoset.ОткрытьФайл();
- КаноническаяЗаписьXML.ОткрытьФайл();
- ПреобразованиеXSL.ЗагрузитьИзФайла();
- ЗаписьZipФайла.Открыть();
- ЧтениеZipФайла.Открыть();
- Новый ЧтениеТекста(), если первый параметр ‑ строка;
- ЧтениеТекста.Открыть(), если первый параметр ‑ строка;
- Новый ЗаписьТекста(), если первый параметр ‑ строка;
- ЗаписьТекста.Открыть(), если первый параметр ‑ строка;
- Новый ИзвлечениеТекста();
- изменение свойства ИзвлечениеТекста.ИмяФайла;
- ИзвлечениеТекста.Записать();
- Новый Картинка(), если первый параметр ‑ строка;
- Картинка.Записать();
- Новый ДвоичныеДанные();
- ДвоичныеДанные.Записать();
- Новый ЗаписьДанных(), если первый параметр ‑ строка;
- Новый ЧтениеДанных(), есть первый параметр ‑ строка;
- все методы объекта МенеджерФайловыхПотоков;
- Новый ФайловыйПоток();
- ФорматированныйДокумент.Записать();
- ГеографическаяСхема.Прочитать();
- ГеографическаяСхема.Записать();
- ГеографическаяСхема.Напечатать();
- ТабличныйДокумент.Прочитать();
- ТабличныйДокумент.Записать();
- ТабличныйДокумент.Напечатать(); ГрафическаяСхема.Прочитать();
- ГрафическаяСхема.Записать();
- ГрафическаяСхема.Напечатать();
- ТекстовыйДокумент.Прочитать();
- ТекстовыйДокумент.Записать().
- Новый ИнтернетСоединение,
- Новый ИнтернетПочта,
- Новый ИнтернетПрокси,
- Новый HTTPСоединение,
- Новый FTPСоединение.
ВНИМАНИЕ! При выполнении запрещенных операций во время выполнения генерирует исключение.
Примечание. Внешние отчеты и обработки, открываемые с помощью меню Файл ‑ Открыть, выполняются в безопасном режиме, если у пользователя отсутствуют административные права доступа.
Количество включений безопасного режима должно совпадать с количеством выключений. Однако если внутри процедуры или функции происходило включение безопасного режима (один раз или более), но не происходило его выключение, то система автоматически выполнит выключение столько раз, сколько незавершенных включений было в покидаемой процедуре или функции.
Если в процедуре или функции вызовов метода УстановитьБезопасныйРежим(Ложь) сделано больше, чем вызовов метода УстановитьБезопасныйРежим(Истина), то будет вызвано исключение.
Программная установка безопасного режима может потребоваться в том случае, когда разработчик конфигурации предполагает использование стороннего (по отношению к конфигурации) программного кода, надежность которого разработчик гарантировать не может. Примером такого кода является выполнение методов Выполнить() и Вычислить() в тех случаях, когда исполняемый код получается из внешнего мира. В этом случае хорошей практикой будет установка безопасного режима до выполнения этих методов:
В некоторых случаях настройки безопасного режима могут конфликтовать с настройками привилегированного режима . Примером такого конфликта выступает проведение документа, для которого установлено свойство Привилегированный режим при проведении, из кода на встроенном языке, который выполняется в безопасном режиме. В этом случае привилегированный режим отключается, а попытки его включить игнорируются. В результате код на встроенном языке, который «рассчитывает» на включенный привилегированный режим, «сталкивается» с его отсутствием, что приводит к возникновению ошибок с неочевидными причинами появления. Для предотвращения такой ситуации, система «1С:Предприятие» автоматически отключает безопасный режим для обработчиков событий, которые доступны в модуле объекта или модуле менеджера, при условии, что исполняемый код на встроенном языке не располагается в расширении конфигурации . Такие обработчики отмечаются в синтакс-помощнике особым образом .
Также предоставляется возможность отключить безопасный режим из встроенного языка (если программный код, из которого выполняется попытка отключения, не находится в расширении конфигурации). Для отключения безопасного режима предназначен метод УстановитьОтключениеБезопасногоРежима(). Проверить, что безопасный режим в данный момент отключен (автоматически или с помощью вызова метода), можно с помощью метода ПолучитьОтключениеБезопасногоРежима().
В рамках одного метода на встроенном языке не может быть более одного уровня вложенности установки безопасного режима (вызовом метода УстановитьБезопасныйРежим()) и установки отключения безопасного режима (автоматически на время выполнения обработчиков событий объектов метаданных или вызовом метода УстановитьОтключениеБезопасногоРежима()). При попытке увеличить вложенность генерируется исключение: