В этой статье я расскажу о работе с ZIP-архивами в 1С. Для работы с ZIP-архивами в 1С существует пара специальных объектов. К сожалению, для RAR-архивов таких объектов не существует, поэтому работа с RAR-архивами будет рассмотрена в отдельной статье.
Процедура СоздатьZIP(Команда)
ЗаписьZIP = Новый ЗаписьZipФайла(«C:архив.zip», «пароль», «комментарий», МетодСжатияZIP.BZIP2, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.AES256);
тФайлы = НайтиФайлы(«C:1», «*.txt», Истина);
Для Каждого тФайл Из тФайлы Цикл
ЗаписьZIP.Добавить(тФайл.ПолноеИмя, РежимСохраненияПутейZIP.НеСохранятьПути);
КонецЦикла;
ЗаписьZIP.Записать();
КонецПроцедуры
Чтение списка файлов и распаковка ZIP-архива:
Процедура ЧтениеИРаспаковкаZIP(Команда)
ЧтениеZIP = Новый ЧтениеZipФайла(«C:архив.zip», «пароль»);
Сообщить(ЧтениеZIP.Комментарий);
Для Каждого тЭлемент Из ЧтениеZIP.Элементы Цикл
Сообщить(«Файл:» + тЭлемент.ПолноеИмя);
ЧтениеZIP.Извлечь(тЭлемент, «C:3», РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Обзор возможностей “1С:ЗУП”
КонецЦикла;
ЧтениеZIP.ИзвлечьВсе(«C:2», РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
ЧтениеZIP.Закрыть();
КонецПроцедуры
Не думаю, что данный код нуждается в каких-либо комментариях, отмечу лишь, что метод сжатия BZIP2 доступен начиная с версии платформы 8.3.7.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Оценка статьи:



(Пока оценок нет)
Источник: 1c-programmer-blog.ru
Архивирование ZIP
Для записи, чтения ZIP архивов во встроенном языке программирования 1С, предназначены специальные объекты «ЗаписьZIPФайла» и «ЧтениеZIPФайла». Данные объекты работают независимо от установленных архиваторов, так как используют встроенные средства ОС Windows.
ZIP — это формат для архивирования файлов. Формат был разработан Филом Кацем в 1989 году. При сжатии могут использоваться различные алгоритмы. Deflate — является одним из популярных алгоритмов.
Создать ZIP архив (архивирование файлов)
Для архивирования файлов в 1С:Предприятии предназначен объект «ЗаписьZIPФайла», встроенного языка программирования. Функция Открыть() или конструктор объекта ЗаписьZIPФайла(, , , , , ) позволяют задать ряд настроек создаваемого архива.
Что такое 1С?
ИмяФайла — путь к файлу создаваемого архива
Пароль — если требуется установить на архив пароль
Комментарий — описание ZIP файла
МетодСжатия — определяется метод сжатия данных (Копирование, Сжатие)
УровеньСжатия — определяет степень сжатия (Максимальный, Минимальный, Оптимальный)
МетодШифрования — AES128 (AES128), AES192 (AES192), AES256 (AES256), Zip20 (Zip20)
Процедура СоздатьАрхивZIP()
ЗаписьZIP = Новый ЗаписьZipФайла(«C:ИмяФайла.zip»,
«Пароль»,
«Комментарий»,
МетодСжатияZIP.Сжатие,
УровеньСжатияZIP.Максимальный,
МетодШифрованияZIP.Zip20);
//Добавление файла по полному пути
ЗаписьZIP.Добавить(«C:ImageImage.jpg»);
//Добавление файлов по маске
ЗаписьZIP.Добавить(«C:Image*.jpg»);
//Запись архива
ЗаписьZIP.Записать();
КонецПроцедуры
Распаковать ZIP архив
Для того чтобы разархивировать в 1С существует объект «ЧтениеZipФайла». С помощью функции Открыть() или конструктора объекта ЧтениеZipФайла(, ) можно задать параметры распаковываемого архива.
ИмяФайла — путь к файлу архива
Пароль — если на архив установлен пароль
Процедура РаспаковатьАрхивZIP()
ЧтениеZIP = Новый ЧтениеZipФайла(«C:ИмяФайла.zip», «Пароль»);
//Получить комментарий к архиву
Комментарий = ЧтениеZIP.Комментарий;
//Извлечь все файлы
Директория = «C:Image»;
ЧтениеZIP.ИзвлечьВсе(Директория);
//Извлечение файлов по одному
Для каждого Элемент Из ЧтениеZIP.Элементы Цикл
ЧтениеZIP.Извлечь(Элемент, Директория,
РежимВосстановленияПутейФайловZIP.Восстанавливать,
«Пароль»);
КонецЦикла;
КонецПроцедуры
Комментарии (0)
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Источник: 1clenta.ru
1С 8.x : ZIP-архив Создание
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий:
* Создать архив с необходимыми параметрами, в который будут помещаться файлы.
* Поместить в архив необходимые файлы.
* Записать архив.
Создание объекта ЗаписьZIPФайла можно осуществить двумя путями — создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть. В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя файла, куда будет записан архив.
Для создания нового архива требуется указать:
* Имя файла, куда будет записан архив. Этот параметр является обязательным. Если такой файл уже существует на диске, он будет перезаписан!Пароль доступа к архиву. Если этот параметр пропущен или равен пустой строке, то шифрование производится не будет!
* Комментарий к архиву.
* Метод сжатия файлов в архиве. На выбор предоставляется возможность скопировать файлы в архив без сжатия или сжать их. По умолчанию файлы сжимаются.
* Уровень сжатия файлов в архиве. Можно выбирать между минимальным, оптимальным и максимальным сжатием. По умолчанию используется оптимальное сжатие
* Метод шифрования. Можно защитить архив методом шифрования ZIP 2.0, совместимым с большинством программ, или с помощью шифрования на основе новейшего стандарта AES с различной длиной ключа (128, 192 и 256 бит). Однако следует помнить, что данный метод может быть не совместим с некоторыми программами архивирования, например WinRAR.
После создания объекта необходимо добавить в него необходимые файлы, воспользовавшись методом Добавить. Он принимает на вход 3 параметра:
1. Полное имя файла или маску.
2. Режим сохранения путей к файлу. Можно сохранять полные пути, не сохранять пути совсем или сохранять пути относительно каталога. Режим обработки подкаталогов. Можно обрабатывать подкаталоги рекурсивно или не обрабатывать их. Параметр имеет смысл, если в качестве имени указана маска.
После того, как все необходимые файлы добавлены, можно записать архив на диск, воспользовавшись методом Записать().
Важно понимать, что до выполнения этого метода, никаких реальных действий по созданию архива не происходит. После записи архива на диск объект закрывает его и для работы со следующим архивом необходимо выполнить метод Открыть().
Пример:
Код 1C v 8.х
Сейчас = ТекущаяДата();
// Создадим объект записи ZIP-архива
ЗаписьZIP = Новый ЗаписьZipФайла(ИмяАрхивногоФайла,
ПарольАрхивногоФайла,
«» + МетодСжатия + Символы.ПС + УровеньСжатия + Символы.ПС + МетодШифрования,
МетодСжатия,
УровеньСжатия,
МетодШифрования);
// Добавим необходимые файлы в архив
ЗаписьZIP.Добавить(«c:MyFilesFile1.xml», РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьZIP.Добавить(«c:MyFilesMoreFiles*.xml», РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.НеОбрабатывать);
// Запишем архив на диск
ЗаписьZIP.Записать();
// Сообщим время, которое потребовалось для работы.
Сообщить(«Упаковка заняла » + ТекущаяДата() — Сейчас) + » секунд(ы)»);
Особенности упаковки файлов по маске
Источник: helpf.pro