v8unpack
Repo script: ./scripts/platform/v8unpack.sh
Выбор операции
Сначала определить установленную реализацию и версию: именем v8unpack называются разные инструменты. Приведённый ниже контракт проверен с Python-пакетом saby-integration/v8unpack 1.2.6. Проверить текущую обёртку и её --help; не переносить флаги между реализациями.
В репозитории, где есть scripts/platform/v8unpack.sh, использовать её:
| Задача | Действие обёртки |
|---|
| Полностью разобрать CF/EPF/ERF в модель v8unpack | extract |
| Собрать модель v8unpack | build |
| Индексировать модель | index |
| Распаковать отдельный бинарный контейнер, например Form.bin | container-extract |
| Собрать контейнер из его файлов | container-build |
extract/build и container-extract/container-build работают с разными представлениями. Не передавать сырой Form.bin на полный разбор метаданных, а Designer XML — на сборку модели v8unpack.
Если обёртки нет, найти принятый проектом entrypoint и проверить его контракт. Не считать проектную shell-команду универсальной установкой инструмента; при необходимости расширить ближайшую обёртку согласно AGENTS.md проекта.
Точечная работа с обычной формой
Работать в новом каталоге артефактов с копией входного файла. Пример из корня проекта (подставить подтверждённые пути):
bash scripts/platform/v8unpack.sh container-extract \
--input "$form_bin" --output "$run_root/raw" --run-root "$run_root/extract"
# Изучить и отредактировать нужные файлы в raw.
bash scripts/platform/v8unpack.sh container-build \
--input "$run_root/raw" --output "$run_root/Form.bin" --run-root "$run_root/build"
bash scripts/platform/v8unpack.sh container-extract \
--input "$run_root/Form.bin" --output "$run_root/verified" --run-root "$run_root/verify"
- Сначала инвентаризировать контейнер. В проверенных обычных формах есть
0/module (BSL) и 0/form (текст в формате скобок 1С); другой состав не отбрасывать и не заменять этим шаблоном.
- Для правки логики менять только
module, сохраняя кодировку, BOM и окончания строк. Анализатору при необходимости передать точную копию с расширением .bsl.
form — не XML управляемой формы. Для точечной замены сначала установить смысл узла и проверить единственность совпадения. Для изменения структуры использовать доступный декодер соответствующей версии и проверить обратное кодирование; не угадывать позиции, идентификаторы или связи элементов. Не обещать произвольное редактирование всех схем на основании одной успешной правки заголовка.
- Не использовать преобразование в управляемую форму или analysis-only представление как промежуточный формат для обратной сборки обычной формы.
- Сравнить набор относительных путей и байты каждого файла
raw и verified. Проектный container-build уже делает такую проверку перед публикацией результата; подтвердить это по его текущей реализации. Отдельно проверить, что относительно исходной распаковки изменились только намеченные файлы.
- SHA бинарного контейнера после упаковки может измениться при одинаковом содержимом. Это само по себе не повреждение и не доказательство совместимости с платформой.
Выдать путь результата и статус проверки контейнера. Загрузку формы Designer, сборку EPF/ERF и проверку поведения передать специализированному полному циклу.
Исходная документация: https://github.com/saby-integration/v8unpack/blob/main/docs/usage.md