Имя: Пароль:
1C
1С v8
Запрет сохранения двоичных данных в безопасном режиме
0 GrowBell
 
28.11.22
00:49
Здравствуйте!

Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.125.15)

Корректирую внешнюю обработку для того, чтобы пройти аудит в 1С Фреш. Нужно, чтобы обработка работала в безопасном режиме.
В ней передаю Excel-файл с клиента на сервер для того, чтобы на сервере его открыть в табличном документе и считать данные.

ДанныеExcel = ПолучитьИзВременногоХранилища(Объект.АдресХраненияФайла);
ФайлДанныхExcel = ПолучитьИмяВременногоФайла("xlsx");    
ДанныеExcel.Записать(ФайлДанныхExcel);


Обработка добавлена в базу как внешняя и работает в безопасном режиме. При записи двоичных данных появляется ошибка "Установлен безопасный режим. Выполнение операции запрещено".
https://ic.wampi.ru/2022/11/28/SKRIN.png

Если её открыть через меню "Файл" - "Открыть", то такой ошибки нет.

В функции описания сведений об обработке я указываю, что нужно разрешение на запись/чтение во временном каталоге.
Функция СведенияОВнешнейОбработке() Экспорт
    
    ИмяОтчета = ЭтотОбъект.Метаданные().Имя;
    Синоним = ЭтотОбъект.Метаданные().Синоним + " " + ЭтотОбъект.Метаданные().Комментарий;
    Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);
    РегистрационныеДанные = Новый Структура();
    РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
    РегистрационныеДанные.Вставить("Наименование", Синоним);
    РегистрационныеДанные.Вставить("Версия", "2.4");
    РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
    РегистрационныеДанные.Вставить("Информация", "Обработка " + Синоним);
    
    РегистрационныеДанные.Вставить("Разрешения", Новый Массив);    
    Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
    РегистрационныеДанные.Разрешения.Добавить(Разрешение);
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, Синоним, "1" , "ОткрытиеФормы", Истина, );
        
       // Сохраним таблицу команд в параметры регистрации обработки
    РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);

    Возврат РегистрационныеДанные;

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

Вроде бы разрешение на временный каталог есть, а не сохраняет файл.
Подскажите, пожалуйста, в чём может быть причина.
1 GrowBell
 
28.11.22
01:48
Переписал функцию и ошибка пропала. Только не понятно чем она отличается от той, что была раньше.

Функция СведенияОВнешнейОбработке() Экспорт
    
        ИмяОтчета = ЭтотОбъект.Метаданные().Имя;
        Синоним = ЭтотОбъект.Метаданные().Синоним + " " + ЭтотОбъект.Метаданные().Комментарий;
        Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Информация = "Обработка " + Синоним;
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "2.4.1.1";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
    ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
    
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = Синоним;
    Команда.Идентификатор = "ЗагрузкаИзExcel";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Ложь;
    
    Возврат ПараметрыРегистрации;    
КонецФункции
2 SleepyHead
 
гуру
28.11.22
04:55
А у меня вот не получилось эту ошибку победить.
Если посмотреть на модуль РаботаВБезопасномРежиме и функцию РазрешениеНаИспользованиеКаталогаВременныхФайлов, то она в итоге дает разрешение на работу с каталогом временных файлов "/temp"

А ПолучитьИмяВременногоФайла() дает путь что-то вроде "C:\Users\mag13\AppData\Local\Temp\4\v8_3FE6_37.XML", а на него разрешения нет.