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
@@ -0,0 +1,9 @@
{
"name": "Ошибка: имя реквизита совпадает со стандартным",
"input": {
"type": "Catalog",
"name": "Тест",
"attributes": ["Код: String(9)"]
},
"expectError": "зарезервировано стандартным реквизитом"
}
@@ -16,7 +16,7 @@
"defaultListForm": "Справочник.НастройкиОбмена.Форма.ФормаСписка",
"defaultChoiceForm": "Справочник.НастройкиОбмена.ФормаВыбора",
"attributes": [
"Код: String(9)"
"КодНастройки: String(9)"
]
},
"validatePath": "Catalogs/НастройкиОбмена",
@@ -89,11 +89,11 @@
<ChildObjects>
<Attribute uuid="UUID-012">
<Properties>
<Name>Код</Name>
<Name>КодНастройки</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Код</v8:content>
<v8:content>Код настройки</v8:content>
</v8:item>
</Synonym>
<Comment/>