Skip to content

Repository files navigation

Ordinary Form Decoder

Обычная форма 1С умеет прятать самое интересное в Form.bin. Когда нужно понять, какие элементы есть на форме и с какими процедурами они связаны, читать бинарный файл глазами — так себе план.

Ordinary Form Decoder извлекает структуру формы в Form.xml, а её модуль — в Form/Module.bsl. Результат можно анализировать через rlm-tools-bsl. Исходный Form.bin остаётся нетронутым: разборщик умеет читать форму, но не собирает её обратно.

Можно разобрать одну форму или пройти весь каталог, включая выгрузки внешних обработок и отчётов. Для запуска достаточно Python 3.10+ и двух файлов рядом: ordinary_form_rlm.py и ordinary-form-events.json. Подробности — в справке.

Разборщик сохраняет найденное имя обработчика, даже если не смог определить тип события: в XML такое событие помечается как неизвестное. Действия кнопок CommandBar, в том числе во вложенных группах, связываются с обработчиками по UUID. Встроенные команды платформы за BSL-обработчики не выдаются.

python .\ordinary_form_rlm.py "C:\Work\export\Form.bin" --output "C:\Work\output"
python .\ordinary_form_rlm.py "C:\Work\export" --recursive --output "C:\Work\output"
python -m unittest discover -s tests

Словарь событий можно дополнить под свои формы. Он помогает распознавать имена, но не назначает числовые ID сам по себе: для этого разборщик анализирует формы проекта.

Для внешней обработки или отчёта можно добавить --ordinary-forms "C:\Work\DemoProject\ordinary-forms": разборщик прочитает оттуда event-map.json с приоритетом над локальными правилами, но не изменит карту конфигурации. Локальный отчёт о событиях останется рядом с внешней обработкой или отчётом. Файл unresolved-events.json создаётся только тогда, когда остались события для ручного сопоставления. Если их нет, прежний пустой отчёт удаляется.

Реализация разработана отдельно от onec-ordinary-forms. Этот проект помогал изучать формат и сравнивать результаты, но его исходный код здесь не использован. Благодарим автора Maxon за опубликованную работу.

Лицензия — MIT. Разработка: synklair при участии OpenAI Codex; подробности в AUTHORS.md.

About

Разбирает обычные формы 1С: Form.bin → Form.xml и Module.bsl для анализа через RLM. Один Python-скрипт, без обратной сборки.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages