Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:48

Удаление временного файла

Автор 12040, 31 дек 2015, 00:38

0 Пользователей и 1 гость просматривают эту тему.

12040

Добрый вечер.
Почему-то не удалается временный файл.
Переменная "ПутьКФайлуНаСервере" в процедуре "УдалитьВременныеФайлыНаСервере()" с правильным значением "C:\Users\USR1CV8\AppData\Local\Temp\ИвановИванИванович\v8_670D_9aa.xls". Отладчик без ошибок просто проходит эту строку, но файл не удаляет.
Привожу код, включающий и создание файла:

&НаСервере
Процедура ЗагрузитьДанныеНаСервере()
//Основные действия обработки не привожу       


    Попытка
        УдалитьВременныеФайлыНаСервере();
        Исключение
                Сообщить(ОписаниеОшибки());
        КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьДанные(Команда)
        ЗагрузитьДанныеНаСервере();
КонецПроцедуры

&НаКлиенте
Функция ПоместитьФайлНаСервер()
        ФайлEXCEL = ПутьКФайлуНаКлиенте;
       
        ПомещаемыеФайлы = Новый Массив;
        Описание = Новый ОписаниеПередаваемогоФайла(ФайлEXCEL, "");
        ПомещаемыеФайлы.Добавить(Описание);
       
        ПомещенныеФайлы = Новый Массив;
       
        Если Не ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Не удалось поместить файл на сервер";
                Сообщение.Сообщить();
                возврат 0;         
        КонецЕсли;         
       
       
        Для каждого ТекЭлемент Из ПомещенныеФайлы Цикл         
                ПутьКФайлуНаСервере = ПолучитьИмяФайлаСПутемНаСервере(ТекЭлемент.Хранение,"xls");
                //Сообщить(ПутьКФайлуНаСервере);

                возврат ПутьКФайлуНаСервере;                 
        КонецЦикла;       
КонецФункции

&НаСервереБезКонтекста
Функция СформироватьУникальноеИмяФайла(ПереданныйПуть)
        Файл = Новый Файл(ПереданныйПуть);
        Путь = Файл.Путь;
        НовыйПуть = Путь + СтрЗаменить(ПользователиКлиентСервер.ТекущийПользователь()," ","") + "\";
        Каталог = Новый Файл(НовыйПуть);
        Если Не Каталог.Существует() Тогда
                СоздатьКаталог(НовыйПуть);
        КонецЕсли;
        НовоеИмяФайла = НовыйПуть + Файл.Имя;
        возврат НовоеИмяФайла;
       
КонецФункции// СформироватьУникальноеИмяФайла()


&НаСервереБезКонтекста
Функция ПолучитьИмяФайлаСПутемНаСервере(Адрес, Расширение)
        ИмяФайлаСПутем = "";
       
        ИмяФайлаСПутем = ПолучитьИмяВременногоФайла(Расширение);
        НовыйПуть = СформироватьУникальноеИмяФайла(ИмяФайлаСПутем);
        ИмяФайлаСПутем = НовыйПуть;
       
        ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(Адрес);
       
        // Сохраним файл из БД на диск

        ДвоичныеДанныеФайла.Записать(ИмяФайлаСПутем);
       
        возврат ИмяФайлаСПутем;
       
КонецФункции

&НаКлиенте
Процедура ВыбратьФайл(Команда)
        Режим = РежимДиалогаВыбораФайла.Открытие;
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
        ДиалогОткрытияФайла.ПолноеИмяФайла = "";
        Фильтр = НСтр("Табличный документ'")
        + "|*.xls;*.xlsx;*.xlsm;*.xlsb";
        ДиалогОткрытияФайла.Фильтр = Фильтр; 
        ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
        Если ДиалогОткрытияФайла.Выбрать() Тогда             
                ПутьКФайлуНаКлиенте = ДиалогОткрытияФайла.ВыбранныеФайлы[0];
                Сообщить("Выбран файл: " + ПутьКФайлуНаКлиенте);
                ЭтаФорма.Элементы.ЗагрузитьДанные.Доступность = Истина;
        Иначе
                Предупреждение(НСтр("ru = 'Файл не выбран!'; en = 'File is not selected!'"));
        КонецЕсли;
       
        ПоместитьФайлНаСервер();
КонецПроцедуры

&НаСервере
Процедура УдалитьВременныеФайлыНаСервере()       
        ИмяКаталога = "" + КаталогВременныхФайлов()
        + СтрЗаменить(ПользователиКлиентСервер.ТекущийПользователь()," ","") + "\";
        Каталог = Новый Файл(ИмяКаталога);
        Если Каталог.Существует() Тогда
                УдалитьФайлы(ПутьКФайлуНаСервере);
        КонецЕсли;
        Сообщить(ПутьКФайлуНаСервере);       
КонецПроцедуры// УдалитьВременныеФайлыНаСервере()

TrigubovichL

Цитата: 12040 от 31 дек 2015, 00:38
&НаСервере
Процедура УдалитьВременныеФайлыНаСервере()       
        ИмяКаталога = "" + КаталогВременныхФайлов()
        + СтрЗаменить(ПользователиКлиентСервер.ТекущийПользователь()," ","") + "\";
        Каталог = Новый Файл(ИмяКаталога);
        Если Каталог.Существует() Тогда
                УдалитьФайлы(ПутьКФайлуНаСервере);
        КонецЕсли;
        Сообщить(ПутьКФайлуНаСервере);       
КонецПроцедуры

Слегка "режет глаз" параметр функции "УдалитьФайлы" = "ПутьКФайлуНаСервере".
В модуле процедуры эта переменная не определена.
Это реквизит некой формы или объекта?
По-моему было бы логично написать как-то так:

        Если Каталог.Существует() Тогда
                УдалитьФайлы(ИмяКаталога);
        КонецЕсли;


Похожие темы (5)

Рейтинг@Mail.ru

Поиск