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

1с как отключить безопасный режим во внешней обработке

  • автор:

Как отключить безопасный режим в 1с 8.3. Павел чистов. Безопасный режим для внешних обработок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Программное открытие внешней обработки осуществляется с помощью объекта глобального контекста ВнешниеОбработки, который имеет тип ВнешниеОбработкиМенеджер . Для каждого режима работы платформы 1С (режим обычного приложения и режим управляемого приложения) используются различные методы объекта для работы с внешними обработками.

      Запуск внешней обработки в режиме обычного приложения

      В обычном приложении необходимо использовать метод Создать() объекта ВнешниеОбработки, в который передается полное имя файла внешней обработки. Метод возвращает объект типа ВнешняяОбработка , этот объект и есть открываемая внешняя обработка. Если требуется открыть форму внешней обработки, то у полученного объекта вызываем метод ПолучитьФорму(), который вернет основную форму, а затем вызываем метод Открыть() для её открытия.

      Обработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
      Обработка.ПолучитьФорму().Открыть();

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

      Запуск внешней обработки в режиме управляемого приложения

      В режиме управляемых форм появляется разделение алгоритма по контексту выполнения. На клиенте получаем двоичные данные по полному имени файла внешней обработки. Передаем полученные двоичные данные на сервер и помещаем их во временное хранилище. Далее необходимо вызвать метод Подключить() объекта ВнешниеОбработки, в который передается адрес на временное хранилище. Метод возвращает имя подключенной внешней обработки. Возвращаем имя внешней обработки на клиент, формируем строковый путь к форме обработки и с помощью метода ОткрытьФорму() открываем форму внешней обработки.

      &НаКлиенте
      ПолноеИмяФайла = «»; // Полное имя файла внешней обработки.
      ДанныеФайла = Новый ДвоичныеДанные(ПолноеИмяФайла);
      ИмяВнешнейОбработки = ПолучитьИмяВнешнейОбработки(ДанныеФайла);
      ОткрытьФорму(«ВнешняяОбработка.» + ИмяВнешнейОбработки + «.Форма»);

      Безопасный режим для внешних обработок

      • привилегированный режим отменяется, если он был установлен;
      • попытки перехода в привилегированный режим игнорируются;
      • запрещены операции с COM-объектами;
      • запрещена загрузка и подключение внешних компонентов;
      • запрещен доступ к файловой системе (кроме временных файлов);
      • запрещен доступ к Интернету.

      Программное открытие внешних отчетов, аналогично внешним обработкам, только следует использовать объект глобального контекста ВнешниеОтчеты, который имеет тип ВнешниеОтчетыМенеджер .

      1с как отключить безопасный режим во внешней обработке

      Имеем:
      1С:Предприятие 8.3 (8.3.13.1513)
      Розница (базовая), редакция 2.2 (2.2.9.20)

      Галка «Защита от опасных действий» у пользователя снята, права у пользователя не полные — это кассир.

      Обработка опубликована без безопасного режима. Открывается через публикацию. После очередного обновления запуск обработки приводит к аварийному завершению работы платформы.

      Решил протестировать — открывая обработку через меню Файл\открыть.

      При открытии обработки выходит ошибка:

      : Ошибка при вызове конструктора (Файл)
      Файл = Новый Файл(ИмяФайлаВыгрузки);
      по причине:
      Установлен безопасный режим. Выполнение операции запрещено

      Как отключить этот безопасный режим?

      В модуле обработке
      Должно быть что-то типа

      (1)+ В РС РежимыПодключенияВнешнихМодулей ещё надо запись сделать и вроде бы ещё профиль безопасности базы настроить.

      (0) при открытии обработки через Файл-Открыть — она открывается в безопасном режиме вне зависимости от того, что в ней прописано в СведенияОВнешнейОбработке().

      (3) т.е. вообще никак не сделать?
      Должен же быть вариант отладки внешней обработки под неполными правами

      (5) Начал с одного вопроса, а закончил другим. В отладке можно включить режим отладки под тем пользователем, который нужен.

      (6) Ну и что, если нужный пользователь не может открыть обработку?

      (0) >Обработка опубликована без безопасного режима
      А Вы посмотрите как она опубликована. То, что в самой обработке указано БезопасныйРежим = Ложь; не действует на некоторых БСП.

      (8) Так я посмотрел же. Кроме того — опубликованная она все-таки открывается

      (5) причем тут права?
      Подключаете к отладке своего пользователя
      Открываете файл, смотрите

      (3) смотря какие права у пользователя

      (2) у меня видимо старое бсп, нет такого

      (10) Как пользователь откроет обработку, если она у него не открывается через файл \ открыть?

      (11) она не открывается, пишет нарушение прав или ошибку, которая в (0)?

      Если нарушение прав — у него прав нет на интерактивное открытие обработок значит

      Если как в 0, то уже на этом этапе можно подключить отладку

      (0) Конечно то, что в (0), ты вообще читал?

      И что даст откладка на том моменте, который описан в (0) — там все ОК, просто в безопасном режиме половина действий не работает — там нечего отлаживать

      (13) в ПриСозданииНаСервере
      УстановитьБезопасныйРежим(Ложь);

      И отладкой посмотри значение БезопасныйРежим()

      : Ошибка при вызове метода контекста (УстановитьБезопасныйРежим)
      УстановитьБезопасныйРежим(Ложь);
      по причине:
      В данной процедуре/ функции не был установлен безопасный режим

      +
      БезопасныйРежим() = Истина
      Появились ли у кого-нибудь варианты решения?

      (17) Какие варианты решения, если у других таких проблем нет?
      Покажи как в модуле обработке прописано использование безопасного режима.

      Вот так «решилась» проблема:

      1) Изменил в конфигураторе имя обработки
      2) Скопировал основную форму, назначил ее основной формой.

      Вуаля, пользователем открывается.

      Т.о. где-то в конфигурации хранится список обработок с безопасным режимом открытия.
      Вопрос: «где?»

      (18) как и всегда

      Функция СведенияОВнешнейОбработке() Экспорт
      // Создадим структуру для возврата
      параметрыРегистрации_ = Новый Структура(«Вид,Назначение,Наименование,Версия,БезопасныйРежим,Информация,Команды,ВерсияБСП»);
      параметрыРегистрации_.Вид = «ДополнительнаяОбработка»;
      параметрыРегистрации_.Назначение = «»;
      параметрыРегистрации_.Наименование = «Обмен данных между магазинами»;
      параметрыРегистрации_.Версия = «1.0»;
      параметрыРегистрации_.БезопасныйРежим = Ложь;
      параметрыРегистрации_.Информация = «Обработка выгружает / загружает данные»;
      //параметрыРегистрации_.ВерсияБСП = «2.4.1.84»;

      ДобавитьКоманду(ТаблицаКоманд,
      НСтр(«ru = ‘Обмен данных между магазинами'»),
      «ОткрытьОбработкуОбменаДаннымиМеждуМагазинами»,
      «ОткрытиеФормы»);

      // Вернем структуру
      Возврат параметрыРегистрации_;

      Второй раз открываешь обработку — все, снова безопасный режим, ничего не работает.
      Охренеть

      (18) проблема такая у всех присутствует.

      Попробуй, например в Бухгалтерии 3.0 пользователю с правами Бухгалтер, Открытие внешних отчетов и обработок открыть обработку, в которой в ПриСозданийНаСервере будет поиск файлов (например как ниже) и все — та же ошибка про безопасный режим

      &НаСервере
      Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

      найденныеФайлы_ = НайтиФайлы(ОбщегоНазначенияКлиентСервер.КаталогФайловойИнформационнойБазы(), «НужныйФайл.txt»);
      Если найденныеФайлы_.Количество() = 0 Тогда
      Иначе
      КонецЕсли;

      Отключить безопасный режим во внешней обработке

      Добрый. УТ11.4
      У пользователя с ограниченными правами при интерактивном открытии внешней обработки устанавливается безопасный режим (БезопасныйРежим() = Истина), соответственно, нет возможности работы с файловой системой.
      В настройках пользователя галка Защита от опасных действий снята, дадены права Интерактивное открытие внешних отчетов и обработок и Использование дополнительных отчетов и обработок УТ.
      Под полными правами режим тоже безопасный, под Администратор системы — не безопасный.
      УстановитьОтключениеБезопасногоРежима(Истина); — не работает,
      УстановитьБезопасныйРежим(Ложь); — даёт «В данной процедуре/ функции не был установлен безопасный режим», хотя БезопасныйРежим() = Истина
      Теперь вопрос: Чего ему поставить, чтобы и права не все, и файл открыть?
      Спасибо.

      Добавлено через 12 минут
      Платформа (8.3.17.1851),
      УТ 11.4.11.55,
      Тонкий клиент, серверный режим.

      94731 / 64177 / 26122
      Регистрация: 12.04.2006
      Сообщений: 116,782
      Ответы с готовыми решениями:

      Отключить безопасный режим без входа в систему
      Система windows server 2008r2 sp1 Проблема следующая: включил загрузку в безопасном режиме c.

      Безопасный режим
      Как отключить запуск безопасного режима?

      Безопасный режим
      Это долгая история, но в итоге зашёл через безопасный режим, перезагрузился и передо мной пароль от.

      275 / 227 / 98
      Регистрация: 07.04.2011
      Сообщений: 1,391

      Попробуйте в функции «СведенияОВнешнейОбработке» добавьте «ИмяСтруктурыПараметров.БезопасныйРежим=Ложь», где “
      ИмяСтруктуры» это ваше название структуры.

      388 / 190 / 76
      Регистрация: 04.03.2020
      Сообщений: 702
      Это есть.
      Но сейчас я открываю обработку интерактивно.
      275 / 227 / 98
      Регистрация: 07.04.2011
      Сообщений: 1,391

      А какая разница?
      Когда подключается ВО через доп.обработки, то там пишется состояние безопасного режима.
      Может я не прав,но если нет прав на открытие ВО, то она и не открывается в интерактивном режиме.

      388 / 190 / 76
      Регистрация: 04.03.2020
      Сообщений: 702

      ЦитатаСообщение от OverDozero Посмотреть сообщение

      какая разница?
      Ты видишь разницу? А она есть.
      Через доп.обработки всё и так получилось. Но мне интересно интерактивно, для полноценной отладки.

      ЦитатаСообщение от OverDozero Посмотреть сообщение

      если нет прав на открытие ВО

      Права есть. Нужно небезопасный режим.

      Ещё раз входящие условия:
      — Когда ВО открываю интерактивно
      — с ограниченными правами, не Администратор системы + Интерактивное открытие внешних отчетов и обработок
      — со снятой галкой Защита от опасных действий
      На выходе:
      — не отключается безопасный режим
      — УстановитьОтключениеБезопасногоРежима(Истина); — не работает
      — УстановитьБезопасныйРежим(Ложь); — не работает

      Эксперт 1С

      3769 / 2952 / 586
      Регистрация: 10.03.2011
      Сообщений: 11,627
      Записей в блоге: 1
      Во внешней обработке эти методы никогда не работали и работать не будут

      ЦитатаСообщение от Scratchsv Посмотреть сообщение

      — УстановитьОтключениеБезопасногоРежима(Истина); — не работает
      — УстановитьБезопасныйРежим(Ложь); — не работает

      Добавлено через 10 минут

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

      Отключение безопасного режима при регистрации обработки. Если Вы добавите строку «ПараметрыРегистрации.Вставить(«БезопасныйРежим», Ложь);» в метод СведенияОВнешнейОбработке() — это не отключит безопасный режим при выполнении обработки. Особенно, с учетом включенной защиты от опасных действий в настройках пользователя.
      Создание копии внешней обработки не в безопасном режиме. Раньше можно было при выполнении внешней обработки создать ее копию с отключением безопасного режима и таким образом реализовать необходимый функционал.
      На данный момент при регистрации внешней обработки необходимо описывать возможные разрешения для внешней обработки. Для этого используется параметр регистрации «Разрешения» (тип Массив). В качестве примера рассмотрим добавление разрешения на создание Com-объекта «Excel.Application»:

      Добавлено через 12 минут
      Ну и с ИТСа, нужно в сведениях о внешней обработке запросить разрешение на использование (запрещенного действия) файловой системы

      РазрешениеНаИспользованиеКаталогаФайловойСистемы
      Возвращает внутреннее описание разрешения на использование каталога файловой системы.
      Синтаксис

      Функция РазрешениеНаИспользованиеКаталогаФайловойСистемы(Знач Адрес, Знач ЧтениеДанных = Ложь, Знач ЗаписьДанных = Ложь, Знач Описание = «») Экспорт
      Параметры

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

      ОбъектXDTO — внутреннее описание запрашиваемого разрешения.
      Предназначен только для передачи в качестве параметра в функции.
      РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(),
      РаботаВБезопасномРежиме.ЗапросНаОтменуРазрешенийИспользованияВнешнихРесурсов() и
      РаботаВБезопасномРежиме.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов().
      Пример вызова

      Результат = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы(Адрес, ЧтениеДанных, ЗаписьДанных, Описание)
      Доступность

      Сервер, Толстый клиент, Внешнее соединение

      Исправляем Установлен безопасный режим. Выполнение операции запрещено для внешней обработки

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

      • Отключение безопасного режима в интерфейсе
      • Отключение безопасного режима при проектировании внешней обработки (печатной формы)
      Отключение безопасного режима в интерфейсе

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

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

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

      Для этого регламентного задания указываете пользователя с полными правами, под которым будет это задание выполняться:

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

      Отключение безопасного режима при проектировании внешней обработки (печатной формы)

      Раньше можно было без особых проблем отключить безопасный режим при регистрации обработки или при ее выполнении. Фиксируем, что сейчас не работает:

      • Отключение безопасного режима при регистрации обработки. Если Вы добавите строку «ПараметрыРегистрации.Вставить(«БезопасныйРежим», Ложь);» в метод СведенияОВнешнейОбработке() — это не отключит безопасный режим при выполнении обработки. Особенно, с учетом включенной защиты от опасных действий в настройках пользователя.
      • Создание копии внешней обработки не в безопасном режиме. Раньше можно было при выполнении внешней обработки создать ее копию с отключением безопасного режима и таким образом реализовать необходимый функционал.

      На данный момент при регистрации внешней обработки необходимо описывать возможные разрешения для внешней обработки. Для этого используется параметр регистрации «Разрешения» (тип Массив). В качестве примера рассмотрим добавление разрешения на создание Com-объекта «Excel.Application»:

      Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов. ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Пример обработки"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Пример обработки"); ПараметрыРегистрации.Вставить("Разрешения", Новый Массив); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Выполнить обработку", "ВыполнитьОбработку", "ВызовСерверногоМетода", , "ВыполнитьОбработку"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); ПараметрыРегистрации.Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("Excel.Application" , "00024500-0000-0000-C000-000000000046")); Возврат ПараметрыРегистрации; КонецФункции 

      Для «Word.Application» CLSID будет «000209FF-0000-0000-C000-000000000046». При регистрации внешней обработки с описанием разрешения в форме внешней печатной формы добавится страница «Разрешения»:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *