fix(meta-compile,meta-edit): synonym decimal и документация типов без синонима

Ревью собственной работы против плана нашло три упущения.

1. Синоним `decimal(p,s)` был в плане, но в код не попал — после включения отказа компилятора
   стандартный SQL-тип стал отвергаться. Добавлен в оба навыка и покрыт кейсом.
2. Тип Null в таблице примитивных типов не описан. Голого синонима у него нет и не будет:
   в DSL он задаётся как `v8:Null`. Заодно сказано прямым текстом, что имя С префиксом проходит
   как есть — так задаются типы без синонима (`v8:ValueTable`, `ent:AccountType`, `v8ui:Color`).
3. Раздел 9.1 в 1c-form-spec помечен как общий справочник типов, а не «про формы»: там самые
   полные перечни v8/v8ui/dcs/ent, и они относятся к любому объекту метаданных.

Проверено: meta-compile 94/94 и meta-edit 32/32 в обоих рантаймах, 11 гардов, снэпшот
sql-type-synonyms с decimal принят платформой.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
This commit is contained in:
Nick Shirokov
2026-09-07 14:13:18 +03:00
co-authored by Claude Opus 5
parent ed160c65b5
commit 6169a7ff93
8 changed files with 66 additions and 8 deletions
+5
View File
@@ -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` и массивы не поддержаны —