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 + ForItem + DontIndex + Use + Use + + + + + Идентификатор + + + ru + Идентификатор + + + + + v8:UUID + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + +