Перейти к основному содержимому

7z

Модуль 1С/OSOPI_7zКоманда CLI7z#Использоватьoint/formats/7z

Библиотека OPI_7z предназначена для создания, распаковки и изменения 7z-архивов в 1С:Предприятие, OneScript и CLI. На этой странице — краткий обзор возможностей и типовые сценарии; подробные сигнатуры методов см. в дочерних разделах документации.

Возможности

ЗадачаМетод
Запаковать каталог в 7zАрхивироватьКаталог
Распаковать весь архив в каталогРазархивироватьКаталог
Извлечь только нужные файлыРазархивироватьФайлы
Добавить, заменить или удалить файлыИзменитьАрхив
Получить шаблон настроек архивацииПолучитьСтруктуруНастроекАрхивации
Получить шаблон настроек измененияПолучитьСтруктуруИзмененияАрхива
Получить дерево файлов и каталоговПолучитьСписокФайлов
Получить метаданные и плоский списокПолучитьМетаданные

Архив и каталог-источник можно передать путём к файлу/каталогу на диске или двоичными данными. Для защищённых архивов используйте параметр Пароль (CLI: --password).

Типичный сценарий

Чаще всего работа выглядит так:

  1. Запаковать каталог с нужными настройками сжатия — АрхивироватьКаталог.
  2. Посмотреть содержимое — ПолучитьСписокФайлов или ПолучитьМетаданные (с паролем, если архив защищён).
  3. Распаковать всё — РазархивироватьКаталог, либо только выбранные пути — РазархивироватьФайлы.
Каталог = "C:\Данные\проект";
ПутьАрхива = "C:\Архивы\проект.7z";

// 1. Создание архива с паролем
Настройки = OPI_7z.ПолучитьСтруктуруНастроекАрхивации(Истина);
Настройки["password"] = "СекретныйПароль";
Настройки["method"] = "Lzma2";
Настройки["level"] = 9;

Результат = OPI_7z.АрхивироватьКаталог(Каталог, ПутьАрхива, Настройки);

// 2. Просмотр содержимого
Список = OPI_7z.ПолучитьСписокФайлов(ПутьАрхива, "СекретныйПароль");

Архивация

АрхивироватьКаталог запаковывает файлы указанного каталога. Второй параметр — путь сохранения; если его не указать, архив вернётся как ДвоичныеДанные.

Каталог = "C:\МойКаталог";
ПутьАрхива = "C:\Архивы\архив.7z";

Результат = OPI_7z.АрхивироватьКаталог(Каталог, ПутьАрхива);

Настройки сжатия и шифрования

ПолучитьСтруктуруНастроекАрхивации возвращает структуру дополнительных параметров:

  • password — пароль для защиты архива
  • method — метод сжатия: Lzma2 (по умолчанию), Lzma, Bzip2, Ppmd, Copy
  • level — уровень сжатия от 0 до 9 (по умолчанию 6)
  • solid — solid-архивация (сжатие одним потоком): Истина/Ложь (по умолчанию Истина)
  • encrypt_header — шифрование заголовка: Истина (по умолчанию при наличии пароля) / Ложь
  • threads — число потоков для LZMA2 (по умолчанию 1)
  • chunk_size — размер блока при threads > 1
  • dictionary_size — размер словаря для LZMA2
  • ppmd_order, ppmd_memory — параметры метода Ppmd
  • filters — фильтры предобработки: X86, PPC, IA64, ARM, ARM64, ARM_THUMB, SPARC, RISCV, DELTA
  • delta_distance — расстояние для фильтра DELTA (по умолчанию 1)
Настройки = OPI_7z.ПолучитьСтруктуруНастроекАрхивации(Истина);
Настройки["password"] = "СекретныйПароль";
Настройки["method"] = "Lzma2";
Настройки["level"] = 9;
Настройки["encrypt_header"] = Истина;
Настройки["threads"] = 4;

Результат = OPI_7z.АрхивироватьКаталог(Каталог, ПутьАрхива, Настройки);
подсказка

Для максимального сжатия используйте Lzma2 с уровнем 9. Для быстрого создания архива снизьте уровень или используйте метод Copy.

important

При encrypt_header = Истина имена файлов в архиве также шифруются и не видны без пароля.

Распаковка

Весь архив

РазархивироватьКаталог извлекает все файлы в указанный каталог. Для защищённого архива передайте пароль третьим параметром.

ПутьАрхива = "C:\Архивы\архив.7z";
КаталогНазначения = "C:\Распаковка";

Результат = OPI_7z.РазархивироватьКаталог(ПутьАрхива, КаталогНазначения);

// Архив с паролем
Результат = OPI_7z.РазархивироватьКаталог(ПутьАрхива, КаталогНазначения, "МойПароль123");

Отдельные файлы

РазархивироватьФайлы принимает массив полных путей внутри архива — те же строки, что возвращает просмотр содержимого.

Пути = Новый Массив;
Пути.Добавить("readme.txt");
Пути.Добавить("docs\note.txt");

Результат = OPI_7z.РазархивироватьФайлы(ПутьАрхива, Пути, КаталогНазначения, "МойПароль123");
подсказка

Перед выборочной распаковкой надёжнее сначала вызвать ПолучитьСписокФайлов или ПолучитьМетаданные и взять пути из ответа.

Модификация архива

ИзменитьАрхив добавляет, заменяет или удаляет файлы в существующем архиве. Архив на диске изменяется на месте. Пароли распаковки и запаковки задаются в Настройки — см. ПолучитьСтруктуруИзмененияАрхива.

ПутьАрхива = "C:\Архивы\архив.7z";

ДобавляемыеФайлы = Новый Соответствие;
ДобавляемыеФайлы.Вставить("docs/new.txt", "C:\Файлы\новый.txt");

УдаляемыеПути = Новый Массив;
УдаляемыеПути.Добавить("old/obsolete.txt");

Настройки = OPI_7z.ПолучитьСтруктуруИзмененияАрхива(Истина);
Настройки["unpack_password"] = "СтарыйПароль";
Настройки["password"] = "НовыйПароль";

Результат = OPI_7z.ИзменитьАрхив(ПутьАрхива, ДобавляемыеФайлы, УдаляемыеПути, Настройки);

Просмотр содержимого

ПолучитьСписокФайлов — иерархическое дерево каталогов и файлов.

ПолучитьМетаданные — сводная информация об архиве и плоский список файлов с характеристиками.

Пароль = "МойПароль123";

Дерево = OPI_7z.ПолучитьСписокФайлов(ПутьАрхива, Пароль);
Метаданные = OPI_7z.ПолучитьМетаданные(ПутьАрхива, Пароль);

Файл на диске и двоичные данные

Параметры Архив и Каталог принимают путь на диске или ДвоичныеДанные.

ДвоичныеДанные = Новый ДвоичныеДанные("C:\Архивы\архив.7z");

Список = OPI_7z.ПолучитьСписокФайлов(ДвоичныеДанные, "МойПароль123");
Результат = OPI_7z.РазархивироватьКаталог(ДвоичныеДанные, "C:\Распаковка", "МойПароль123");

Если при распаковке не указать каталог назначения, файлы вернутся в ответе как соответствие «путь → двоичные данные». При архивации без пути сохранения вернутся ДвоичныеДанные архива.

// Содержимое архива в соответствии, без записи на диск
Описание = OPI_7z.РазархивироватьКаталог(ДвоичныеДанные, "", "МойПароль123");

// Архив в памяти, без записи на диск
АрхивВПамяти = OPI_7z.АрхивироватьКаталог(Каталог, "", Настройки);
подсказка

Для крупных архивов предпочтительнее путь к файлу на диске: так меньше расход памяти.

примечание

Подробности полей ответа, варианты CLI и примеры результатов — на страницах методов в разделах Архивация и Получение метаданных.