v8: Безопасность запуска внешних обработокК сожалению, в 1С если есть право на запуск внешних обработок, то невозможно контролировать запуск этих внешних обработок. Нет события "ПриЗапускеВнешнейОбработки". Поэтому становится невозможным даже элементарная запись в журнал регистрации этих событий. Предлагаю схему для обхода. | | Автор статьи: Гений 1С Последняя редакция №1 от 07.06.07 URL: http://kb.mista.ru/article.php?id=547 | |
Ключевые слова: безопасность,внешняя обработка
Предлагаю всем пользователям отключить право на запуск внешних обработок.
В меню сервис добавить пункт "Запуск внешней обработки".
При нажатии на эту кнопку вызывается процедура-обработчик, которая запускает функцию обОткрытьИнтерактивноВнешнююОбработку:
Функция обОткрытьИнтерактивноВнешнююОбработку(ИмяФайла="", КодДоОткрытия="", КодПослеОткрытия="", ПричинаОтказа=Неопределено, ВыбиратьФайл=истина) Экспорт
#Если Клиент Тогда
Если ВыбиратьФайл Тогда
Д=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Д.Фильтр= "Файл внешней обработки 80(*.epf)|*.epf";
Д.ПроверятьСуществованиеФайла=истина;
Если НЕ Д.Выбрать() Тогда
ПричинаОтказа=1;
КонецЕсли;
ИмяФайла=Д.ПолноеИмяФайла;
КонецЕсли;
Отказ=ложь;
Выполнить(КодДоОткрытия); //Код выполняется до открытия внешней обработки
Если Отказ Тогда
ПричинаОтказа=2;
Возврат Неопределено;
КонецЕсли;
Попытка
ВнешняяОбработка=ВнешниеОбработки.Создать(ИмяФайла);
Исключение
ПричинаОтказа=3;
Предупреждение("Не удалось открыть внешнюю обработку:"+Д.ПолноеИмяФайла);
Возврат Неопределено;
КонецПопытки;
Форма=ВнешняяОбработка.ПолучитьФорму();
Форма.Открыть();
Выполнить(КодПослеОткрытия); //Код выполняется после внешней обработки
Если Отказ Тогда
ПричинаОтказа=4;
Возврат Неопределено;
КонецЕсли;
Возврат ВнешняяОбработка;
#КонецЕсли
КонецФункции
В переменные "Код до открытия" и "Код после открытия" можно занести код по регистрации события в журнал регистрации, проверки валидности(подписи) внешней обработки, занесения внешней обработки в хранилище для последующего анализа в критическом случае.
Естественно, до вызвова функции нужно проверить в обработчике, доступно ли пользователю право запуска внешних обработок.
В 1С пользователь даже без права запуска внешних обработок может программно открывать внешние обработки, но не может открывать их из табло. |