diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 0f819073b..aeae59548 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.111 — Compile 1C metadata object from JSON +# meta-compile v1.112 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -627,6 +627,7 @@ $script:typeSynonyms["int2"] = "Number(5,0)" $script:typeSynonyms["varchar"] = "String" $script:typeSynonyms["character varying"] = "String" $script:typeSynonyms["numeric"] = "Number" +$script:typeSynonyms["decimal"] = "Number" $script:typeSynonyms["timestamp"] = "DateTime" $script:typeSynonyms["bytea"] = "BinaryData" # Платформенные типы, требующие префикса v8: (коллекции/периоды, частые в реквизитах обработок/отчётов). diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index 475512b67..580958563 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.111 — Compile 1C metadata object from JSON +# meta-compile v1.112 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -758,6 +758,7 @@ type_synonyms = { 'varchar': 'String', 'character varying': 'String', 'numeric': 'Number', + 'decimal': 'Number', 'timestamp': 'DateTime', 'bytea': 'BinaryData', # Reference synonyms (Russian, lowercase) diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1 index 7f9484bcd..dc1afc499 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.ps1 +++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1 @@ -1,4 +1,4 @@ -# meta-edit v1.51 — Edit existing 1C metadata object XML +# meta-edit v1.52 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -526,6 +526,7 @@ $script:typeSynonyms["int2"] = "Number(5,0)" $script:typeSynonyms["varchar"] = "String" $script:typeSynonyms["character varying"] = "String" $script:typeSynonyms["numeric"] = "Number" +$script:typeSynonyms["decimal"] = "Number" $script:typeSynonyms["timestamp"] = "DateTime" $script:typeSynonyms["bytea"] = "BinaryData" $script:typeSynonyms["таблицазначений"] = "ValueTable" diff --git a/.claude/skills/meta-edit/scripts/meta-edit.py b/.claude/skills/meta-edit/scripts/meta-edit.py index 9ae8f1281..3c7722995 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.py +++ b/.claude/skills/meta-edit/scripts/meta-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-edit v1.51 — Edit existing 1C metadata object XML +# meta-edit v1.52 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -560,6 +560,7 @@ type_synonyms = { "varchar": "String", "character varying": "String", "numeric": "Number", + "decimal": "Number", "timestamp": "DateTime", "bytea": "BinaryData", "таблицазначений": "ValueTable", diff --git a/docs/1c-form-spec.md b/docs/1c-form-spec.md index 387f6af6c..a13055bd7 100644 --- a/docs/1c-form-spec.md +++ b/docs/1c-form-spec.md @@ -963,6 +963,11 @@ ChildItems ### 9.1. Система типов +Перечни ниже — самые полные в документации и НЕ только про формы: те же имена стоят в `` +любого объекта метаданных. Набор доступных типов зависит от владельца: у реквизита, хранимого в базе, +это скаляры + ссылочные + ОпределяемыйТип/Характеристика; у реквизита обработки или формы — ещё и рантайм-типы +из таблиц `v8:*`, `v8ui:*`, `dcs*:*` и системные перечисления `ent:*`. + #### Примитивные типы (xs:*) ```xml diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md index ddfb5f686..300644d1b 100644 --- a/docs/meta-dsl-spec.md +++ b/docs/meta-dsl-spec.md @@ -80,6 +80,7 @@ JSON DSL для описания объектов метаданных конф | `ValueStorage` | `v8:ValueStorage` (ХранилищеЗначения) | | `UUID` | `v8:UUID` (УникальныйИдентификатор) | | `BinaryData` или `BinaryData(N[,fixed\|variable])` | `xs:base64Binary` + BinaryDataQualifiers (ДвоичныеДанные) | +| `v8:Null` | `v8:Null` — тип «Null»; задаётся только с префиксом, голого синонима нет | Типы СУБД на входе компилятор переводит сам — соответствие замерено на стенде PostgreSQL и совпадает с тем, что делает Конфигуратор при импорте структуры таблицы: @@ -92,6 +93,10 @@ JSON DSL для описания объектов метаданных конф | `varchar(n)`, `character varying(n)` | `String(n)` | | `bytea` | `BinaryData` | | `numeric(p,s)`, `decimal(p,s)` | `Number(p,s)` | | | | +Имя типа без префикса, которое не совпало ни с одной из форм выше, компилятор отвергает: так выглядит +и опечатка, и неподдержанный тип СУБД. А вот имя С префиксом проходит как есть — так задаются +типы, у которых нет синонима в DSL: `v8:Null`, `v8:ValueTable`, `ent:AccountType`, `v8ui:Color`. + Важное ограничение: типы 1С получает ОТ ДРАЙВЕРА ODBC, а не из схемы БД. Поэтому `boolean` в список НЕ входит: в DSL это Булево, а psqlODBC при реальном импорте отдаёт `Строка(5)` (опция драйвера *Bools as Char*). `text`, `real`, `double precision`, `money`, `json` и массивы не поддержаны — diff --git a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml index b92eddcc2..d2137ee41 100644 --- a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml @@ -334,6 +334,48 @@ + + price2 + + + ru + price2 + + + + + xs:decimal + + 12 + 3 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + price2 + false + false + + + created @@ -373,7 +415,7 @@ false - + born @@ -413,7 +455,7 @@ false - + uid @@ -450,7 +492,7 @@ false - + blob diff --git a/tests/skills/cases/meta-compile/sql-type-synonyms.json b/tests/skills/cases/meta-compile/sql-type-synonyms.json index 38279b594..2f05a7833 100644 --- a/tests/skills/cases/meta-compile/sql-type-synonyms.json +++ b/tests/skills/cases/meta-compile/sql-type-synonyms.json @@ -15,6 +15,7 @@ "name: varchar(150)", "descr: character varying(50)", "price: numeric(15,2)", + "price2: decimal(12,3)", "created: timestamp", "born: date", "uid: uuid", @@ -35,7 +36,8 @@ "150", "DateTime", "v8:UUID", - "xs:base64Binary" + "xs:base64Binary", + "12" ] } ],