v8unpack-cf - распаковка и сборка бинарных файлов 1С
SkillFiles & storageUnpacking and building 1C binary files (CF/CFE/EPF) via the v8unpack Python utility. Use when you need to unpack a configuration, extension, or data processor into sources, or build them back.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the v8unpack-cf - распаковка и сборка бинарных файлов 1С skill
What this skill tells your AI
The instructions your AI receives, as published by desko77/claude-code-skills-1c in skills/v8unpack-cf/SKILL.md and read by ahel’s review.
Утилита saby v8unpack (Python) распаковывает CF/CFE/EPF файлы 1С в человекочитаемые исходники (JSON + BSL) с деревом метаданных - без платформы 1С.
Установка: pip install v8unpack (или dev-install из репозитория).
Команды
Распаковка (-E)
python -m v8unpack -E "<файл.cf>" "<папка_исходников>" --temp "<папка_temp>"
| Параметр | Описание |
|---|---|
<файл.cf> | Путь к CF, CFE или EPF файлу |
<папка_исходников> | Куда распаковать (создается автоматически) |
--temp <путь> | Папка для промежуточных данных (не удаляется - для отладки) |
--processes N | Количество потоков (по умолчанию cpu_count - 2) |
--descent XYYZZZ | Режим версионирования расширений (суффикс версии конфигурации) |
--auto_include | Динамическое оглавление из папки, а не из заголовка |
--prefix STR | Префикс имен метаданных 1-го уровня |
Сборка (-B)
python -m v8unpack -B "<папка_исходников>" "<файл.cf>"
| Параметр | Описание |
|---|---|
<папка_исходников> | Папка с распакованными исходниками |
<файл.cf> | Путь к выходному CF/CFE/EPF файлу |
--index <path> | JSON-файл оглавления (маппинг файлов по папкам) |
--version XYYZZ | Версия режима совместимости (для расширений), напр. 80306 = 8.3.6 |
--descent XYYZZZ | Суффикс версии конфигурации |
Индексация (-I)
python -m v8unpack -I "<папка_исходников>" --index index.json --core core
Генерирует/обновляет index.json - файл оглавления для раскладки исходников по подпапкам.
Пакетные операции (-EA, -BA, -IA)
python -m v8unpack -EA products.json # распаковать все продукты
python -m v8unpack -BA products.json # собрать все продукты
python -m v8unpack -BA products.json --index KEY # собрать конкретный продукт
Файл products.json описывает несколько продуктов с индивидуальными параметрами сборки.
Python API
import v8unpack
v8unpack.extract('d:/sample.cf', 'd:/src')
v8unpack.extract('d:/sample.cf', 'd:/src', temp_dir='d:/temp',
options={'descent': 4100200, 'auto_include': True})
v8unpack.build('d:/src', 'd:/repacked.cf')
v8unpack.build('d:/src', 'd:/repacked.cf', index='index.json',
options={'descent': 4100200, 'version': '80306'})
Примеры использования
Распаковать конфигурацию
python -m v8unpack -E "<project>/1Cv8.cf" "<project>/src" --temp "<project>/temp"
Собрать обратно
python -m v8unpack -B "<project>/src" "<project>/1Cv8_new.cf"
Распаковать внешнюю обработку
python -m v8unpack -E "МояОбработка.epf" "src_epf"
Распаковать расширение
python -m v8unpack -E "МоеРасширение.cfe" "src_cfe" --descent 3000112
Собрать расширение
python -m v8unpack -B "src_cfe" "bin/ext.cfe" --index cmd/index.json --descent 3000112 --version 80316
Совместимость версий
Версия утилиты записывается в Configuration.json ("v8unpack": "1.2.6"). При сборке проверяется совпадение major.minor. Если версии не совпадают:
- Собрать старой версией
- Обновить утилиту
- Распаковать новой версией
- Закоммитить
Круговая сборка: проверяй, а не верь на слово
Про версию 1.2.6 встречается утверждение, что при сборке (-B) она пишет в заголовок контейнера
размер блока 0x54 вместо 0x200, из-за чего результат приходится патчить.
На 1.2.9 это не воспроизводится (проверено 14.08.2026 на реальной .epf 1.8 МБ): распаковка и
обратная сборка проходят без ошибок, в заголовке и исходного, и пересобранного файла
page_size = 0x200. Размер файлов при этом отличается - это нормально и само по себе о поломке не
говорит.
Отсюда правило: перед тем как городить патч заголовка, сделай круговую проверку на своей версии.
python -m v8unpack -E исходный.epf ./src
python -m v8unpack -B ./src пересобранный.epf
python -c "import struct;print([hex(struct.unpack('<IIII', open(p,'rb').read(16))[1]) for p in ('исходный.epf','пересобранный.epf')])"
Оба значения 0x200 - заголовок в порядке. Дальше проверяется главное: пересобранный файл должен
открываться платформой и содержать те же модули.
Промежуточные стадии (--temp)
| Стадия | Описание |
|---|---|
decode_stage_0/ | Извлечение из контейнера 1С |
decode_stage_1/ | Декомпрессия (zlib), скобкофайлы |
decode_stage_3/ | Разбор метаданных → дерево |
| Папка назначения | Организация кода (include, элементы форм) |
Ограничения
- Свойства объектов и разметка форм хранятся в
header/rawкак сырые массивы - Файлы > 1 МБ (макеты, HTML) хранятся как
.binбез декодирования - Зашифрованные модули сохраняются в бинарном виде
- При
--auto_includeвложенные объекты сортируются по алфавиту
Signals
- GitHub stars
- 63
- Forks
- 14
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
v8unpack-cf- Source
- github.com/desko77/claude-code-skills-1c