1с фоновое задание ошибка выполнения предупреждение безопасности

Запуск обработки по расписанию. Предупреждение безопасности. ☑ 0

unknown181538

22.07.17

03:10

Внешняя обработка загружена в справочник дополнительных обработок.

Настроено расписание.

Обработка не выполняется в журнале регистрации — «Предупреждение безопасности

Открывается «Корректировка видов запасов».

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

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

В conf.cfg дописана строка «DisableUnsafeActionProtection=.*».

Вручную обработка запускается без предупреждения. Регламентным заданием никак.

Сначала тестировал на файловом варианте, теперь — клиент-сервер.

Возможно теперь хоть как-то настроить?

Гуглить пытался — советуют либо файл этот настривать, либо выдают непонятную копипасту про подключение обработки с параметрами.

1

goodzone

22.07.17

03:26

1с девелоперы добавили новую фичу глупой безопасности от которой всех тошнит. спрашивается — на ху рена??

2

runoff_runoff

22.07.17

03:27

создать пользователя..

отключить у него флажок «Защита от опасных действий» (в конфигураторе)..

настроить расписание.. чтобы оно выполнялось от имени этого пользователя.. поле «Имя пользователя»..

3

goodzone

22.07.17

03:29

(2) что такое — опасные действия?

4

runoff_runoff

22.07.17

03:31

(3) открытие внешней обарботки..

запуск внешних компонент

5

unknown181538

22.07.17

03:33

(2) что-то я не вижу в расписание выбор пользователя…

6

Aleksey

22.07.17

03:33

(3) Если так пойдет дело дальше то скоро под опасными действиями 1С будет поднимать запуск клиента и доступ к базе. и на каждое движение мышки будет выдаваться вопрос. «Вы уверены что хотите подвинуть мышку влево?»

7

runoff_runoff

22.07.17

03:33

запуск внешних компонент из внешних обработок.. конечно же..

т.е. система спросит ДВА раза..

8

runoff_runoff

22.07.17

03:34

(4) в регламентном задании.. а не в расписании.. обшибся..

9

unknown181538

22.07.17

03:35

(6) черт бы с ним, если б оно отключалось нормально…

10

goodzone

22.07.17

03:35

(6) неистовство плюсую!! )) .. добавлю лишь что Power On — одно из опаснейших, если не самое )

11

goodzone

22.07.17

03:39

Где-то в релизе 1С:Предприятие 8.6 …  Запуская 1С:Предприятие вы подвергаете угрозе ваш компьютер. Вы уверены, что хотите запустить это?? О_О

12

unknown181538

22.07.17

03:39

(8) Да ты чертов гений! работает

13

runoff_runoff

22.07.17

03:41

(12) ну и хорошо.. теперь можно пойти спать с чистой совестью..

14

goodzone

22.07.17

03:42

(13) С чистой памятью ;)

15

goodzone

22.07.17

03:49

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

16

DomovoiAtakue

22.07.17

04:07

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

17

goodzone

22.07.17

04:16

1с — это сплошные неадмины!

18

Aleksey

22.07.17

23:07

(16) Там проблема в другом. Любая внешняя обработка подключенная через подсистему БСП — это для 1С внешняя обработка. Любой внешний файл для 1с — потенциальная угроза. Это приводило к тому что ты не мог работать. Загрузить выписку из файла? — а вот фиг тебе, внешний файл — блокируем и не даем загружать.

Хочешь запустить обработку из дополнительных отчётов — а вот фиг тебе по всей морде. Небезопасно.

Любой обмен, вплоть до 1С отчетность — пока не отключишь защиту 1с блокировала работу.

Ну и толку от этой защиты, если в конечном счете приходится отключать её в 100 случаях из 100.

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

Картинка

5b2b6da94f4f6676542034.png

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

Открывается «Парсер ЯНДЕКС.МАРКЕТ [APPLIX.RU] ((с) applix.ru)» из файла «C:\Users\Usr1c-Cloud\AppData\Local\Temp\v8_603B_1c3d.tmp».

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

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

По понятным причинам, так как модуль запускается в фоне, «кликнуть» на «Да» я не могу.
Права выдал как на скринах.

Коротко о модуле: у него две части. Первая часть .epf открывается через рабочий клиент и через него происходит запуск служебного модуля .cf (который был установлен через конфигуратор как написано к инструкции к нему).
Что можно сделать с этим? Очень надеюсь на вашу помощь! :)

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

1. Как запустить фоновое задание из модуля внешней обработки используя БСП

После тщетных попыток запустить в фоне процедуру модуля объекта внешней обработки, я все-таки решил глубже копнуть все механизмы длительных операций БСП. Все процедуры выполнения кода в фоне из подсистемы «Длительные операции» работают на сервере. То есть все происходит так: берется внешняя обработка, хранящаяся в справочнике «ДополнительныеОтчетыИОбработки», разворачивается на сервере (вот тут ключевой момент) и из этого экземпляра обработки выполняются указанные процедуры / функции модуля объекта (см. процедуру «ЗапуститьФоновоеЗаданиеСКонтекстомКлиента» модуля «ДлительныеОперации» БСП 3.х). Если вы вызываете ту же самую обработку из «файл-открыть», то БСП тупо пытается запустить указанные методы из обработки на сервере, в то время как обработка находится на клиенте.

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

Если ЭтоВнешняяОбработка() Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьРезультатПомещенияФайлаОбработки", ЭтотОбъект);
НачатьПомещениеФайлов(ОписаниеОповещения, ИмяФайлаОбработки(), Ложь, УникальныйИдентификатор);
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ОбработатьРезультатПомещенияФайлаОбработки(ПомещенныеФайлы, ОбработчикЗавершения) Экспорт

Если ПомещенныеФайлы <> Неопределено Тогда
// Создаем копию текущией обработки на сервере
ХранениеФайлаОбработки = КопияОбработкиНаСервере(ПомещенныеФайлы[0].Хранение);
КонецЕсли;

КонецПроцедуры

&НаСервере
Функция КопияОбработкиНаСервере(Хранение)

Результат = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Хранение);
ДвоичныеДанные.Записать(Результат);

Возврат Результат;

КонецФункции

&НаСервере
Функция ИмяФайлаОбработки()

Возврат РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;

КонецФункции

&НаСервере
Функция ЭтоВнешняяОбработка()

ЧастиИмени = СтрРазделить(РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя(), ".");
Возврат (ВРег(ЧастиИмени[0]) = "ВНЕШНЯЯОБРАБОТКА")

КонецФункции

Ну вот, собственно и все. Осталось только правильно вызвать процедуру из модуля объекта копии обработки на сервере.

&НаКлиенте
Процедура НачатьВыполнениеФоновогоЗадания()

// Указываете свои параметры выполнения фонового задания....

ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("<ОповещениеОПрогрессеВыполнения>", ЭтотОбъект);

ДлительнаяОперация = НачатьВыполнениеФоновогоЗаданияНаСервере();

ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = <...>;
ПараметрыОжидания.ВыводитьПрогрессВыполнения = <...>;
ПараметрыОжидания.ОповещениеОПрогрессеВыполнения = ОповещениеОПрогрессеВыполнения;
ПараметрыОжидания.ОповещениеПользователя.Показать = <...>;
ПараметрыОжидания.ВыводитьОкноОжидания = <...>;
ПараметрыОжидания.ВыводитьСообщения = <...>;

ОповещениеОЗавершении = Новый ОписаниеОповещения("<ОповещениеОЗавершении>", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);

КонецПроцедуры


&НаСервере
Функция НачатьВыполнениеФоновогоЗаданияНаСервере()

ПараметрыВыполненияОбработки = Новый Структура;
// Здесь указываете параметры, передаваемые в процедуру, выполняемую в фоне
// ....
// ...

// Остальной код можно оставлять, как есть, не забыв указать имя фоновой процедуры и ее описание

ЭтоВнешняяОбработка = ЭтоВнешняяОбработка();
ИмяОбработки = ?(ЭтоВнешняяОбработка, ХранениеФайлаОбработки, РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя());

ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ИмяОбработки",  ИмяОбработки);
ПараметрыЗадания.Вставить("ИмяМетода",   "<Имя процедуры в модуле объекта>");
ПараметрыЗадания.Вставить("ПараметрыВыполнения", ПараметрыВыполненияОбработки);
ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", ЭтоВнешняяОбработка);

ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = '<Описание вашего фонового задания>'");
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.Вставить("ИдентификаторФормы", УникальныйИдентификатор);

ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; // Выполняем процедуру из модуля объекта
Возврат ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения);

КонецФункции

2. Как отключить безопасный режим и сообщения защиты от опасных действий независимо от профиля безопасности пользователя в фоновом задании во внешней обработке

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

Я думаю, что многим приходилось сталкиваться с тем, что на сервере надо было подтвердить разрешение на запуск com-соединения. И все выключали защиту от опасных действий в профиле пользователя, чего делать не рекомендуется. Я пошел другим путем. Создаю две экспортные процедуры в модуле объекта внешней обработки: одна — непосредственно функция, которая будет выполнять необходимые действия и другая, которая вызовет первую с отключенным контролем прав доступа профиля.

Выглядит это так:

Функция ОбработкаДанных(...) Экспорт

...

КонецФункции

Процедура ОбработкаДанныхВФоне(Параметры, АдресРезультата) Экспорт

ЧастиИмени = СтрРазделить(ЭтотОбъект.Метаданные().ПолноеИмя(), ".");
ЭтоВнешняяОбработка = (ВРег(ЧастиИмени[0]) = "ВНЕШНЯЯОБРАБОТКА");
Если ЭтоВнешняяОбработка Тогда
ОбработкаОбъект = ВнешниеОбработки.Создать(ЭтотОбъект.ИспользуемоеИмяФайла, Ложь, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
Результат = ОбработкаОбъект.ОбработкаДанных(...);
Иначе
Результат = ОбработкаДанных(...);
КонецЕсли;

ПоместитьВоВременноеХранилище(Результат, АдресРезультата);

КонецПроцедуры

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

Пример использования, созданный из обработки демонстрационной конфигурации БСП прилагается (создавалась на платформе 8.3.13.1513, совместима с любой платформой 8.3, которая поддерживает БСП 3.0 и старше)

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

В версии 8.3.9.2170 была усилена безопасность — теперь система запрашивает подтверждение на запуск внешних обработок, расширений и прочее. Видимо после трояна: Внимание! Первый троян для 1С -запускающий шифровальщика-вымогателя

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

  • Загрузка внешнего отчета, обработки или расширения конфигурации.
  • Загрузка или обновление конфигурации/расширения.
  • Доступ из внешнего отчета/обработки или расширения к следующим возможностям:
  • Исполнение команды операционной системы.
  • Управление пользователями.
  • Загрузка внешней компоненты.

Пользователь имеет возможность разрешить или отклонить потенциально опасное действие. Если действие разрешено, в ряде случаев может потребоваться повторно выполнить разрешенное действие. 

Сообщение выглядит так:

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

Открывается «» из файла » C:\…….epf». Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным. Разрешить открывать данный файл. ДА, НЕТ

Решение:

В конфигураторе в свойствах пользователя ИБ убрать флажок «Защита от опасных действий».

Из документации: Отключение механизма защиты от опасных действий

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

1. Выключить флажок Защита от опасных действий (ЗащитаОтОпасныхДействий) в свойствах конкретного пользователя. Это отключит защиту для этого пользователя.

2. Воспользоваться параметром ЗащитаОтОпасныхДействий методов Подключить() менеджеров внешних обработок (отчетов). В этом случае имеется возможность загрузить внешнюю обработку (отчет) без запросов пользователя.

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

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

Отключение защиты от опасных действий выполняется по следующим правилам (в указанном порядке):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Текст разрешения:

Создание COM-объекта

Дополнительному отчету или обработке будет разрешено использовать механизмы внешнего программного обеспечения с помощью COM-соединения со следующими ограничениями:

с программным идентификатором Excel.Application

Также хочется отметить, что на данный момент не все разрешения нормально фиксируются через сведения о внешней обработке. Например, при добавлении разрешения на использование каталога временных файлов (РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина)) Вы можете получить ошибку:

Значение не является значением объектного типа (Представление)

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

Наши разработки:

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • 1с фин отчетность ошибка авторизации на сервере обмена
  • 1с фаст фуд ошибка обнаружения ключа защиты
  • 1с фатальная ошибка entityref expecting
  • 1с управляемые формы сообщить об ошибке
  • 1с установка ошибка применения преобразований

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

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: