feat(meta-compile): отклонять имена реквизитов, совпадающие со стандартными (v1.20)

Раньше совпадение имени собственного реквизита со стандартным (Код,
Наименование, Владелец, Родитель, Ссылка, Предопределённый, …) давало лишь
предупреждение — теперь жёсткий отказ (платформа такое имя не примет).

Проверка типозависима (reservedByContext): у справочника один набор
стандартных имён, у документа — другой. Напр. «Номер» — легальный реквизит
справочника, отклоняется только у документа. Прочие контексты сохраняют
мягкое предупреждение по плоскому списку; реквизиты ТЧ не проверяются.

Кейс catalog-object-props: «Код»→«КодНастройки» (было ложное имя). Новый
негативный кейс catalog-attr-reserved-name. spec §4. Регресс 41/41 ps1+py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-03 19:07:55 +03:00
parent 1565ae23ab
commit b4d48ca656
6 changed files with 70 additions and 7 deletions
+10
View File
@@ -194,6 +194,16 @@ JSON DSL для описания объектов метаданных конф
Раздельная форма эквивалентна `String(100)`, `Number(15,2)`, `Number(15,2,nonneg)`.
Если `type` уже содержит скобки — `length`/`precision` игнорируются.
**Зарезервированные имена.** Имя собственного реквизита не должно совпадать со стандартным реквизитом объекта
(англ. или рус., регистронезависимо) — платформа такое не примет. Компилятор отклоняет с ошибкой:
- **Catalog**: `Ref`/`Ссылка`, `DeletionMark`/`ПометкаУдаления`, `Predefined`/`Предопределенный`,
`PredefinedDataName`/`ИмяПредопределенныхДанных`, `Code`/`Код`, `Description`/`Наименование`, `Owner`/`Владелец`,
`Parent`/`Родитель`, `IsFolder`/`ЭтоГруппа`.
- **Document**: `Ref`/`Ссылка`, `DeletionMark`/`ПометкаУдаления`, `Date`/`Дата`, `Number`/`Номер`, `Posted`/`Проведен`.
Проверка **типозависима**: напр. `Номер` — легальное имя реквизита справочника (стандартный он только у документа).
Реквизиты табличных частей проверке не подлежат (там зарезервирован лишь `НомерСтроки`).
### 4.3 Флаги
| Флаг | Действие | Применимость |