feat(meta-compile,meta-decompile): поддержка типа AccumulationRegister (Регистры накопления) (v1.46/v0.38)

Восьмой тип, второе семейство регистров (314 объектов acc+erp). Переиспользована инфраструктура
регистров от InformationRegister. ПОЛНЫЙ КОРПУС 314: match 314/314, TOTAL 0, ноль диффов, 0 крашей
(чище InfoReg — register-accum пропускает FillValue, empty-DTR шума нет). Регресс 49/49 ps1+py,
ps1==py identical. 1С-cert ✓ (db-load-xml + db-update).

- Рерайт Emit-AccumulationRegisterProperties на общие хелперы (был легаси-хардкод): comment/
  useStandardCommands/includeHelpInContents/Emit-FormRef(DefaultListForm/AuxiliaryListForm)/презентации(ML).
- Class-2 дефолт: DataLockControlMode Automatic→Managed (корпус 59%).
- Новый контекст Emit-Attribute `register-accum` (ресурсы/измерения через богатый эмиттер): Resource —
  base+FullTextSearch (без Indexing/FillValue/DataHistory); Dimension — +DenyIncompleteValues+Indexing+
  FullTextSearch+UseInTotals (без Master/MainFilter). Флаги shorthand denyIncomplete/nouseintotals.
- StandardAttributes: always-emit + opt-out standardAttributes:"" (present 287/omitted 27 = 9%, не выводимо).
- Декомпилятор: снят гейт +AccumulationRegister; RegisterType/EnableTotalsSplitting capture;
  UseInTotals в Attr-ToDsl (дефолт true→захват при false); AccumReg в opt-out.

spec §7.6, кейс accumulation-register.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-06 19:51:05 +03:00
parent cdba298e86
commit 07a2fd4b4d
5 changed files with 109 additions and 60 deletions
+14 -4
View File
@@ -836,13 +836,23 @@ choiceParameters/indexing/fullTextSearch/dataHistory/…, см. §34). При
| Поле JSON | Умолчание | XML элемент |
|-----------|----------|-------------|
| `registerType` | `Balance` | RegisterType |
| `registerType` | `Balance` | RegisterType (Balance/Turnovers) |
| `enableTotalsSplitting` | `true` | EnableTotalsSplitting |
| `dataLockControlMode` | `Automatic` | DataLockControlMode |
| `dataLockControlMode` | `Managed` | DataLockControlMode |
| `fullTextSearch` | `Use` | FullTextSearch |
| `dimensions` | `[]` | → Dimension в ChildObjects |
| `resources` | `[]` | → Resource в ChildObjects |
| `useStandardCommands` | `true` | UseStandardCommands |
| `comment` | пусто | Comment |
| `listPresentation` / `extendedListPresentation` / `explanation` | пусто | презентации (ML) |
| `defaultListForm` / `auxiliaryListForm` | пусто | *ListForm (ссылка на форму) |
| `standardAttributes` | (блок всегда) | `""` — opt-out: подавить all-default блок (~9% регистров опускают) |
| `dimensions` | `[]` | → Dimension в ChildObjects (богатый object-слой + `denyIncomplete`/`useInTotals`) |
| `resources` | `[]` | → Resource в ChildObjects (богатый object-слой; без Indexing/DataHistory) |
| `attributes` | `[]` | → Attribute в ChildObjects |
| `commands` | `[]` | → Command в ChildObjects (см. §7.1.3) |
Измерения/ресурсы РН поддерживают полный object-слой реквизита (synonym/tooltip/comment/type/choiceParameters/…, §34).
Признаки измерения — флаги shorthand (`denyIncomplete`, `nouseintotals`) ЛИБО object-ключи (`denyIncompleteValues`,
`useInTotals`: bool, дефолт true). Ресурс РН НЕ имеет `<Indexing>` (только `<FullTextSearch>`).
### 7.7 DefinedType