feat(meta-compile,meta-decompile): поддержка типа CommonForm (Общие формы) (v1.58/v0.49)

24-й тип. Решение по общим формам (совместно с пользователем): meta-compile делает то,
что вне компетенции form-compile — МЕТАДАННЫЕ + структуру файлов + регистрацию (как
form-add для форм объектов); СОДЕРЖИМОЕ формы (Ext/Form.xml) наполняет form-compile,
оно НЕ роундтрипится.

- Метаданные CommonForm: FormType(Managed)/IncludeHelpInContents/UsePurposes(набор
  ApplicationUsePurpose, дефолт [Platform+MobilePlatform]Application)/UseStandardCommands
  (дефолт false, корпус 1314/760)/презентации. Без InternalInfo/ChildObjects.
- **Заготовка структуры под компиляцию**: Ext/Form.xml (пустая управляемая форма —
  AutoCommandBar+ChildItems, зеркало form-add) + Ext/Form/Module.bsl + регистрация
  <CommonForm> в Configuration.xml. form-compile/form-edit далее наполняют форму.
- Декомпилятор: гейт +CommonForm; захват formType/usePurposes(omit при дефолте)/
  extendedPresentation; useStandardCommands дефолт false (как Enum).

МЕТАДАННЫЙ роундтрип: ПОЛНЫЙ КОРПУС acc+erp 836/836 byte-exact, TOTAL 0. Регресс 62/62
ps1+py, ps1==py identical (вкл. Form.xml/Module.bsl-заготовку). spec §7.15e, кейс common-form.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-10 13:12:22 +03:00
parent f80446c035
commit 2507437eb2
11 changed files with 473 additions and 7 deletions
+22
View File
@@ -1243,6 +1243,28 @@ ChildObjects и модулей.
| `auxiliarySaveForm` / `auxiliaryLoadForm` | `""` | Auxiliary*Form (verbatim) |
| `comment` | пусто | Comment |
### 7.15e CommonForm (Общая форма)
Общая форма — самостоятельная управляемая форма (не привязана к объекту). meta-compile создаёт **метаданные +
структуру файлов + регистрацию**, аналогично тому, как `/form-add` делает для форм объектов; **содержимое формы
(`Ext/Form.xml`) наполняет `/form-compile` или `/form-edit`** — оно НЕ роундтрипится (территория form-навыков).
| Поле JSON | Умолчание | XML элемент |
|-----------|----------|-------------|
| `comment` | пусто | Comment |
| `formType` | `Managed` | FormType |
| `includeHelpInContents` | `false` | IncludeHelpInContents |
| `usePurposes` | `[PlatformApplication, MobilePlatformApplication]` | UsePurposes (массив ApplicationUsePurpose) |
| `useStandardCommands` | `false` | UseStandardCommands |
| `extendedPresentation` / `explanation` | пусто | презентации (ML) |
Создаёт: `CommonForms/<Имя>.xml` (метаданные) + `CommonForms/<Имя>/Ext/Form.xml` (пустая управляемая форма-заготовка) +
`CommonForms/<Имя>/Ext/Form/Module.bsl` + регистрацию `<CommonForm>` в Configuration.xml.
```json
{ "type": "CommonForm", "name": "НастройкиОбмена", "usePurposes": ["PlatformApplication"] }
```
### 7.16 ChartOfAccounts
Полное описание типа (все поля, стандартные реквизиты, грамматика предопределённых счетов) — см. **§7.2c**.