7z
Библиотека OPI_7z предназначена для создания, распаковки и изменения 7z-архивов в 1С:Предприятие, OneScript и CLI. На этой странице — краткий обзор возможностей и типовые сценарии; подробные сигнатуры методов см. в дочерних разделах документации.
Возможности
| Задача | Метод |
|---|---|
| Запаковать каталог в 7z | АрхивироватьКаталог |
| Распаковать весь архив в каталог | РазархивироватьКаталог |
| Извлечь только нужные файлы | Разархивироват ьФайлы |
| Добавить, заменить или удалить файлы | ИзменитьАрхив |
| Получить шаблон настроек архивации | ПолучитьСтруктуруНастроекАрхивации |
| Получить шаблон настроек изменения | ПолучитьСтруктуруИзмененияАрхива |
| Получить дерево файлов и каталогов | ПолучитьСписокФайлов |
| Получить метаданные и плоский список | ПолучитьМетаданные |
Архив и каталог-источник можно передать путём к файлу/каталогу на диске или двоичными данными. Для защищённых архивов используйте параметр Пароль (CLI: --password).
Типичный сценарий
Чаще всего работа выглядит так:
- Запаковать каталог с нужными настройками сжатия —
АрхивироватьКаталог. - Посмотреть содержимое —
ПолучитьСписокФайловилиПолучитьМетаданные(с паролем, если архив защищён). - Распаковать всё —
РазархивироватьКаталог, либо только выбранные пути —РазархивироватьФайлы.
Каталог = "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.
При 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 и примеры результатов — на страницах методов в разделах Архивация и Получение метаданных.