Обычная форма 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.