Unpacking binaries 1C to JSON for GIT
Project description
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
Если работаете с тяжелыми конфигурациями используйте 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')
Документация
Переход на сборку из одних исходников
Отладка
Ограничения
Разметка форм и свойства объектов по прежнему является не читаемыми, но в этом виде проще проводить их анализ и при желании дополнить парсер.
На текущий момент утилита покрывает только нужные нам типы метаданных, мы будем рады любому участию в проекте.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file v8unpack-0.10.3.tar.gz
.
File metadata
- Download URL: v8unpack-0.10.3.tar.gz
- Upload date:
- Size: 52.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b593f04d5c2ecbaad8dc39b01c7aa43532bb8243c95f6f1f7416a7f8d433353a |
|
MD5 | 279de1a439ef03eaaf3db654c90e0f21 |
|
BLAKE2b-256 | 03252a6f4da66f6e1ed2fd9fede1d15549fd09ff001c8694e8d7ad0bcf153aaa |
File details
Details for the file v8unpack-0.10.3-py3-none-any.whl
.
File metadata
- Download URL: v8unpack-0.10.3-py3-none-any.whl
- Upload date:
- Size: 91.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4545a41204be2bd9b7e2212e84c6852ab6b5a32e06e1d62f940f241f68f6930 |
|
MD5 | 076e53625cd40d3348d4fc6a3adaeb99 |
|
BLAKE2b-256 | d60f809bd2bf6d702836fba9fcb6a9f8ea9c17baea02e1dd83d26f76789e1a91 |