saby v8unpack
v8unpack - консольная утилита для сборки и распаковки бинарных файлов 1С:Предприятие 8.х (cf, cfe, epf) без использования технологической платформы.
В какой-то момент жить без системы контроля версий на уровне исходников стало совсем не выносимо и обозрев все варианты выбор пал на v8unpack. Однако, без устранения основных недостатков его использование было бы крайне не удобным (плоский список из нечеловекочитаемых файлов, скрытый где-то в дебрях программный код управляемых форм). Сразу скажу, что мы с глубоким уважением относимся к труду авторов v8unpack, данная утилита отлично выполняет все свои функции и без неё создание этого решения было бы не возможным. Кроме этого её Python реализация от Infactum была взята за основу без каких либо изменений.
Ключевые отличия от аналогичных утилит:
- Структура хранения максимально приближена к структуре метаданных, человеко-читаемые имена файлов
- Программный код всегда хранится в отдельных файлах и может быть разделен на несколько файлов
- Общие для разных решений объекты метаданных могут автоматически браться из субмодулей
- Двоичные данные макетов и картинки хранятся в исходном виде
- При сборке под 8.2 и 8.1. автоматически комментируются директивы 8.3
- Файлы хранятся в формате json
- Видны изменения элементов форм
Основным назначением утилиты являются:
- Автоматическая сборка приложений 1С (расширения конфигураций, внешние обработки) для различных платформ и конфигураций из одних и тех же исходников
- Удобное и человекочитаемое хранение исходников в системах контроля версий.
Алгоритм работы
Утилита распаковывает и запаковывет бинарник 1С в 4 этапа:
- Распаковка стандартным v8unpack – на выходе текстовые файлы
- Конвертация в json
- Декодирование заголовков и разбивка по типам метаданных
- Организация кода и структуры хранения
- вынос областей кода и панелей форм в отдельные файлы
- сборка кода и форм из нескольких файлов
- разделение объектов метаданных, панелей форм, файлов или областей кода под сабмодулям
- версионирование кода расширения по версиям без применения областей
Установка
pip install v8unpack
собрать exe файл актуальной версии можно запустив build_local.cmd из корня проекта.
Если работаете с тяжелыми конфигурациями используйте 64-bit питон последних версий.
Распаковка файла 1С
из командной строки:
v8unpack.exe -E d:/sample.cf d:/unpack
из python:
import v8unpack
if __name__ == '__main__':
v8unpack.extract('d:/sample.cf', 'd:/unpack')
Сборка исходников
из командной строки:
v8unpack.exe -B d:/unpack d:/repacked.cf
из python:
import v8unpack
if __name__ == '__main__':
v8unpack.build('d:/unpack', 'd:/repacked.cf')
Документация
Переход на сборку из одних исходников
Отладка
Ограничения
Разметка форм и свойства объектов по прежнему является не читаемыми, но в этом виде проще проводить их анализ и при желании дополнить парсер.
На текущий момент утилита покрывает все типы метаданных в нужном нам объеме, если Вам нужно более детальная распаковка каких то объектов напишите здесь обращение или сделайте самостоятельно, мы будем рады любому участию в проекте.
Metadata
Release files for v8unpack 1.2.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| v8unpack-1.2.13.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| v8unpack-1.2.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / v8unpack-1.2.13.tar.gz
| Download URL | v8unpack-1.2.13.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d73f0ee1d1418b48d02b144200a71403acbdb4e7cdcfb454f5b33ada27f1b693
|
|
BLAKE2b-256 checksum How to use checksums |
3a33e9ec1056ac78fd8e4607210fec541143473ed84db563dc3da0800805c24f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / v8unpack-1.2.13-py3-none-any.whl
| Download URL | v8unpack-1.2.13-py3-none-any.whl |
|---|---|
| Size | 129.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4977575013c9a68d7a37c5d1efccf14b1fe7c43ed3acd793d30d7f0365a941f4
|
|
BLAKE2b-256 checksum How to use checksums |
0924015511e78a593618dc0fa892ed348df44e63664f12fbcae3c56e41850c8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|