feat(meta-compile): пары субконто бухрегистра из плана счетов

Компилятор эмитил ExtDimensionN/ExtDimensionTypeN только по ключам DSL,
поэтому регистр, созданный по неполному описанию, не совпадал с тем, что
материализует платформа: пары дописывались лишь при загрузке.

Теперь их число выводится из MaxExtDimensionCount плана счетов, на который
ссылается регистр, — файл читается из выгрузки, как версия формата из
Configuration.xml. ExtDimensionN получает LinkByType на Account с LinkItem
по номеру. Выведенный хвост дополняет DSL, а не заменяет: ключи из описания
остаются, недостающее добавляется.

План счетов не найден в выгрузке (ещё не создан, лежит вне каталога) — пары
не генерируются, в вывод идёт [HINT]: платформа допишет их сама при загрузке.

Проверка: матрица из трёх случаев (план с 3 субконто, план с 0, план
отсутствует) на обоих портах; синтетика загружена в 1С и выгружена обратно —
состав и порядок совпали; корпусный роундтрип 739 регистров без расхождений.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-09 18:42:00 +03:00
co-authored by Claude Opus 5
parent 16199deb92
commit 4622234b52
13 changed files with 1101 additions and 2 deletions
+4 -2
View File
@@ -965,8 +965,10 @@ choiceParameters/indexing/fullTextSearch/dataHistory/…, см. §34). При
Стандартные реквизиты РБ: 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 полный).
`correspondence=false`. ExtDimensionN связаны с Account через `linkByType` (DataPath
`AccountingRegister.<Имя>.StandardAttribute.Account`, LinkItem = номер), ExtDimensionTypeN — нет.
Пары берутся из плана счетов, на который ссылается регистр; описывать их в `standardAttributes`
(§7.1.1) нужно только ради переопределений.
### 7.6b CalculationRegister (Регистр расчёта)