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