diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index 64b33d89..f16536fd 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.ps1
+++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1
@@ -400,6 +400,13 @@ $script:typeSynonyms["boolean"] = "Boolean"
$script:typeSynonyms["date"] = "Date"
$script:typeSynonyms["datetime"] = "DateTime"
$script:typeSynonyms["bool"] = "Boolean"
+# ValueStorage / UUID — прощающий ввод (модель может написать base64Binary / рус. форму → канон).
+$script:typeSynonyms["valuestorage"] = "ValueStorage"
+$script:typeSynonyms["base64binary"] = "ValueStorage"
+$script:typeSynonyms["хранилищезначений"] = "ValueStorage"
+$script:typeSynonyms["хранилищезначения"] = "ValueStorage"
+$script:typeSynonyms["uuid"] = "UUID"
+$script:typeSynonyms["уникальныйидентификатор"] = "UUID"
# Reference synonyms (Russian, lowercase)
$script:typeSynonyms["справочникссылка"] = "CatalogRef"
$script:typeSynonyms["документссылка"] = "DocumentRef"
@@ -528,9 +535,14 @@ function Emit-TypeContent {
return
}
- # ValueStorage
+ # ValueStorage (ХранилищеЗначения) — канон v8:ValueStorage (не xs:base64Binary, хоть 1С и принимает оба).
if ($typeStr -eq "ValueStorage") {
- X "$indentxs:base64Binary"
+ X "$indentv8:ValueStorage"
+ return
+ }
+ # UUID (УникальныйИдентификатор)
+ if ($typeStr -eq "UUID") {
+ X "$indentv8:UUID"
return
}
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index 644e7721..486ca3ab 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.py
+++ b/.claude/skills/meta-compile/scripts/meta-compile.py
@@ -445,6 +445,13 @@ type_synonyms = {
'date': 'Date',
'datetime': 'DateTime',
'bool': 'Boolean',
+ # ValueStorage / UUID — прощающий ввод (base64Binary / рус. форма → канон).
+ 'valuestorage': 'ValueStorage',
+ 'base64binary': 'ValueStorage',
+ 'хранилищезначений': 'ValueStorage',
+ 'хранилищезначения': 'ValueStorage',
+ 'uuid': 'UUID',
+ 'уникальныйидентификатор': 'UUID',
# Reference synonyms (Russian, lowercase)
'справочникссылка': 'CatalogRef',
'документссылка': 'DocumentRef',
@@ -557,9 +564,13 @@ def emit_type_content(indent, type_str):
dt_name = m.group(1)
X(f'{indent}cfg:DefinedType.{dt_name}')
return
- # ValueStorage
+ # ValueStorage (ХранилищеЗначения) — канон v8:ValueStorage (не xs:base64Binary).
if type_str == 'ValueStorage':
- X(f'{indent}xs:base64Binary')
+ X(f'{indent}v8:ValueStorage')
+ return
+ # UUID (УникальныйИдентификатор)
+ if type_str == 'UUID':
+ X(f'{indent}v8:UUID')
return
# Reference types — use local xmlns declaration for 1C compatibility
diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md
index 18759bc1..40f04b0f 100644
--- a/docs/meta-dsl-spec.md
+++ b/docs/meta-dsl-spec.md
@@ -1,6 +1,6 @@
# Meta DSL — спецификация JSON-формата для объектов метаданных 1С
-Версия: 2.4
+Версия: 2.5
## Обзор
@@ -67,6 +67,8 @@ JSON DSL для описания объектов метаданных конф
| `Boolean` | `xs:boolean` |
| `Date` | `xs:dateTime` + DateFractions=Date |
| `DateTime` | `xs:dateTime` + DateFractions=DateTime |
+| `ValueStorage` | `v8:ValueStorage` (ХранилищеЗначения) |
+| `UUID` | `v8:UUID` (УникальныйИдентификатор) |
### 3.2 Ссылочные типы
@@ -102,6 +104,8 @@ JSON DSL для описания объектов метаданных конф
| `БизнесПроцессСсылка.Xxx` | `BusinessProcessRef.Xxx` |
| `ЗадачаСсылка.Xxx` | `TaskRef.Xxx` |
| `ОпределяемыйТип.Xxx` | `DefinedType.Xxx` |
+| `ХранилищеЗначений` / `ХранилищеЗначения` / `base64Binary` | `ValueStorage` |
+| `УникальныйИдентификатор` | `UUID` |
Регистронезависимые.
diff --git a/tests/skills/cases/meta-compile/catalog-mixed-types.json b/tests/skills/cases/meta-compile/catalog-mixed-types.json
index b7568f21..fa8b3d79 100644
--- a/tests/skills/cases/meta-compile/catalog-mixed-types.json
+++ b/tests/skills/cases/meta-compile/catalog-mixed-types.json
@@ -10,7 +10,9 @@
"Активен: Boolean",
"СуммаДоговора: Number(15,2)",
"Ответственный: CatalogRef.ФизическиеЛица",
- "Статус: EnumRef.СтатусыКонтрагентов"
+ "Статус: EnumRef.СтатусыКонтрагентов",
+ "Вложение: ValueStorage",
+ "Идентификатор: UUID"
]
},
"validatePath": "Catalogs/Контрагенты",
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml b/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
index 4c6e0215..10ef8346 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
@@ -339,6 +339,86 @@
Use
+
+
+ Вложение
+
+
+ ru
+ Вложение
+
+
+
+
+ v8:ValueStorage
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+
+
+
+ Идентификатор
+
+
+ ru
+ Идентификатор
+
+
+
+
+ v8:UUID
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+