v8unpack - консольная утилита для сборки и распаковки бинарных файлов 1С:Предприятие 8.х (cf, cfe, epf) без использования технологической платформы.
В какой-то момент жить без системы контроля версий на уровне исходников стало совсем не выносимо и обозрев все варианты выбор пал на v8unpack. Однако, без устранения основных недостатков его использование было бы крайне не удобным (плоский список из нечеловекочитаемых файлов, скрытый где-то в дебрях программный код управляемых форм). Сразу скажу, что мы с глубоким уважением относимся к труду авторов v8unpack, данная утилита отлично выполняет все свои функции и без неё создание этого решения было бы не возможным. Кроме этого, её Python-реализация от Infactum была взята за основу без каких либо изменений.
Ключевые отличия от аналогичных утилит:
- Структура хранения максимально приближена к структуре метаданных, человеко-читаемые имена файлов
- Программный код всегда хранится в отдельных файлах и может быть разделен на несколько файлов
- Общие для разных решений объекты метаданных могут автоматически браться из сабмодулей
- Двоичные данные макетов и картинки хранятся в исходном виде
- При сборке под 8.2 и 8.1. автоматически комментируются директивы 8.3
- Файлы хранятся в формате json
- Достает конфигурации поставщика
- Видно какие элементы форм были изменены
Основным назначением нашей версии утилиты являются:
- Автоматическая сборка приложений 1С (расширения конфигураций, внешние обработки) для различных платформ и конфигураций из одних и тех же исходников
- Удобное и человекочитаемое хранение исходников в системах контроля версий.
Установка (требуется python 3.3+)
pip install v8unpack
Распаковка файла 1С
v8unpack.exe -E d:/sample.cf d:/unpack
Сборка исходников
v8unpack.exe -B d:/unpack d:/repacked.cf
Алгоритм работы
Утилита распаковывает и запаковывает бинарник 1С в 4 этапа:
- Распаковка стандартным v8unpack – на выходе текстовые файлы
- Конвертация в json
- Декодирование заголовков и разбивка по типам метаданных
- Организация кода и структуры хранения
Исходники и инструкция выложены на GitHub.
На текущий момент утилита покрывает только нужные нам типы метаданных, а мы будем рады любому участию в проекте.
update: добавлено много типов объектов метаданных, элементы форм в отдельном файле
update: репозиторий переехал
update: Примеры репозиториев реальных проектов основанных на одинаковых исходниках