![]() |
|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
DES 25.01.21 - 16:15 | Клиент загружает файл на сервер, сервер его обрабатывает и формирует файл ответа (при этом создает и удаляет промежуточные временные файлы).
Клиент скачивает файл ответа. Как затем удалить этот файл (из каталога временных файлов) ? По расширению, при входе, удалять нельзя, так как могут существовать еще не скаченные другими клиентами подобные файлы. | ||
Жан Пердежон 1 - 25.01.21 - 16:23 | какими другими? какому расширению? у тебя полное имя файла есть - его и удаляй | ||
DES 2 - 25.01.21 - 16:25 | Не хочет клиент удалять файлы на сервере ни по полному ни по укороченному имени | ||
DES 3 - 25.01.21 - 16:26 | А сервер не знает скачал клиент файл и можно ли его грохать. | ||
acht 4 - 25.01.21 - 16:28 | (3) А клиент знает - скачал ли он файл? | ||
DES 5 - 25.01.21 - 16:32 | нет, но то что начал качать известно | ||
arsik 6 - 25.01.21 - 16:32 | (0) Зачем ты вообще файлы на сервере создаешь? Делай все в памяти, 1с нормально с потоками работает. Отдавай клиенту поток. | ||
acht 7 - 25.01.21 - 16:36 | (5) Тогда твоя задача не имеет решение кроме таймаута - вести список файлов и, например, через сутки удалять протухшие. | ||
fisher 8 - 25.01.21 - 16:37 | (0) Получается, ты асинхронные запросы реализовал? Клиент периодически проверяет наличие файла-ответа? | ||
fisher 9 - 25.01.21 - 16:42 | И файлы ты не через временное хранилище передаешь а как-то иначе? | ||
DES 10 - 25.01.21 - 16:47 | |||
fisher 11 - 25.01.21 - 17:08 | (10) Клиентом файл скачивается каким способом? | ||
Kassern 12 - 25.01.21 - 17:17 | (0) давай людям ссылку на скачивание и предупреждай что она будет доступна в течении Nого времени. По прошествии этого времени удаляй файл регламентно. | ||
acht 13 - 25.01.21 - 17:30 | (12) > 8.3.18
НачатьПолучениеФайловССервера Вариант синтаксиса: Без диалога Синтаксис: НачатьПолучениеФайловССервера(<ОписаниеОповещенияОЗавершении>, <ПолучаемыеФайлы>, <БазовыйКаталог>, <ПараметрыПолученияАрхиваФайлов>) Параметры: <ОписаниеОповещенияОЗавершении> (необязательный)Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: <ПолученныеФайлы> – массив объектов типа ОписаниеПереданногоФайла. <ДополнительныеПараметры> – значение, которое было указано при создании объекта ОписаниеОповещения. | ||
acht 14 - 25.01.21 - 17:31 | Так что в (5) ты наврад | ||
acht 15 - 25.01.21 - 17:31 | л =) | ||
Жан Пердежон 16 - 25.01.21 - 17:51 | (13) он вообще нигде ни разу не сказал, как он файлы получает, но ни в одном из способов такой проблемы быть не должно (если специально не постараться) | ||
acht 17 - 25.01.21 - 18:00 | (16) Ды я вообще думал, что это не в 1С | ||
DES 18 - 25.01.21 - 19:50 | Вопрос не в способе передачи, а в зачистке мусора. | ||
DES 19 - 25.01.21 - 19:51 | использую
ПолучитьФайлССервераАсинх(АдресХранилища, РезультатФайлXLS, ПараметрыДиалога) | ||
DES 20 - 25.01.21 - 20:08 | А как изменить каталогвременныхфайлов сервера ?
чтобы не использовалось c:\windows\temp | ||
DES 21 - 25.01.21 - 20:20 | (13) Это требует установки расширения в браузер. Не хотелось бы. | ||
Garykom 22 - 25.01.21 - 21:18 | (0) хранить статус скачивания файла, обновлять его, скачанные по прошествии времени удалять | ||
acht 23 - 25.01.21 - 23:41 | |||
acht 24 - 25.01.21 - 23:45 | (21)+ Ты точно читал СП, или выборочно проглядел? | ||
fisher 25 - 26.01.21 - 10:41 | (19) Может, я чего-то не понимаю. Но почему ты не прибиваешь временный файл сразу после помещения его во временное хранилище? | ||
DES 26 - 26.01.21 - 12:00 | (25)
если так делаю то он не скачивается &НаСервере Функция ПолучитьАдресФайлаДляСкачивания()
Перем ВремХран;
ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS));
 //УдалитьФайлыАсинх(РезультатФайлXLS);
Возврат ВремХран;
КонецФункции | ||
DES 27 - 26.01.21 - 12:02 | &НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус="Выполнено" Тогда
РезультатФайлXLS = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
ЭтаФорма.Элементы.НадписьПояснение.Заголовок = "Выполнено.";
ЭтаФорма.Элементы.НадписьПояснение.ЦветТекста = WebЦвета.Зеленый;
АдресХранилища = ПолучитьАдресФайлаДляСкачивания();
ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;
ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to save the file'");
ПолучитьФайлССервераАсинх(АдресХранилища, СтрЗаменить(ИмяФайлаPDF,".pdf",".xlsx"), ПараметрыДиалога);
КонецЕсли;
КонецПроцедуры | ||
fisher 28 - 26.01.21 - 12:26 | (26) ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), УникальныйИдентификатор); | ||
fisher 29 - 26.01.21 - 12:29 | "В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы." "Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы" | ||
DES 30 - 26.01.21 - 14:56 | (29) УникальныйИдентификатор никак не влияет на РезультатФайлXLS
а мне необходимо удалять файл по адресу РезультатФайлXLS Рекламное место пустует | ||
fisher 31 - 26.01.21 - 15:00 | (30) Ты не понял. Если ты не привязываешь время жизни временного хранилища ко времени жизни формы (указав уникальный идентификатор формы вторым параметром), то временное хранилище просто "слетает" после вызова УдалитьФайлыАсинх(). | ||
DES 32 - 26.01.21 - 15:38 | если раскомментирую удаление, то вышибает На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто &НаСервере Функция ПолучитьАдресФайлаДляСкачивания(РезультатФайлXLS, Уник)//Уник=ЭтаФорма.УникальныйИдентификатор (059aa38a-cd5c-4692-a6ee-18efa17b828c) Перем ВремХран; ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), Уник);  //УдалитьФайлыАсинх(РезультатФайлXLS); Возврат ВремХран; КонецФункции Если делаю//УдалитьФайлыАсинх(РезультатФайлXLS); то все выполняется без ошибок | ||
fisher 33 - 26.01.21 - 15:43 | (32) "Работа с файлами в асинхронном режиме присутствует только на стороне клиентского приложения. В общем случае следует использовать синхронные методы для работы на стороне сервера и асинхронные ‑ для работы на стороне клиентского приложения." | ||
fisher 34 - 26.01.21 - 15:46 | Короче, попробуй просто синхронное УдалитьФайлы() | ||
DES 35 - 26.01.21 - 15:46 | (34) верно, ФайлыАсинх(РезультатФайлXLS);
сработало |
|
Список тем форума |