fix(meta-compile,meta-validate): канон стандартных реквизитов регистров

Справочник порядка StandardAttributes был неполон у трёх видов регистров, а
неизвестные имена эмитятся перед фикс-списком — платформа их вкрапляет, и
роундтрип переставал быть побайтовым.

Порядок снят с выгрузки платформы, присутствие условных реквизитов теперь
выводится из свойств объекта (periodAdjustmentLength, correspondence,
registerType), а не из наличия ключа в DSL: иначе регистр, создаваемый с нуля,
терял реквизит, который платформа обязана материализовать. Наличие ключа
осталось дополняющим условием, чтобы роундтрип не зависел от точности вывода.

- регистр расчёта: 11 реквизитов, состав безусловен (проверено матрицей
  actionPeriod × basePeriod × периодичность на 8.3.27)
- регистр бухгалтерии: PeriodAdjustment при длине периода корректировки > 0,
  RecordType при correspondence=false
- регистр накопления: RecordType только у регистра остатков

meta-validate: снято ложное предупреждение об «unexpected» RecordType у
бухрегистра, условные реквизиты исключены из проверки missing.

Проверка: 739 регистров по шести конфигурациям — 0 расхождений; снэпшоты
пересняты и верифицированы загрузкой в 1С.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-09 18:06:34 +03:00
co-authored by Claude Opus 5
parent 707a5c293f
commit 16199deb92
21 changed files with 1730 additions and 160 deletions
+14 -2
View File
@@ -944,6 +944,9 @@ choiceParameters/indexing/fullTextSearch/dataHistory/…, см. §34). При
Признаки измерения — флаги shorthand (`denyIncomplete`, `nouseintotals`) ЛИБО object-ключи (`denyIncompleteValues`,
`useInTotals`: bool, дефолт true). Ресурс РН НЕ имеет `<Indexing>` (только `<FullTextSearch>`).
Стандартные реквизиты РН: RecordType, Active, LineNumber, Recorder, Period — в этом порядке.
`RecordType` есть только у регистра остатков (`registerType=Balance`); у оборотного его нет.
### 7.6a AccountingRegister (Регистр бухгалтерии)
| Поле JSON | Умолчание | XML элемент |
@@ -957,8 +960,13 @@ choiceParameters/indexing/fullTextSearch/dataHistory/…, см. §34). При
| `dimensions` / `resources` / `attributes` / `commands` | `[]` | → ChildObjects |
Измерения/ресурсы РБ несут `balance` (bool), `accountingFlag` (ссылка `ChartOfAccounts.X.AccountingFlag.Y`);
ресурсы дополнительно `extDimensionAccountingFlag`, измерения — `denyIncompleteValues`. Стандартные реквизиты
ExtDimension1..N связаны с Account через `linkByType` (в блоке `standardAttributes`, §7.1.1; DataPath полный).
ресурсы дополнительно `extDimensionAccountingFlag`, измерения — `denyIncompleteValues`.
Стандартные реквизиты РБ: PeriodAdjustment, Account, RecordType, Active, LineNumber, Recorder, Period,
далее пары субконто ExtDimensionN/ExtDimensionTypeN (их число задаётся `maxExtDimensionCount` плана счетов).
Два реквизита условны: `PeriodAdjustment` — при `periodAdjustmentLength > 0`, `RecordType` — при
`correspondence=false`. ExtDimension1..N связаны с Account через `linkByType` (в блоке `standardAttributes`,
§7.1.1; DataPath полный).
### 7.6b CalculationRegister (Регистр расчёта)
@@ -975,6 +983,10 @@ ExtDimension1..N связаны с Account через `linkByType` (в блок
Измерения РР несут `denyIncompleteValues`, `baseDimension` (bool), `scheduleLink` (ссылка на измерение графика);
реквизиты — `scheduleLink`; ресурсы — только `<FullTextSearch>` (без Indexing).
Стандартные реквизиты РР: RegistrationPeriod, ReversingEntry, Active, EndOfBasePeriod, BegOfBasePeriod,
EndOfActionPeriod, BegOfActionPeriod, ActionPeriod, CalculationType, LineNumber, Recorder — в этом порядке
и все сразу, независимо от `actionPeriod` / `basePeriod` / `periodicity`.
### 7.6c BusinessProcess (Бизнес-процесс)
Ссылочный тип с нумерацией (Document-стиль). Поля: `numberType`/`numberLength`/`numberAllowedLength`/`checkUnique`/