1с как отключить безопасный режим обработки. Павел чистов. Запуск внешней обработки в режиме обычного приложения


Дело в том что при использовании клиент-серверного варианта работы 1С внешние обработки/отчеты открываются в безопасном режиме, в котором запрещено использование привилегированного режима. А привилегированный режим используется очень часто в типовых конфигурациях: формирование печатных форм, различные служебные проверки (регистрация обменов) и т.д. В результате, даже используя обычный отчет на СКД без формы (по умолчанию используется общая форма "ФормаОтчета") и сохраняя пользовательские настройки отчета (в соответствующий справочник), вы получите ошибку о недостаточности прав доступа на различные константы и параметры сеанса, используемые в служебных целях после строки УстановитьПривилегированныйРежим(Истина) ;

"Правильным" решением будет подключение внешних обработок и отчетов через механизмы БСП "Дополнительные отчеты и обработки" с отключением безопасного режима либо добавлением разрешений (по-моему, с версии БСП 2.2.2.1). Но если по каким-то причинам необходимо использование именно внешних файлов отчетов/обработок, то можно настроить профиль безопасности кластера, используемого в качестве профиля безопасности безопасного режима для конкретной информационной базы.

Хотел бы сразу заметить, что такой вариант не является предпочтительным, но в силу разных обстоятельств можно его использовать в таком упрощенном виде. Например, у меня несколько баз в разных городах, общая локальная сесть с жёстко ограниченными правами, закрытыми USB и т.п., где-то используется Бухгалтерия 2.0, а где-то 3.0, почти все отчеты делаю средствами СКД без форм, что бы они открывались в обоих версиях. Обслуживать все эти отчеты для разных версий и разных баз дело трудоёмкое и бесперспективное, т.к. в планах есть переход на единую конфигурацию и базу...

Создаем профиль.
В консоли кластера создаём профиль безопасности, в котором устанавливаем флаги "Может использоваться как профиль безопасности безопасного режима" и " в разделе "Разрешен полный доступ:" "к привилегированному режиму".

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

P.S. Думал что профили безопасности функционируют только при использовании лицензий на платформу и сервер уровня КОРП, но данный функционал отрабатывает и на платформе 1С:Предприятие 8.3 (условно можно назвать ПРОФ по аналогии с типовыми конфигурациями Базовая/ПРОФ/КОРП)

Дело в том что при использовании клиент-серверного варианта работы 1С внешние обработки/отчеты открываются в безопасном режиме, в котором запрещено использование привилегированного режима. А привилегированный режим используется очень часто в типовых конфигурациях: формирование печатных форм, различные служебные проверки (регистрация обменов) и т.д. В результате, даже используя обычный отчет на СКД без формы (по умолчанию используется общая форма "ФормаОтчета") и сохраняя пользовательские настройки отчета (в соответствующий справочник), вы получите ошибку о недостаточности прав доступа на различные константы и параметры сеанса, используемые в служебных целях после строки УстановитьПривилегированныйРежим(Истина) ;

"Правильным" решением будет подключение внешних обработок и отчетов через механизмы БСП "Дополнительные отчеты и обработки" с отключением безопасного режима либо добавлением разрешений (по-моему, с версии БСП 2.2.2.1). Но если по каким-то причинам необходимо использование именно внешних файлов отчетов/обработок, то можно настроить профиль безопасности кластера, используемого в качестве профиля безопасности безопасного режима для конкретной информационной базы.

Хотел бы сразу заметить, что такой вариант не является предпочтительным, но в силу разных обстоятельств можно его использовать в таком упрощенном виде. Например, у меня несколько баз в разных городах, общая локальная сесть с жёстко ограниченными правами, закрытыми USB и т.п., где-то используется Бухгалтерия 2.0, а где-то 3.0, почти все отчеты делаю средствами СКД без форм, что бы они открывались в обоих версиях. Обслуживать все эти отчеты для разных версий и разных баз дело трудоёмкое и бесперспективное, т.к. в планах есть переход на единую конфигурацию и базу...

Создаем профиль.
В консоли кластера создаём профиль безопасности, в котором устанавливаем флаги "Может использоваться как профиль безопасности безопасного режима" и " в разделе "Разрешен полный доступ:" "к привилегированному режиму".

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

P.S. Думал что профили безопасности функционируют только при использовании лицензий на платформу и сервер уровня КОРП, но данный функционал отрабатывает и на платформе 1С:Предприятие 8.3 (условно можно назвать ПРОФ по аналогии с типовыми конфигурациями Базовая/ПРОФ/КОРП)

Печать (Ctrl+P)

Объекты конфигурации

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

В безопасном режиме:

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

ВНИМАНИЕ! При выполнении запрещенных операций во время выполнения генерирует исключение.

Примечание. Внешние отчеты и обработки, открываемые с помощью меню Файл ‑ Открыть, выполняются в безопасном режиме, если у пользователя отсутствуют административные права доступа.

Количество включений безопасного режима должно совпадать с количеством выключений. Однако если внутри процедуры или функции происходило включение безопасного режима (один раз или более), но не происходило его выключение, то система автоматически выполнит выключение столько раз, сколько незавершенных включений было в покидаемой процедуре или функции.

Если в процедуре или функции вызовов метода УстановитьБезопасныйРежим(Ложь) сделано больше, чем вызовов метода УстановитьБезопасныйРежим(Истина) , то будет вызвано исключение.

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

// Формируется программный код, который следует исполнить // Возможно, что код загружается из внешних источников // или введен вручную ИсполняемыйКод = ПолучитьВыполняемыйКодИзВнешнегоМира(); // Включим безопасный режим УстановитьБезопасныйРежим(Истина); // Выполним потенциально опасный код Выполнить(ИсполняемыйКод); // Выключим безопасный режим УстановитьБезопасныйРежим(Ложь);

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

Также предоставляется возможность отключить безопасный режим из встроенного языка (если программный код, из которого выполняется попытка отключения, не находится в расширении конфигурации). Для отключения безопасного режима предназначен метод УстановитьОтключениеБезопасногоРежима() . Проверить, что безопасный режим в данный момент отключен (автоматически или с помощью вызова метода), можно с помощью метода ПолучитьОтключениеБезопасногоРежима().

В рамках одного метода на встроенном языке не может быть более одного уровня вложенности установки безопасного режима (вызовом метода УстановитьБезопасныйРежим()) и установки отключения безопасного режима (автоматически на время выполнения обработчиков событий объектов метаданных или вызовом метода УстановитьОтключениеБезопасногоРежима()). При попытке увеличить вложенность генерируется исключение:

// Корректное использование Процедура ИмяПроцедуры() УстановитьОтключениеБезопасногоРежима(Истина); УстановитьБезопасныйРежим(Истина); УстановитьБезопасныйРежим(Ложь); УстановитьОтключениеБезопасногоРежима(Ложь); КонецПроцедуры // Некорректное использование Процедура ИмяПроцедуры() УстановитьОтключениеБезопасногоРежима(Истина); УстановитьБезопасныйРежим(Истина); УстановитьОтключениеБезопасногоРежима(Ложь); // Исключение КонецПроцедуры Процедура ИмяПроцедуры() УстановитьБезопасныйРежим(Истина); УстановитьОтключениеБезопасногоРежима(Ложь); // Исключение КонецПроцедуры

С выходом платформы 8.3.9.2033 появился новый механизм «Защита от опасных действий» .

Благодаря этому новшеству 1С –ка теперь на открытие обработки (и не только) стала ругаться:

Предупреждение безопасности

Открывается «Моя внешняя обработка» из файла «Моя_Внешняя_Обработка.epf»

Рекомендуется обращать внимание на источник, из которого получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным.

Разрешить открывать данный файл?

Так 1С решила бороться с вредоносным кодом!

Откуда будет браться этот «вредоносный код» на предприятии пока загадка)

К потенциально опасным действиям отнесли:

  • Загрузка внешнего отчета, обработки или расширения конфигурации.
  • Загрузка или обновление конфигурации/расширения.
  • Доступ из внешнего отчета/обработки или расширения к следующим возможностям:
  • Исполнение команды операционной системы.
  • Управление пользователями (запись или удаление информации о пользователе информационной базы).
  • Вызов метода Подключить() менеджера внешних обработок (отчетов).
  • Вызов метода РасширениеКонфигурации.Записать().
  • Работа с COM-объектами.

Как же это «чудо» отключить?

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

Есть и другие способы отключить это:

Реализована возможность указать список информационных баз, при работе с которыми защита от опасных действий будет отключаться.
За данную функцию отвечает параметр DisableUnsafeActionProtection в файле conf.cfg, который позволяет отключить механизм защиты от опасных действий для всех пользователей определенных информационных баз, строки соединения которых удовлетворяют маскам указанным в параметре DisableUnsafeActionProtection.

В данном параметр можно указать несколько масок разделяемых символом «;», например:

DisableUnsafeActionProtection=test_.*;stage_.*;

Кроме этого защиту от опасных действий пользователя можно отключить программно, для чего имеются следующие параметры и свойства:

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

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

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

2. Если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtection файла conf.cfg, то защита считается отключенной.

3. Если защита явным образом отключена с помощью параметра ЗащитаОтОпасныхДействий внешней обработки или отчета.

4. Если защита явным образом отключена с помощью свойства расширения ЗащитаОтОпасныхДействий.

При запуске программы Загрузка документов под обычным пользователем возникает ошибка "Установлен безопасный режим. Выполнение операции запрещено".

Эта сложность возникает т.к. для запуска внешней обработки недостаточно прав. Для настройки прав доступа зайдите в базу в режиме 1С Предприятие от имени Администратора и перейдите в раздел Настройки пользователей и прав / Профили групп доступа, нажмите Создать группу.

Введите название группы и отметьте галочками доступные пользователям этой группы роли -

  • Интерактивное открытие внешних отчетов и обработок
  • Использование дополнительных отчетов и обработок

Нажмите Записать и закрыть


Вернитесь в меню Пользователи и выберите из списка сотрудника, который будет работать с программой Загрузка документов. Нажмите Права доступа. В списке профилей отметьте созданный ранее профиль. Нажмите Записать .


Чтобы пользователи могли запустить обработку рекомендуется добавить Загрузку документов к списку внешних обработок. Для этого в меню Администрирование / Печатные формы и обработки / Дополнительные отчеты и обработки создайте новую обработку. Укажите путь к файлу "ЗагрузкаДокументов.epf" и присвойте имя. Укажите размещение обработки в меню, откуда пользователь сможет запустить ее в дальнейшем, например выберите меню Справочники

Нажав на пункт Быстрый доступ вы указываете, кому из пользователей доступна обработка:


После настройки нажмите Записать и закрыть . Для запуска обработки пользователям достаточно будет заново зайти в базу и открыть ее из меню доступа (в примере - Справочники) и нажать Выполнить .


Откройте Меню - Все функции.. . и найдите в списке параметр "Используются профили безопасности" .


Достаточно снять флаг с опции "Используются профили безопасности".


После этого программа будет запускаться успешно.

Выбор редакции
Пост — для тех пользователей смартфонов Nexus 6P и Nexus 5X, которые столкнулись с проблемой так называемого «бутлупа». То есть, если ваш...

В 2012 году для военнослужащих был создан личный кабинет. Основная цель личного кабинета военнослужащего заключается в получении...

Удобство Portable soft-та все уже могли оценить, многим он больше нравится из каких-то личных побуждений. Но самые главные причины на мой...

Количество каналов доставки медийного контента сегодня столь велико, что способно поставить в тупик даже самих его производителей. Где...
Покупки в интернете имеют ряд преимуществ, среди которых низкая цена, большой выбор и хорошее качество товаров. Популярностью пользуются...
Введение С каждым годом характеристики планшетов становятся всё лучше, а цена всё ниже. И вот уже к началу 2013 года за пять с небольшим...
Как включить цифры на ноутбуке? Ответ мастера: Несмотря на портативность габаритов ноутбуков, такое свойство не всегда является удобным....
Здравствуйте, уважаемые читатели блога сайт. Сегодня я хочу поговорить о такой довольно-таки простой в своем устройстве вещи, как файл...
Трудно представить ноутбук без встроенной камеры и микрофона. Это необходимая атрибутика для голосового общения. Но бывают случаи, когда...