Ошибка сжатых ZIP папок

Особенности работы с ZIP-объектами

Платформа 1С:Предприятие предоставляет возможности работы с ZIP архивами. Для этого в системе существуют объекты ЗаписьZIPФайла, ответственный за запись, и ЧтениеZIPФайла, соответственно ответственный за чтение архивов.

Создание ZIP-архивов

Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий:

  • Создать архив с необходимыми параметрами, в который будут помещаться файлы.
  • Поместить в архив необходимые файлы.
  • Записать архив.

Рассмотрим эти действия подробнее.

Создание объекта ЗаписьZIPФайламожно осуществить двумя путями — создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть. В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя файла, куда будет записан архив.

Для создания нового архива требуется указать:

  1. Имя файла, куда будет записан архив. Этот параметр является обязательным. Если такой файл уже существует на диске, он будет перезаписан!
  2. Пароль доступа к архиву. Если этот параметр пропущен или равен пустой строке, то шифрование производится не будет!
  3. Комментарий к архиву.
  4. Метод сжатия файлов в архиве. На выбор предоставляется возможность скопировать файлы в архив без сжатия или сжать их. По умолчанию файлы сжимаются.
  5. Уровень сжатия файлов в архиве. Можно выбирать между минимальным, оптимальным и максимальным сжатием. По умолчанию используется оптимальное сжатие
  6. Метод шифрования. Можно защитить архив методом шифрования ZIP 2.0,совместимым с большинством программ, или с помощью шифрования на основе новейшего стандарта AES с различной длиной ключа (128, 192 и 256 бит). Однако следует помнить, что данный метод может быть не совместим с некоторыми программами архивирования, например WinRAR.

После создания объекта необходимо добавить в него необходимые файлы, воспользовавшись методом Добавить.

Часто встречающиеся ошибки 1С и общие способы их решения

Он принимает на вход 3 параметра:

  1. Полное имя файла или маску.
  2. Режим сохранения путей к файлу. Можно сохранять полные пути, не сохранять пути совсем или сохранять пути относительно каталога.
  3. Режим обработки подкаталогов. Можно обрабатывать подкаталоги рекурсивно или не обрабатывать их. Параметр имеет смысл, если в качестве имени указана маска.

После того, как все необходимые файлы добавлены, можно записать архив на диск, воспользовавшись методом Записать().

 Важно понимать, что до выполнения этого метода, никаких реальных действий по созданию архива не происходит. После записи архива на диск объект закрывает его и для работы со следующим архивом необходимо выполнить метод Открыть().

Пример:

Копировать в буфер обменаСейчас = ТекущаяДата();// Создадим объект записи ZIP-архива ЗаписьZIP =Новый ЗаписьZipФайла(ИмяАрхивногоФайла, ПарольАрхивногоФайла,""+ МетодСжатия + Символы.ПС + УровеньСжатия + Символы.ПС + МетодШифрования, МетодСжатия, УровеньСжатия, МетодШифрования);// Добавим необходимые файлы в архив ЗаписьZIP.Добавить("c:\MyFiles\File1.xml", РежимСохраненияПутейZIP.НеСохранятьПути); ЗаписьZIP.Добавить("c:\MyFiles\MoreFiles\*.xml", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.НеОбрабатывать);// Запишем архив на диск ЗаписьZIP.Записать();// Сообщим время, которое потребовалось для работы. Сообщить("Упаковка заняла "+ ТекущаяДата()- Сейчас)+" секунд(ы)");

Особенности упаковки файлов по маске

Остановимся подробнее на особенностях упаковки файлов по маске.

Предположим, что у нас есть следующий файлы, которые нам необходимо поместить в архив:

Копировать в буфер обменаc:\ZipTest\11.xls c:\ZipTest\12.xls c:\ZipTest\13.xls c:\ZipTest\MoreFiles\14.xls c:\ZipTest\MoreFiles\15.xls c:\ZipTest\MoreFiles\16.xls

Пример 1

Мы хотим создать в архив с помощью нижеследующих команд:

Копировать в буфер обмена// Добавим необходимые файлы в архив ЗаписьZIP.Добавить("c:\ZipTest\11.xls", РежимСохраненияПутейZIP.СохранятьПолныеПути); ЗаписьZIP.Добавить("c:\ZipTest\12.xls", РежимСохраненияПутейZIP.СохранятьОтносительныеПути); ЗаписьZIP.Добавить("c:\ZipTest\13.xls", РежимСохраненияПутейZIP.НеСохранятьПути);

В результирующий архив будут помещены следующие файлы:

Копировать в буфер обмена\ZipTest\11.xls \12.xls \13.xls

Пример 2

Мы хотим создать в архив с помощью нижеследующих команд:

Копировать в буфер обмена// Добавим необходимые файлы в архив ЗаписьZIP.Добавить("c:\ZipTest\*.xls", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.НеОбрабатывать);

В результирующий архив будут помещены следующие файлы:

Копировать в буфер обмена\ZipTest\11.xls \ZipTest\12.xls \ZipTest\13.xls

Пример 3

Мы хотим создать в архив с помощью нижеследующих команд:

Копировать в буфер обмена// Добавим необходимые файлы в архив ЗаписьZIP.Добавить("c:\ZipTest\*.xls", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

В результирующий архив будут помещены следующие файлы:

Копировать в буфер обмена\ZipTest\11.xls \ZipTest\12.xls \ZipTest\13.xls \ZipTest\MoreFiles\14.xls \ZipTest\MoreFiles\15.xls \ZipTest\MoreFiles\16.xls

Чтение ZIP-архивов

Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий:

  • Открыть необходимый архив
  • Распаковать файлы

Рассмотрим эти действия подробнее.

Создание объекта ЧтениеZIPФайламожно осуществить двумя путями — создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть(). В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя архивного файла, с которым необходимо работать.

Для открытия архива требуется указать:

  1. Имя файла, который требуется открыть. Этот параметр является обязательным.
  2. Пароль доступа к архиву.

После того, как архив успешно открыт, можно получить информацию о файлах, хранящихся внутри него. Для этого у объекта ЧтениеZIPФайла предусмотрено свойство Элементы, которое предоставляет доступ к коллекции элементов ZIP файла.

Для каждого элемента можно получить разнообразную информацию о его имени, времени его модификации, его атрибутах, а также узнать является ли данный элемент зашифрованным.

После получения информации о элементах их можно распаковать на диск. Это возможно сделать двумя методами:

  • Воспользоваться методом ИзвлечьВсе().
  • Воспользоваться методом Извлечь().

Метод ИзвлечьВсе() распаковывает все файлы в архиву по указанному пути. Второй параметр данного метода определяет возможность восстановления исходных путей файлов.

Метод Извлечь() распаковывает указанный элемент коллекции из свойства Элементы по указанному пути. Второй параметр данного метода аналогичен тому же параметру метода ИзвлечьВсе(). Наибольший интерес представляет третий параметр данного метода — Пароль. В нем можно указать индивидуальный пароль для элемента архива, в случае если он зашифрован паролем отличным от других файлов.

После того, как архив нам больше не нужен можно завершить работу с ним вызвав метод Закрыть().

Пример:

Копировать в буфер обменаСообщить("Распаковка файла — "+ ИмяАрхивногоФайла); Сейчас = ТекущаяДата();// Откроем файл для чтения ЧтениеZIP =Новый ЧтениеZipФайла(ИмяАрхивногоФайла, ПарольАрхивногоФайла);// Сообщим комментарий архива Сообщить("Комментарий:"); Сообщить(ЧтениеZIP.Комментарий);// Распакуем все файлы из архива ЧтениеZIP.ИзвлечьВсе(ПапкаНазначения, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);// Распакуем файлы по одиночкеДляКаждого Элемент Из ЧтениеZIP.Элементы Цикл Сообщить("Распаковка файла:"+ Элемент.ПолноеИмя); ЧтениеZIP.Извлечь(Элемент, ПапкаНазначения, РежимВосстановленияПутейФайловZIP.Восстанавливать,?(Элемент.Зашифрован, ПарольАрхивногоФайла,""));КонецЦикла; ЧтениеZIP.Закрыть();// Сообщим время, потребовавшееся для работы Сообщить("Распаковка заняла "+(ТекущаяДата()- Сейчас)+" секунд(ы)");

Дополнительные возможности

При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения — если письмо превышает некий заранее установленный размер, оно отбрасывается сервером. Применительно к 1С:Предприятию такая ситуация может возникнуть при пересылке больших сообщений обмена данными.

Для решения этих проблем можно использовать функции РазделитьФайл() и ОбъединитьФайлы().

Функция РазделитьФайл() предназначена для разбиения файла на несколько частей указанного размера. Функция ОбъединитьФайлы() объединяет несколько файлов в один.

Более подробную информацию о этих функциях можно получить в документации.

Во время работы за компьютером многие пользователи наверняка сталкивались с форматом zip. Вы загружаете папку из интернета, например, с Google Drive, а получаете всего 1 файл. Он называется архивом. Архивы служат для сжатия информации в целях более компактного хранения и быстрой передачи через интернет. В данной статье рассматривается, как открыть или создать собственную папку zip.

Не загружается файл в клиент-серверном варианте

Стандартные средства Windows

В современных операционных системах сразу присутствует инструмент, позволяющий открыть сжатую zip-папку и работать с ее элементами. Вы можете просто открыть данный файл двойным кликом мыши, как обычную папку. Здесь можно работать со всем содержимым в обычной режиме с одной лишь разницей – все будет открываться довольно долго, так как требует предварительной распаковки.

Также вы можете разархивировать все содержимое. Для этого требуется кликнуть по кнопке «Извлечь все» в меню проводника. После этого утилита предложит вам выбрать место, в которое необходимо сохранить информацию.

Если вы хотите создать zip-архив базовыми средствами операционной системы Виндовс, необходимо вызвать контекстное меню. Для этого кликните по папке или файлу правой кнопкой мыши. В развернувшемся списке требуется выбрать опцию «Отправить». Выберите пункт «Сжатая zip-папка». После этих действий будет немедленно создан архив с аналогичным названием.

WinRar

Однако стандартные инструменты ОС Windows не очень удобны. Вы не можете быстро открыть сжатую папку и разархивировать все ее содержимое в один клик. Вы не можете создать архив с большей или меньшей степенью сжатия и так далее. Поэтому для работы с zip-папками используются сторонние программы, гораздо более удобные.

Самой распространенной программой является WinRar. Это бесплатное приложение, которое можно без проблем загрузить с официального сайта разработчика. Вам необходимо сделать следующее:

  1. Перейдите по ссылке http://www.win-rar.ru/download/.
  2. Скачайте версию для вашей операционной системы (обратите внимание на разрядность).
  3. Запустите загруженный файл, чтобы установить приложение на свой персональный компьютер.
  4. Следуйте инструкциям Мастера-Установщика.

После этого вы сможете легко работать с зип-архивами. Кликните ПКМ по сжатой папке и выберите в контекстном меню опцию «Извлечь» («Extract»).

Если вам необходимо создать собственный архив – выделите все нужные файлы, вызовите контекстное меню и щелкните по пункту «Add to archive».

В открывшемся окне можно выбрать различные конфигурации, в том числе и защитить свою папку паролем, без которого невозможно получить доступ к ее содержимому.

Похожие записи:

Настройка автоматической архивации 1С

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *