|
Удаление временного файла | ☑ | ||
---|---|---|---|---|
0
12040
31.12.15
✎
00:29
|
Добрый вечер.
Почему-то не удалается временный файл. Переменная "ПутьКФайлуНаСервере" в процедуре "УдалитьВременныеФайлыНаСервере()" с правильным значением "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!'")); КонецЕсли; ПоместитьФайлНаСервер(); КонецПроцедуры &НаСервере Процедура УдалитьВременныеФайлыНаСервере() ИмяКаталога = "" + КаталогВременныхФайлов() + СтрЗаменить(ПользователиКлиентСервер.ТекущийПользователь()," ","") + "\"; Каталог = Новый Файл(ИмяКаталога); Если Каталог.Существует() Тогда УдалитьФайлы(ПутьКФайлуНаСервере); КонецЕсли; Сообщить(ПутьКФайлуНаСервере); КонецПроцедуры // УдалитьВременныеФайлыНаСервере() |
|||
1
ЧеловекДуши
31.12.15
✎
07:02
|
(0)Зачем вам оно?
ГАНО код, переписывай... Все отстой. Даже смотреть противно :) |
|||
2
ЧеловекДуши
31.12.15
✎
07:02
|
+ Какова вообще цель?
|
|||
3
Necessitudo
31.12.15
✎
07:07
|
(1) Что, сам такое не сможешь написать?
Вполне нормальный код хоспади. |
|||
4
ЧеловекДуши
31.12.15
✎
07:29
|
(3) Такое не могу. Бредовый код. Вы бы еще выяснили, откуда на сервере папочки и для чего вообще это надо? :)
|
|||
5
ЧеловекДуши
31.12.15
✎
07:34
|
+(3) Возьмем функцию "УдалитьВременныеФайлыНаСервере()", Зачем оно? Он файлы поместил во Временное хранилище. Какого, лешего, он пытается еще манипулировать с каталогом временных фалов? :)
|
|||
6
ЧеловекДуши
31.12.15
✎
07:35
|
Глобальный контекст.ПоместитьФайлы (Global context.PutFiles)
Глобальный контекст (Global context) ПоместитьФайлы (PutFiles) Синтаксис: ПоместитьФайлы(<ПомещаемыеФайлы>, <ПомещенныеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) Параметры: <ПомещаемыеФайлы> (необязательный) Тип: Массив. Массив объектов типа ОписаниеПередаваемогоФайла. Каждый объект описывает получаемый файл: Хранение - расположение данных во временном хранилище; Имя - это локальный путь, по которому должен быть получен файл. Массив может быть заполнен полностью, в этом случае известен набор помещаемых файлов и адреса, по которым они должны быть сохранены. Массив может быть заполнен частично, у элементов массива заполнены только имена. В этом случае, набор помещаемых файлов определен, а места хранения не известны. Файлы будут размещены в новых временных хранилищах. Массив может быть не заполнен. В этом случае набор помещаемых файлов определяется по значениям остальных параметров метода (поиском по маске, либо интерактивным выбором). <ПомещенныеФайлы> (необязательный) Тип: Массив. Массив объектов типа ОписаниеПереданногоФайла. Каждый объект описывает помещенный файл: Хранение - расположение данных во временном хранилище; Имя - это локальный путь, по которому получен файл. <НаборПомещаемыхФайлов> (необязательный) Тип: ДиалогВыбораФайла; Строка. Определяет набор помещаемых файлов. Может быть задан строкой поиска для метода НайтиФайлы, либо, заранее подготовленным, диалогом выбора файлов в режиме открытия файлов. Если параметр определен, то параметр <ПомещаемыеФайлы> должен быть не определен либо быть пустым массивом. <Интерактивно> (необязательный) Тип: Булево. Указывает использование интерактивного режима, при котором пользователю показывается диалог, в котором он может выбрать набор помещаемых файлов. <УникальныйИдентификаторФормы> (необязательный) Тип: УникальныйИдентификатор. Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы. Файл помещается во временное хранилище и автоматически удаляется после удаление объекта формы. Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. Возвращаемое значение: Тип: Булево. Описание: Помещает набор файлов из локальной файловой системы во временное хранилище. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Примечание: Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами. |
|||
7
ЧеловекДуши
31.12.15
✎
07:36
|
<УникальныйИдентификаторФормы> (необязательный)
Тип: УникальныйИдентификатор. Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы. Файл помещается во временное хранилище и автоматически удаляется после удаление объекта формы. Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы. |
|||
8
12040
31.12.15
✎
10:02
|
Код не окончательный. Во многом стал таким из-за попыток решения этого вопроса.
Мне непонятно, почему когда я просто путь на сервере прописываю в "УдалитьФайлы(ПутьКФайлуНаСервере);", файл остается. Может быть, этот файл уже нельзя временным назвать, но всё же. |
|||
9
НЕА123
31.12.15
✎
10:16
|
УдалитьФайлы(ПутьКФайлуНаСервере, "*.*");
|
|||
10
ЧеловекДуши
31.12.15
✎
10:34
|
(8) А все же может просто ""
Глобальный контекст.УдалитьИзВременногоХранилища (Global context.DeleteFromTempStorage) Глобальный контекст (Global context) УдалитьИзВременногоХранилища (DeleteFromTempStorage) Синтаксис: УдалитьИзВременногоХранилища(<Адрес>) Параметры: <Адрес> (обязательный) Тип: Строка. Адрес файла во временном хранилище, который необходимо удалить. Описание: Удаляет ранее помещенное значение из временного хранилища. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. |
|||
11
ЧеловекДуши
31.12.15
✎
10:36
|
(9) Главное не удалить системные файлы ;)
|
|||
12
kiruha
31.12.15
✎
11:09
|
(0)
Формат C тоже не работает ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |