Имя: Пароль:
1C
1С v8
Предупреждение безопасности - Модуль выполняет подключение исполнимого бинарного файла
,
0 Stolz
 
14.10.19
09:14
Доброго времени суток всем, кто это читает.

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

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

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

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

В итоге, обработка не запускается. Параметром DisableUnsafeActionProtection здесь пользоваться не хотелось бы, так как он отключает механизм защиты для всех пользователей. Можно, конечно же, запускать регламентное задание от имени пользователя, у которого отключена защита от опасных действий. Однако, желательно было бы решить проблему как-то изящнее. Есть у кого-нибудь какие-либо идеи, как обойти выдачу такого предупреждения в описанном случае?
1 Cyberhawk
 
14.10.19
09:24
Разрешения настраивай
2 Cyberhawk
 
14.10.19
09:26
Безопасный режим у тебя срабатывает, а не защита от опасных действий
3 Cyberhawk
 
14.10.19
09:29
Ну или назначь РЗ пользователя инфобазы, в свойствах которого защита от опасных действий отключена
4 Stolz
 
14.10.19
10:16
(1) А вот с этого места, пожалуйста, поподробнее (C).
Под разрешениями что имеется в виду? Вроде бы, официально такое понятие в 1С отсутствует.
5 Stolz
 
14.10.19
10:17
(2) Безопасный режим, вроде бы, отключён вторым параметром метода Создать(). Или требуется ещё что-нибудь?
6 Stolz
 
14.10.19
10:18
(3) Вот пользователя создавать не хотелось бы, - об этом написано в (0).
7 Cyberhawk
 
14.10.19
10:19
(4) Это про то что для подключаемых к БСП обработок требуется. Надстройка, да.
8 Cyberhawk
 
14.10.19
10:20
+(7) В твоем случае скорее всего не играет роли, это к профилям безопасности относится
9 unenu
 
14.10.19
10:21
(0) я не подаюсь соблазну общеизвестности и пишу так

// Создание экземпляра внешего отчета объекта штатным методом ВнешниеОтчеты.Подключить()
    ОбъектОписанияЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
    ОбъектОписанияЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь;  // Отключает предупреждения защиты при работе с COMОбъект и т.д. незавимо от настроек пользователя и информациооной базы
    
    //ОтчетИмя = ВнешниеОтчеты.Подключить(ОтчетАдрес,,Ложь);      // Будет использовано имя, содержащееся в самом отчете
    ОтчетИмя = ИмяОбъекта+"_"+СтрЗаменить(Строка(ТекущаяУниверсальнаяДатаВМиллисекундах()), Символы.НПП,""); // Например, получим строку вида "Отчет...._63636735405379", где число - это количество миллисекунд текущей даты строкой
    ВнешниеОтчеты.Подключить(ОтчетАдрес, ОтчетИмя, ОтчетСсылка.БезопасныйРежим, ОбъектОписанияЗащиты);
    ОтчетОбъект = ВнешниеОтчеты.Создать(ОтчетИмя, ОтчетСсылка.БезопасныйРежим);
10 Cyberhawk
 
14.10.19
10:22
(9) Так у него внешняя обработка создается и запускается, не работает запуск из нее еще одного внешнего кода
11 Cyberhawk
 
14.10.19
10:23
(6) Проверь хотя бы помогает это или нет и поймешь в чем дело
12 unenu
 
14.10.19
10:25
(10) у меня примерная ситуаця, когда "внутри" идет конект в внешнему источнику по ком - никто не жалуются на системны сообщения.

У меня в коде команды и команды
Подключчить() и
Создать().
Уникальность имени подключаемой обеспечивается через костыль с миллисекудами.
13 Stolz
 
14.10.19
10:27
(11) Это-то как раз помогает. Хотелось бы обойтись без этого.
14 maxx079
 
14.10.19
10:28
1С не смогла во внешние печатные формы. У них в одном месте параметр БезопасныйРежим передается, а в другом - нет. Поэтому настройка безопасности у внешних форм не работает.  УТ 11.4.6, но т.к. это часть БСП, то подозреваю, что в других конфигурациях тоже самое.
Так что, если надо отключить это предупреждение - придется лезть в конфигуратор или делать через расширение.
15 unenu
 
14.10.19
10:39
(14) Вы не совсем точны, просто ОписаниеЗащитыОтОпасныхДействий можно программно воткнуть только при подключении внешнейо бработки/очтета. Многие не понимают этого и пытаюся "всадить" его при при создании, как тс в (0).
Уникальное имя необходимо чтобы не "нарваться" на уже подключенный типовым БСП экземпляр точно такой обработки/отчета.

В общем, как сделать обходы я показал в корявеньком коде - поймите, причешите и не забудьте чистить за собой после завершения обработки/отчета.
16 maxx079
 
14.10.19
10:46
(15) Речь именно про это. 1С в Подключить() передает параметр безопасного режима, а в Создать() - забыли.
17 unenu
 
14.10.19
10:52
(16) ой ли? 1С:Предприятие 8.3 (8.3.14.1854)

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

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

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

то задача только в том, чтобы создать уникальное имя обработки.
когда я бился над дилемой автора, то пришел к выводу, что пригроммнном обходе сообщений
ОбъектОписанияЗащиты необходимо "Втыкать" при подключении.
Если это не так, то я бы уже был завален жалобами а ля "чо за фигню нам 1С сообщает"
18 unenu
 
14.10.19
11:02
(16) если вы имеете ввиду, что забыли в БСП-механизмах запуска регламентныых заданий, то тогда да, вероятно будут неполадки. Тогда действительно необходимо "обернуть" типовой вызов по расписанию с в свой с установкой параметров как надо для задачи.