Модуль выполняет подключение исполнимого бинарного файла word

Предупреждение безопасности — Модуль выполняет подключение исполнимого бинарного файла

Я
   Stolz

14.10.19 — 09:14

Доброго времени суток всем, кто это читает.

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

ОписаниеЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;

ОписаниеЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;

ВнешняяОбработка = ВнешниеОбработки.Создать(СтрИмяФайла, Ложь, ОписаниеЗащиты);

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

Однако в процессе работы запускаемая обработка создаёт COMОбъект. Такое действие также расценивается системой как небезопасное, из-за чего выдаётся предупреждение вида:

Модуль <…> загруженный из <…> выполняет подключение исполнимого бинарного файла <…>.

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

Разрешить подключать исполнимые бинарные файлы для данного модуля?

В итоге, обработка не запускается. Параметром DisableUnsafeActionProtection здесь пользоваться не хотелось бы, так как он отключает механизм защиты для всех пользователей. Можно, конечно же, запускать регламентное задание от имени пользователя, у которого отключена защита от опасных действий. Однако, желательно было бы решить проблему как-то изящнее. Есть у кого-нибудь какие-либо идеи, как обойти выдачу такого предупреждения в описанном случае?

   Cyberhawk

1 — 14.10.19 — 09:24

Разрешения настраивай

   Cyberhawk

2 — 14.10.19 — 09:26

Безопасный режим у тебя срабатывает, а не защита от опасных действий

   Cyberhawk

3 — 14.10.19 — 09:29

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

   Stolz

4 — 14.10.19 — 10:16

(1) А вот с этого места, пожалуйста, поподробнее (C).

Под разрешениями что имеется в виду? Вроде бы, официально такое понятие в 1С отсутствует.

   Stolz

5 — 14.10.19 — 10:17

(2) Безопасный режим, вроде бы, отключён вторым параметром метода Создать(). Или требуется ещё что-нибудь?

   Stolz

6 — 14.10.19 — 10:18

(3) Вот пользователя создавать не хотелось бы, — об этом написано в (0).

   Cyberhawk

7 — 14.10.19 — 10:19

(4) Это про то что для подключаемых к БСП обработок требуется. Надстройка, да.

   Cyberhawk

8 — 14.10.19 — 10:20

+(7) В твоем случае скорее всего не играет роли, это к профилям безопасности относится

   unenu

9 — 14.10.19 — 10:21

(0) я не подаюсь соблазну общеизвестности и пишу так

// Создание экземпляра внешего отчета объекта штатным методом ВнешниеОтчеты.Подключить()

    ОбъектОписанияЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;

    ОбъектОписанияЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;  // Отключает предупреждения защиты при работе с COMОбъект и т.д. незавимо от настроек пользователя и информациооной базы

    
    //ОтчетИмя = ВнешниеОтчеты.Подключить(ОтчетАдрес,,Ложь);      // Будет использовано имя, содержащееся в самом отчете

    ОтчетИмя = ИмяОбъекта+»_»+СтрЗаменить(Строка(ТекущаяУниверсальнаяДатаВМиллисекундах()), Символы.НПП,»»); // Например, получим строку вида «Отчет…._63636735405379», где число — это количество миллисекунд текущей даты строкой

    ВнешниеОтчеты.Подключить(ОтчетАдрес, ОтчетИмя, ОтчетСсылка.БезопасныйРежим, ОбъектОписанияЗащиты);

    ОтчетОбъект = ВнешниеОтчеты.Создать(ОтчетИмя, ОтчетСсылка.БезопасныйРежим);

   Cyberhawk

10 — 14.10.19 — 10:22

(9) Так у него внешняя обработка создается и запускается, не работает запуск из нее еще одного внешнего кода

   Cyberhawk

11 — 14.10.19 — 10:23

(6) Проверь хотя бы помогает это или нет и поймешь в чем дело

   unenu

12 — 14.10.19 — 10:25

(10) у меня примерная ситуаця, когда «внутри» идет конект в внешнему источнику по ком — никто не жалуются на системны сообщения.

У меня в коде команды и команды

Подключчить() и

Создать().

Уникальность имени подключаемой обеспечивается через костыль с миллисекудами.

   Stolz

13 — 14.10.19 — 10:27

(11) Это-то как раз помогает. Хотелось бы обойтись без этого.

   maxx079

14 — 14.10.19 — 10:28

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

Так что, если надо отключить это предупреждение — придется лезть в конфигуратор или делать через расширение.

   unenu

15 — 14.10.19 — 10:39

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

Уникальное имя необходимо чтобы не «нарваться» на уже подключенный типовым БСП экземпляр точно такой обработки/отчета.

В общем, как сделать обходы я показал в корявеньком коде — поймите, причешите и не забудьте чистить за собой после завершения обработки/отчета.

   maxx079

16 — 14.10.19 — 10:46

(15) Речь именно про это. 1С в Подключить() передает параметр безопасного режима, а в Создать() — забыли.

   unenu

17 — 14.10.19 — 10:52

(16) ой ли? 1С:Предприятие 8.3 (8.3.14.1854)

Подключить(<Путь>, <Имя>, <БезопасныйРежим>, <ЗащитаОтОпасныхДействий>)

Создать(<ПолноеИмяФайла>, <БезопасныйРежим>, <ЗащитаОтОпасныхДействий>)

Если в моем коде избавиться от ссылки БСП-ного отчета примерно так

ВнешниеОтчеты.Подключить(ОтчетАдрес, ОтчетИмя, Ложь, ОбъектОписанияЗащиты);

ОтчетОбъект = ВнешниеОтчеты.Создать(ОтчетИмя, Ложь);

то задача только в том, чтобы создать уникальное имя обработки.

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

ОбъектОписанияЗащиты необходимо «Втыкать» при подключении.

Если это не так, то я бы уже был завален жалобами а ля «чо за фигню нам 1С сообщает»

  

unenu

18 — 14.10.19 — 11:02

(16) если вы имеете ввиду, что забыли в БСП-механизмах запуска регламентныых заданий, то тогда да, вероятно будут неполадки. Тогда действительно необходимо «обернуть» типовой вызов по расписанию с в свой с установкой параметров как надо для задачи.

Предупреждение при открытии внешний обработок(отчетов):
“…
Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным.
Разрешить подключать исполнимые бинарные файлы для данного модуля?
…”

Варианты отключения:

Источники: ИТС 7.10.2, ИТС 3.13

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

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

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

DisableUnsafeActionProtection

С помощью данного параметра предоставляется возможность отключить защиту от опасных действий для определенных информационных баз. Информационные базы определяются набором регулярных выражений, разделяемых символом «;». Если строка соединения с информационной базой будет удовлетворять какому-либо регулярному выражению, для такой информационной базы защита от опасных действий будет отключена.

Пример:

DisableUnsafeActionProtection=test_.*;stage_.*;

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

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

  1. Защита считается отключенной, если у текущего пользователя сброшен флажок Защита от опасных действий.
  2. Защита считается отключенной, если строка соединения с информационной базой удовлетворяет одному из шаблонов, указанных в параметре DisableUnsafeActionProtectionфайла conf.cfg.
  3. Если внешняя обработка (отчет) подключается с явным образом отключенной защитой с помощью параметра ЗащитаОтОпасныхДействий.
  4. Если защита явным образом отключена с помощью свойства расширения ЗащитаОтОпасныхДействий.

Добрый день! Установили 8.3.9.2033, радости не было предела. Та самая, 64 бита! Сначала при открытии внешних отчетов она стала ругаться типа доверяешь или нет, жмешь да — норм. Потом у меня значит отчет берет данные из другой базы, по COM. Ошибка исполнения отчета по причине: Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’ по причине: Предупреждение безопасности Модуль «БанкСравнениеПоCOM» загруженный из «C:UsersAppDataLocalTemp бла-бла» выполняет подключение исполнимого бинарного файла «V83.COMConnector». Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным. Разрешить подключать исполнимые бинарные файлы для данного модуля? И это выскакивает как ошибка, варианты кнопок — только закрыть и завершить работу. Где-то можно настроить эти нововведения доверия-не доверия? А лучше вообще отключить

В свойствах пользователя ИБ галочка про чего то там опасные действия. «Опасные действия» должны быть разрешены

Блин не могу найти эту галочку. Конфа та же самая, работает давно. Сегодня платформу обновили. Уже в отладчик залез, там вылетает сразу на

В конфигураторе пользователя открой и посмотри в первой закладке.

О, нашел! «Защита от опасных действий». раньше же такой херни не было?

о, сколько нам открытий чудных готовит просвещенья Дух и опыт — Сын ошибок трудных, и гений — парадоксов Друг. мда. раньше не было, а теперь есть. Здесь вам не тут

Это потому, что кто-то не читает описания к обновлениям…

64 бита затмили мой разум

«Никогда не было, и вот опять.» (с)

Вообще то фигня какая-то — я в роли уже все что хотел разрешил. Но тут еще какую-то параллельную фигню придумали. Мне кажется прав был персонаж из кина «Падение черного ястреба» который помахал указательным пальцем и сказал: вот мой предохранитель. Если пользователь/администратор без головы сколько угодно кнопочек ни поставь — толку никакого

99,9999% пользователейадминистраторов без головы.. теперь что, контрацепцию отменять?

Народ, с той же ошибкой не запускаются фоновые задания, которые запускаются, как известно, под неопределенным пользователем. Как решить такую проблему? Где снять галочку?))

и как дополнительное окно, в котором не глядя жмакают ок (или вообще обработкой это всем пользователям отключают), защитит?

Откати на 8.3.9.1850 и спи спокойно

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

Тэги:

Комментарии доступны только авторизированным пользователям

16.05.2017

Обработка группового регулирования галки «Защита от опасных действий».
Если обновились на новую платформу.

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

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

Также есть другой метод: в файле conf.cfg изменить параметр DisableUnsafeActionProtection. Касаемого этого метода можно найти информацию в сети.

В данной публикации на код из 2х строк натянут интерфейс, позволяющий по отборам ставить галку. Пример ниже:

        ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательСпр.ИдентификаторПользователяИБ);

Если ПользовательИБ=Неопределено Тогда

Сообщить("Не найден идентификатор пользователя в ИБ:"+ПользовательСпр);
Продолжить;

КонецЕсли;

сч=сч+1;
Состояние("Обработка:"+сч+" из "+ВсегоП+" ... прерывание ctrl+break...");
ОбработкаПрерыванияПользователя();

ПользовательИБ.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;

Попытка

ПользовательИБ.Записать();

Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Использован список справочника с дорисовкой флага при выводе строки. Пример ниже:

Перем СписокСпрДляОбработки;

Процедура ПриОткрытии()
Колонка = ЭлементыФормы.ПользователиИБ.Колонки.Вставить(0, "Флаг");
Колонка.Имя = "Флаг";
Колонка.Ширина = 3;
Колонка.Данные = "";
Колонка.ТекстШапки = "";
Колонка.ДанныеФлажка = "ПометкаУдаления";
Колонка.ИзменятьПозицию = Ложь;
Колонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять;
Колонка.ИзменятьВидимость = Ложь;
Колонка.ИзменятьНастройку = Ложь;
Колонка.РежимРедактирования =  РежимРедактированияКолонки.Непосредственно;
КонецПроцедуры

Процедура ПользователиИБПередНачаломИзменения(Элемент, Отказ)
Если ЭлементыФормы.ПользователиИБ.ТекущаяКолонка.Имя = "Флаг" и ЗначениеЗаполнено(ЭлементыФормы.ПользователиИБ.ТекущиеДанные.Ссылка)
и ЭлементыФормы.ПользователиИБ.ТекущиеДанные.Ссылка.ЭтоГруппа = Истина тогда
Отказ = Истина;
Ссылка = ЭлементыФормы.ПользователиИБ.ТекущиеДанные.Ссылка;

Если СписокСпрДляОбработки.Получить(Ссылка) = Неопределено Тогда
ЗаполнитьСписокОбработкиДляГруппы(Ссылка);

Иначе
УдалитьСписокОбработкиДляГруппы(Ссылка);

КонецЕсли;
//Сообщить("Признак устанавливается только для элементов.");
ИначеЕсли ЭлементыФормы.ПользователиИБ.ТекущаяКолонка.Имя = "Флаг"  Тогда
Отказ = Истина;
Ссылка = ЭлементыФормы.ПользователиИБ.ТекущиеДанные.Ссылка;
Если СписокСпрДляОбработки.Получить(Ссылка) = Неопределено Тогда
СписокСпрДляОбработки.Вставить(Ссылка, Ссылка);
Иначе
СписокСпрДляОбработки.Удалить(Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

Процедура ПользователиИБПриПолученииДанных(Элемент, ОформленияСтрок)
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
ОформлениеСтроки.Ячейки.Флаг.УстановитьФлажок(СписокСпрДляОбработки.Получить(ОформлениеСтроки.ДанныеСтроки.Ссылка) <> Неопределено);
КонецЦикла;
КонецПроцедуры

Программная работа с буфером обмена https://wonderland.v8.1c.ru/blog/programmnaya-rabota-s-buferom-obmena/ планируется в версии 8.3.24, а что делать если нужно получить доступ к данным буфера обмена в более ранних версиях платформы?

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

1. Создать внешнюю обработку «1С Буфер обмена».

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

2. Скачать библиотеку VanessaExt.

Скачиваем актуальный релиз библиотеки по адресу https://github.com/lintest/VanessaExt/releases, (на момент написания заметки это 1.3.9.10), нас интересует файл AddIn.zip.

3. Добавить макет в обработку «1С Буфер обмена».

Добавляем файл AddIn.zip в качестве макета внешней обработки, тип макета «Двоичные данные»:

1С Буфер обмена - Макет

1С Буфер обмена — Макет

4. Добавить форму и команду «ТекстИзБуфераОбмена».

Добавляем форму обработки, в которой добавляем команду «ТекстИзБуфераОбмена» и перетаскиваем ее на форму.

5. Добавить переменные модуля.

В модуль формы добавляем область переменных и необходимые переменные:

#Область ОписаниеПеременных

&НаКлиенте
Перем ИдентификаторКомпоненты, ВнешняяКомпонента;

#КонецОбласти

6. Добавить реквизит «МестоположениеКомпоненты».

В реквизиты формы добавим «МестоположениеКомпоненты», тип строка:

1С Буфер обмена - МестоположениеКомпоненты

1С Буфер обмена — МестоположениеКомпоненты

7. Обработчик «ПриСозданииНаСервере».

Для формы определяем обработчик «ПриСозданииНаСервере», со следующим кодом:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	МакетКомпоненты = РеквизитФормыВЗначение("Объект").ПолучитьМакет("VanessaExt");
	МестоположениеКомпоненты = ПоместитьВоВременноеХранилище(МакетКомпоненты, УникальныйИдентификатор);
	
КонецПроцедуры

8. Обработчик «ПриОткрытии».

Для формы определяем обработчик «ПриОткрытии», со следующим кодом:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ИдентификаторКомпоненты = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
	ВыполнитьПодключениеВнешнейКомпоненты(Истина);
	
КонецПроцедуры

9. Код подключения внешней компоненты.

В модуль формы добавим код для подключения внешней компоненты:

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ВыполнитьПодключениеВнешнейКомпоненты(ДополнительныеПараметры) Экспорт
	
	НачатьПодключениеВнешнейКомпоненты(
		Новый ОписаниеОповещения("ПодключениеВнешнейКомпонентыЗавершение", ЭтаФорма, ДополнительныеПараметры),
		МестоположениеКомпоненты, ИдентификаторКомпоненты, ТипВнешнейКомпоненты.Native); 
		
КонецПроцедуры	

&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
	
	Если Подключение Тогда  
		
		ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".ClipboardControl");
		
	ИначеЕсли ДополнительныеПараметры = Истина Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПодключениеВнешнейКомпоненты", ЭтаФорма, Ложь);
		НачатьУстановкуВнешнейКомпоненты(ОписаниеОповещения, МестоположениеКомпоненты);
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

10. Обработчик команды «ТекстИзБуфераОбмена».

Добавим обработчик для команды «ТекстИзБуфераОбмена» на клиенте, со следующим кодом:

#Область ОбработчикиКомандФормы

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

&НаКлиенте
Процедура ПолученТекстБуфераОбмена(Значение, ДополнительныеПараметры) Экспорт
	
	Сообщить(Значение);
	
КонецПроцедуры

#КонецОбласти

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

1С Буфер обмена - Результат

1С Буфер обмена — Результат

Примечание: В буфере обмена должен быть именно текст.

Дополнительная информация:

  • Подробная информация как установить и подключить внешнюю компоненту, можно найти по адресу https://github.com/lintest/VanessaExt/blob/develop/Docs/README.md.
  • Подробные примеры работы с внешней компонентной VanessaExt можно увидеть во внешней обработке VanessaExt.epf, скачать которую можно по ссылке https://github.com/lintest/VanessaExt/releases.
  • Версия платформы: 1С:Предприятие 8.3 (8.3.21.1393).
  • Исходные коды доступны в репозитории на GitHub.
  • Желтый кот https://pprosalov.artstation.com/projects/rP8eJ

Хочу обратить ваше внимание на боковую панель, где представлены ссылки на интересные git репозитории для разработчиков 1С.

Понравилась статья? Поделить с друзьями:
  • Модуль выгрузки в excel
  • Модуль в word 2007
  • Модуль в vba excel формула
  • Модуль в microsoft word это
  • Модуль в excel что это такое