v8unpack

Распаковка и упаковка файлов 1С через v8unpack, включая отдельные Form.bin обычных форм, извлечение модуля и точечные правки описания формы. Использовать для работы с контейнером; полный цикл EPF/ERF

SKILL.md

GitHub

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