feat(meta-compile,meta-decompile): поддержка типа DocumentJournal (Журналы документов) (v1.55/v0.46)

19-й тип, 82 объекта acc+erp. Рерайт Emit-DocumentJournalProperties/Emit-Column на
общие хелперы (был легаси-хардкод + ПРОПУЩЕН <IncludeHelpInContents>). Декомпилятор
снят гейт +DJ; захват defaultForm/auxiliaryForm/registeredDocuments + колонки
(columns: name/synonym/comment/indexing/references) + SA opt-out.

- **Class-3 фикс: команды журнала** — DJ-блок ChildObjects эмитил только колонки;
  журналы несут полноблочные <Command> (Взаимодействия: 15 команд, DefinedType-параметр)
  → добавлен парсинг+Emit-Command (декомпилятор захватывал общим Commands-ридером).
- IncludeHelpInContents (пропущен легаси) добавлен; comment/useStandardCommands/формы
  (verbatim — имя «Форма»)/презентации — динамические. StandardAttributes always-emit +
  opt-out (~7% опускают); Date Format ДЛФ=D — per-object override (не профиль, 71/203).
- **Class-1: пустой <Synonym/> колонки** ≠ авто → synonym:"" (как EnumValue).
- Прощающий ввод registeredDocuments/references — Normalize-MDObjectRef (русские корни).

ПОЛНЫЙ КОРПУС 82/82 match, TOTAL 0 — byte-exact order-preserved (колонки+команды).
Регресс 56/56 ps1+py, ps1==py identical. spec §7.15, кейс document-journal-full.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-09 22:05:51 +03:00
parent edc8474ddd
commit b4e6037fd4
10 changed files with 680 additions and 80 deletions
+24 -13
View File
@@ -1152,27 +1152,38 @@ ChildObjects и модулей.
}
```
### 7.15 DocumentJournal
### 7.15 DocumentJournal (Журнал документов)
Журнал документов: список регистрируемых документов (RegisteredDocuments) + колонки (Column) со ссылками на
реквизиты этих документов. Стандартные реквизиты — Type/Ref/Date/Posted/DeletionMark/Number.
| Поле JSON | Умолчание | XML элемент |
|-----------|----------|-------------|
| `defaultForm` | `""` | DefaultForm |
| `auxiliaryForm` | `""` | AuxiliaryForm |
| `registeredDocuments` | `[]` | RegisteredDocuments |
| `comment` | пусто | Comment |
| `defaultForm` / `auxiliaryForm` | `""` | DefaultForm / AuxiliaryForm (ссылка verbatim) |
| `useStandardCommands` | `true` | UseStandardCommands |
| `registeredDocuments` | `[]` | RegisteredDocuments — массив MDObjectRef `"Document.Имя"` (прощающий ввод русских корней) |
| `includeHelpInContents` | `false` | IncludeHelpInContents |
| `standardAttributes` | (блок всегда) | `""` — opt-out (~7% журналов опускают); кастомизация Date/… как в §7.1.1 |
| `listPresentation` / `extendedListPresentation` / `explanation` | пусто | презентации (ML) |
| `columns` | `[]` | → Column в ChildObjects |
| `commands` | `[]` | → Command в ChildObjects (§7.1.3) |
Без модулей.
**Колонка (`columns[]`)** — объект `{name, synonym?, comment?, indexing?, references[]}`:
- `references` — массив MDObjectRef-путей к реквизитам регистрируемых документов
(`Document.X.Attribute.Y` / `Document.X.TabularSection.Z.Attribute.Y`); прощающий ввод русских корней;
- `indexing` — `DontIndex` (дефолт) / `Index` / `IndexWithAdditionalOrder`;
- `synonym: ""` — явно пустой синоним (когда авто из имени неуместен).
DSL для `registeredDocuments` — массив строк `"Document.ИмяДокумента"` (или русский `"Документ.ИмяДокумента"`).
DSL для `columns` (§12).
`registeredDocuments`/`references` и `defaultForm` — прощающий ввод русских корней метаданных/подвидов
(Документ→Document, Реквизит→Attribute, ТабличнаяЧасть→TabularSection); имена объектов не трогаются.
```json
{
"type": "DocumentJournal", "name": "Взаимодействия",
"registeredDocuments": ["Document.Встреча", "Document.ТелефонныйЗвонок"],
"columns": [{ "name": "Организация", "indexing": "Index", "references": ["Document.Встреча.Attribute.Организация"] }]
}
{ "type": "DocumentJournal", "name": "ДвиженияДенег",
"registeredDocuments": ["Документ.ПоступлениеНаСчет", "Document.СписаниеСоСчета"],
"columns": [
{ "name": "Организация", "references": ["Документ.ПоступлениеНаСчет.Реквизит.Организация"] },
{ "name": "Сумма", "indexing": "Index", "references": ["Document.ПоступлениеНаСчет.Attribute.Сумма"] } ] }
```
### 7.16 ChartOfAccounts