feat(form-compile): forgiving платформенные v8-типы (StandardPeriod/StandardBeginningDate/UUID)

Помогаем модели правильно вывести тип: принимаем англ. без префикса и рус.имя,
приводим к каноничному v8:X (эмитится verbatim):
- StandardPeriod / СтандартныйПериод → v8:StandardPeriod
- StandardBeginningDate / СтандартнаяДатаНачала → v8:StandardBeginningDate
- UUID / УникальныйИдентификатор → v8:UUID
- СписокЗначений → ValueList (v8:ValueListType)

Раньше bare StandardPeriod падал в "Unrecognized bare type" и эмитился без
префикса (невалидно). Input-сахар (декомпилятор пишет каноничный v8:). Зеркало
py. Кейс attributes-types использует рус. СтандартныйПериод (вывод тот же,
сертифицирован). Регресс 39/39 ps1+py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-08 18:07:14 +03:00
parent 5a67c56e92
commit 7a2c257721
4 changed files with 25 additions and 4 deletions
@@ -1,4 +1,4 @@
# form-compile v1.76 — Compile 1C managed form from JSON or object metadata
# form-compile v1.77 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -1972,6 +1972,14 @@ $script:formTypeSynonyms["определяемыйтип"] = "Define
$script:formTypeSynonyms["характеристика"] = "Characteristic"
$script:formTypeSynonyms["любаяссылка"] = "AnyRef"
$script:formTypeSynonyms["любаяссылкаиб"] = "AnyIBRef"
# Платформенные v8-типы (forgiving: англ. без префикса + рус.) → каноничный с префиксом v8: (эмитим verbatim)
$script:formTypeSynonyms["standardperiod"] = "v8:StandardPeriod"
$script:formTypeSynonyms["стандартныйпериод"] = "v8:StandardPeriod"
$script:formTypeSynonyms["standardbeginningdate"] = "v8:StandardBeginningDate"
$script:formTypeSynonyms["стандартнаядатаначала"] = "v8:StandardBeginningDate"
$script:formTypeSynonyms["uuid"] = "v8:UUID"
$script:formTypeSynonyms["уникальныйидентификатор"] = "v8:UUID"
$script:formTypeSynonyms["списокзначений"] = "ValueList"
# Known invalid types (runtime/UI types that don't exist in XDTO schema)
$script:knownInvalidTypes = @{
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# form-compile v1.76 — Compile 1C managed form from JSON or object metadata
# form-compile v1.77 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import copy
@@ -2772,6 +2772,14 @@ _FORM_TYPE_SYNONYMS = {
"характеристика": "Characteristic",
"любаяссылка": "AnyRef",
"любаяссылкаиб": "AnyIBRef",
# Платформенные v8-типы (forgiving: англ. без префикса + рус.) → каноничный с префиксом v8:
"standardperiod": "v8:StandardPeriod",
"стандартныйпериод": "v8:StandardPeriod",
"standardbeginningdate": "v8:StandardBeginningDate",
"стандартнаядатаначала": "v8:StandardBeginningDate",
"uuid": "v8:UUID",
"уникальныйидентификатор": "v8:UUID",
"списокзначений": "ValueList",
}
+6 -1
View File
@@ -896,10 +896,15 @@ Pages поддерживает `pagesRepresentation`: `None`, `TabsOnTop`, `Tabs
|-----|-----|
| `"ValueTable"` | `v8:ValueTable` |
| `"ValueTree"` | `v8:ValueTree` |
| `"ValueList"` | `v8:ValueListType` |
| `"ValueList"` | `v8:ValueListType` (синоним `СписокЗначений`) |
| `"FormattedString"` | `v8ui:FormattedString` |
| `"Picture"` | `v8ui:Picture` |
| `"DynamicList"` | `cfg:DynamicList` |
| `"StandardPeriod"` | `v8:StandardPeriod` (forgiving: `СтандартныйПериод`, `v8:StandardPeriod`) |
| `"StandardBeginningDate"` | `v8:StandardBeginningDate` (синоним `СтандартнаяДатаНачала`) |
| `"UUID"` | `v8:UUID` (синоним `УникальныйИдентификатор`) |
> Платформенные `v8:`-типы можно писать без префикса или по-русски — компилятор приводит к каноничному `v8:X`. Уже-префиксованную форму (`v8:StandardPeriod`) принимает как есть.
### Наборы типов (TypeSet → `<v8:TypeSet>`)
@@ -27,7 +27,7 @@
{ "name": "Число", "type": "decimal(10,0,nonneg)", "edit": false },
{ "name": "Дата", "type": "dateTime", "title": "" },
{ "name": "Булево", "type": "boolean" },
{ "name": "Период", "type": "v8:StandardPeriod", "save": ["Период", "EndDate", "StartDate", "Variant"] },
{ "name": "Период", "type": "СтандартныйПериод", "save": ["Период", "EndDate", "StartDate", "Variant"] },
{ "name": "СписокЗначений", "type": "ValueList" },
{ "name": "Идентификатор", "type": "v8:UUID" }
]