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
Hashes for v8unpack-0.18.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e64e1d4ffe69d83538a476fb78de4b7e47a6d8caa294efda8d9d90912876f45f |
|
MD5 | d26152c60ae8b925389680f790ebdecd |
|
BLAKE2b-256 | fc25b3ccdb902b32d499ec8be055a171ff6a083a0ce0d5ae392fc3b34af3d12b |