diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index d640aaf8..bf0d8c54 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.ps1
+++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1
@@ -853,8 +853,12 @@ function Normalize-FillRef {
$root = $script:fillRefRoots[$parts[0].ToLower()]
if (-not $root) { return $null }
$typeName = $parts[1]
+ # Двухчастное "Тип.Имя" — это объект метаданных, а не ЗНАЧЕНИЕ. Значением бывают пустая ссылка,
+ # предопределённый элемент или значение перечисления — все они длиннее. Правило было выведено
+ # только для Enum; без него строка вида "Документ.РеализацияТоваров" молча становилась ссылкой
+ # (на корпусе: 5520 значений в ChoiceParameters и 8623 в FillValue — двухчастных НЕТ ни одного).
+ if ($parts.Count -lt 3) { return $null }
if ($root -eq 'Enum') {
- if ($parts.Count -eq 2) { return $null } # "Enum.X" — не значение
if ($parts.Count -eq 3) {
if ($script:fillEmptyRefWords -contains $parts[2].ToLower()) { return "Enum.$typeName.EmptyRef" }
return "Enum.$typeName.EnumValue.$($parts[2])"
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index a13d90cc..c420854f 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.py
+++ b/.claude/skills/meta-compile/scripts/meta-compile.py
@@ -873,9 +873,13 @@ def normalize_fill_ref(s):
if not root:
return None
type_name = parts[1]
+ # Двухчастное "Тип.Имя" — это объект метаданных, а не ЗНАЧЕНИЕ. Значением бывают пустая ссылка,
+ # предопределённый элемент или значение перечисления — все они длиннее. Правило было выведено
+ # только для Enum; без него строка вида "Документ.РеализацияТоваров" молча становилась ссылкой
+ # (на корпусе: 5520 значений в ChoiceParameters и 8623 в FillValue — двухчастных НЕТ ни одного).
+ if len(parts) < 3:
+ return None
if root == 'Enum':
- if len(parts) == 2:
- return None
if len(parts) == 3:
if parts[2].lower() in fill_empty_ref_words:
return f'Enum.{type_name}.EmptyRef'
diff --git a/tests/skills/cases/meta-compile/catalog-attr-choice-params.json b/tests/skills/cases/meta-compile/catalog-attr-choice-params.json
index d8b95794..ed1896b8 100644
--- a/tests/skills/cases/meta-compile/catalog-attr-choice-params.json
+++ b/tests/skills/cases/meta-compile/catalog-attr-choice-params.json
@@ -15,7 +15,12 @@
{ "name": "ПустаяСсылка", "type": "String(10)",
"choiceParameters": [ { "name": "Отбор.ТипПоказателя", "value": { "emptyRef": true } } ] },
{ "name": "ПустаяСсылкаВМассиве", "type": "String(10)",
- "choiceParameters": [ { "name": "Отбор.Набор", "value": [ { "emptyRef": true }, "ТТН" ] } ] }
+ "choiceParameters": [ { "name": "Отбор.Набор", "value": [ { "emptyRef": true }, "ТТН" ] } ] },
+ { "name": "СтрокаПохожаяНаСсылку", "type": "String(60)",
+ "choiceParameters": [ { "name": "Отбор.ТипДокумента", "value": "Документ.РеализацияТоваровУслуг" } ] },
+ { "name": "НастоящаяСсылка", "type": "CatalogRef.Номенклатура",
+ "fillValue": "Справочник.Номенклатура.ПустаяСсылка",
+ "choiceParameters": [ { "name": "Отбор.Вид", "value": "Перечисление.ТипыВЕТИС.ТТН" } ] }
]
},
"validatePath": "Catalogs/ТестВыбора",
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-attr-choice-params/Catalogs/ТестВыбора.xml b/tests/skills/cases/meta-compile/snapshots/catalog-attr-choice-params/Catalogs/ТестВыбора.xml
index 2b64485c..4a3f8091 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-attr-choice-params/Catalogs/ТестВыбора.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-attr-choice-params/Catalogs/ТестВыбора.xml
@@ -369,6 +369,98 @@
Use
+
+
+ СтрокаПохожаяНаСсылку
+
+
+ ru
+ Строка похожая на ссылку
+
+
+
+
+ xs:string
+
+ 60
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+
+ Документ.РеализацияТоваровУслуг
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+
+
+
+ НастоящаяСсылка
+
+
+ ru
+ Настоящая ссылка
+
+
+
+
+ d5p1:CatalogRef.Номенклатура
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ Catalog.Номенклатура.EmptyRef
+ DontCheck
+ Items
+
+
+
+ Enum.ТипыВЕТИС.EnumValue.ТТН
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+