fix(meta-compile,meta-validate): «только единственным» касается и характеристики

Правило было уже реальности: Конфигуратор не даёт включить характеристику в
составной тип вместе ни с каким другим типом — в том числе с другой
характеристикой. Предупреждение теперь ловит и DefinedType.X, и
Characteristic.X.

Корпус подтверждает даже чище, чем для определяемого типа: 1741 характеристика
единственным типом и 0 в составных (у определяемого было 6500 против 1).
Уровень прежний — предупреждение: загрузчик такое принимает, проверено
загрузкой в базу.

Голых метатипов это не касается: DocumentRef + CatalogRef — обычный составной
тип, 525 вхождений в поставляемых ERP и БП.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-20 19:54:29 +03:00
co-authored by Claude Opus 5
parent 0db3656c9c
commit dd0ad18076
14 changed files with 466 additions and 29 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ JSON DSL для описания объектов метаданных конф
|-----------|-----------|------------------------|
| `DefinedType` (состав) | только конкретные типы | «Недопустимый тип» и файл не грузится — на `AnyRef`, голый `CatalogRef`, `Characteristic.Xxx` и вложенный `DefinedType.Xxx`; контрольный `CatalogRef.Xxx` принят |
| ПВХ (`Type`/тип значения) | из множеств — только `DefinedType.Xxx` | остальное тоже грузится, но Конфигуратор не предлагает: голого метатипа и `AnyRef` в дереве выбора нет вовсе, `Characteristic.Xxx` — тоже (тип значения характеристики не может быть значением характеристики). `AnyRef` возвращается с выгрузки как `AnyIBRef`. В корпусе erp+acc ни один из 24 ПВХ множеств в типе значения не использует |
| любой составной тип | `DefinedType.Xxx` только ЕДИНСТВЕННЫМ | одним из составного Конфигуратор выбрать не даёт, но загрузчик принимает: в корпусе erp+acc 6500 единственных против 1 составного, и этот один — в типовой ERP (`Документ.НачислениеИСписаниеБонусныхБаллов.Баллы`) |
| любой составной тип | `DefinedType.Xxx` и `Characteristic.Xxx` только ЕДИНСТВЕННЫМ | одним из составного Конфигуратор выбрать не даёт (характеристику — даже вместе с другой характеристикой), но загрузчик принимает: в корпусе erp+acc 6500 определяемых единственным против 1 составного (и этот один — в типовой ERP, `Документ.НачислениеИСписаниеБонусныхБаллов.Баллы`), 1741 характеристика единственным против 0 составных. Голые метатипы это НЕ затрагивает: `DocumentRef + CatalogRef` — обычный составной тип, 525 вхождений в поставке |
Отсюда разная строгость проверок: состав определяемого типа — ошибка, остальные два — предупреждение.