|   |   | 
| 
 | Архивирование - ЗаписьZIPФайла | ☑ | ||
|---|---|---|---|---|
| 0
    
        kisobol 12.08.15✎ 03:58 | 
        Подскажите, в табличной части задаются пути к данным которые нужно за архивировать, если указать файлы то данные копируются, но если указать напрямую папку с файлами, то создается пустой архив.
 &НаКлиенте Процедура Архивировать(Команда) Архив = Новый ЗаписьZIPФайла(Объект.ПутьКудаКопировать+"\"+"Архив"+".zip", "Пароль", "Комментарий", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Для Каждого СтрокаТЧ ИЗ Объект.ТабОткудаКопировать Цикл //обходим табличную часть, в ней строки с путем где лежат файлы Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать, РежимСохраненияПутейZIP.СохранятьПолныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); КонецЦикла; Архив.Записать(); Сообщить("Заархивировал"); КонецПроцедуры | |||
| 1
    
        Снежный человек 12.08.15✎ 04:39 | 
        <РекурсивнаяОбработкаПодпапок> (необязательный)
 Тип: РежимОбработкиПодкаталоговZIP. В случае добавления файлов по маске обрабатывать дополнительно подкаталоги. Значение по умолчанию: НеОбрабатывать. РежимОбработкиПодкаталоговZIP (ZIPSubDirProcessingMode) Значения НеОбрабатывать (DontProcess) ОбрабатыватьРекурсивно (ProcessRecursively) Описание: Содержит варианты обработки масок файлов в именах для упаковки в ZIP архив. | |||
| 2
    
        kisobol 12.08.15✎ 04:42 | 
        Пробовал и так и так
 НеОбрабатывать (DontProcess) ОбрабатыватьРекурсивно (ProcessRecursively) Все равно архив пустой | |||
| 3
    
        Снежный человек 12.08.15✎ 04:43 | 
        (2) используй rar, жмет лучше и проще с ним.     | |||
| 4
    
        kisobol 12.08.15✎ 04:47 | 
        На системе нет рара =(
 Нужно извратиться с зипом. | |||
| 5
    
        ASV 12.08.15✎ 04:48 | 
        Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+'\*', РежимСохраненияПутейZIP.СохранятьПолныеПути,
 РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); | |||
| 6
    
        kisobol 12.08.15✎ 06:35 | 
        ASV, да работает с папками. Но теперь к расширению файла прибавляется \ и вываливается 
 {Справочник.МестоБекапа.Форма.ФормаЭлемента.Форма(73)}: Ошибка при вызове метода контекста (Добавить) Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+"\", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, по причине: Некорректное имя файла: file://E:\upload.xml\* по причине: Неправильный путь к файлу 'file://E:\upload.xml\*'. 123(0x0000007B): Синтаксическая ошибка в имени файла, имени папки или метке тома. | |||
| 7
    
        ЧеловекДуши 12.08.15✎ 06:38 | 
        Строчка "Добавить" и добавляет в пакет архива все файлы.
 Соизволь в цикле пройтись по всем нужным файлам :) | |||
| 8
    
        ЧеловекДуши 12.08.15✎ 06:39 | 
        (6) Это ДНК, не излечимо :)     | |||
| 9
    
        kisobol 12.08.15✎ 06:44 | 
        Так циклом прохожусь, он добавляет все папки с содержимым в архив, но казлит именно на отдельных файлах.     | |||
| 10
    
        ЧеловекДуши 12.08.15✎ 06:57 | 
        (9) Ты добавь проверочку
 Файл = Новый Файл(ПутьКФайлу); Файл.ЭтоФайл() Или Файл.ЭтоКаталог() Как вам угодно :) | |||
| 11
    
        ЧеловекДуши 12.08.15✎ 06:57 | 
        (9) И лишний наклонную не проставляй, если это не каталог или если это файл :)     | |||
| 12
    
        kisobol 12.08.15✎ 07:20 | 
        Спасибо за пинок.
 &НаКлиенте Процедура Архивировать(Команда) Архив = Новый ЗаписьZIPФайла(Объект.ПутьКудаКопировать+"\"+"Архив"+".zip", "Пароль", "Комментарий", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Для Каждого СтрокаТЧ ИЗ Объект.ТабОткудаКопировать Цикл //обходим табличную часть, в ней строки с путем где лежат файлы Файл = Новый Файл(СтрокаТЧ.ПутьОткудаКопировать); Если Файл.ЭтоФайл() Тогда Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); Иначе Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+"\", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); КонецЕсли; КонецЦикла; Архив.Записать(); Сообщить("Заархивировал"); КонецПроцедуры | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |