Создать учебный ZIP: РежимВосстановленияПутейФайловZIP.НеВосстанавливать

Учебные задачи

При извлечении из архива пути файлов игнорируются. Значение применяется к конкретной операции из примера.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Пример запускается на сервере учебной базы под учётной записью с доступом к собственному каталогу C:\Temp\LearnZip\src. Это путь сервера 1С, не компьютера тонкого клиента.

  2. Вручную создайте там файл book.txt с несколькими строками учебного текста и подкаталог sub с файлом note.txt. Имена должны быть латинскими; секретов и рабочих документов в каталоге быть не должно.

  3. Код создаёт новый ZIP по уникальному временному имени и показывает его путь. Ранее существовавший архив не перезаписывается. После опыта удалите только созданные учебные файлы вручную.

КаталогИсточника = "C:\Temp\LearnZip\src";
ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
Пароль = "";
Архив = Новый ЗаписьZipФайла(ИмяАрхива, Пароль, "Учебный архив",
    МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Оптимальный,
    МетодШифрованияZIP.Zip20, КодировкаИменФайловВZipФайле.UTF8);
Архив.Добавить(КаталогИсточника + "\*.txt",
    РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
Архив.Записать();
Чтение = Новый ЧтениеZipФайла(ИмяАрхива, Пароль);
Для Каждого Элемент Из Чтение.Элементы Цикл
    Сообщить(Элемент.ПолноеИмя + ": " + Строка(Элемент.РазмерНесжатого));
КонецЦикла;
КаталогРезультата = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогРезультата);
Чтение.ИзвлечьВсе(КаталогРезультата, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Чтение.Закрыть();
Сообщить("Распаковано в: " + КаталогРезультата);

Разбор по шагам

  1. Исходные файлы создаются вручную в отдельном каталоге; архив получает новое временное имя.

  2. Выбранное перечисление передаётся в соответствующий аргумент конструктора или метода.

  3. Записать завершает архив; чтение показывает реальные имена и размеры, затем закрывается.

Как проверить результат

  1. Восстанавливать оставляет sub\note.txt внутри подкаталога, НеВосстанавливать размещает note.txt непосредственно в новом каталоге результата.

  2. Файлы book.txt и note.txt имеют разные имена, поэтому при удалении структуры каталогов они не сталкиваются.

Ожидаемый результат

Учебный архив создан с явно выбранным режимом.

На что обратить внимание

  1. Пароль в коде предназначен только для демонстрации; это не настоящий секрет.

  2. Распаковка непроверенного внешнего архива не входит в этот пример.

  3. Распаковывайте только архив, созданный этим же примером из указанных учебных файлов. Произвольный внешний ZIP нельзя считать безопасным: отдельно проверяют пути, число файлов и распакованный размер.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.