mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
fix(form-compile): cfg-префикс для голых конфигурационных типов ConstantsSet/ReportObject
Раундтрип терял префикс: оригинал <v8:Type>cfg:ConstantsSet</v8:Type>, regen — голый <v8:Type>ConstantsSet</v8:Type> (напр. ПанельАдминистрированияБП/НастройкиРегистровУчета, реквизит НаборКонстант). cfg:-regex компилятора требует точку (ConstantsSet.X), а голая форма без .Имя уходила в default без префикса. Корпус (acc+erp 8.3.24) — голые cfg-типы (без точки): DynamicList 5205 (уже обрабатывался), ConstantsSet 103, ReportObject 10. Блок DynamicList расширен на все три. Дотированные формы ConstantsSet.X/ReportObject.X по-прежнему ловит общий cfg:-regex. Декомпилятор не трогали — он уже отдаёт голую форму (Decompile-Type снимает cfg:). compile (ps1+py). Верификация: таргет-раундтрип формы → match (было 2 → 0); регресс form-compile 43/43 (ps1+py); 1С-cert кейса attributes-types (реквизиты ConstantsSet/ReportObject грузятся в платформу). spec обновлён. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.128 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.129 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2176,9 +2176,11 @@ function Emit-SingleType {
|
||||
}
|
||||
}
|
||||
|
||||
# DynamicList
|
||||
if ($typeStr -eq "DynamicList") {
|
||||
X "$indent<v8:Type>cfg:DynamicList</v8:Type>"
|
||||
# Голые конфигурационные типы (cfg: без .Имя): дин-список, набор констант, общий объект отчёта.
|
||||
# Корпус (acc+erp 8.3.24): DynamicList 5205, ConstantsSet 103, ReportObject 10. (Дотированные формы
|
||||
# ConstantsSet.X / ReportObject.X ловит общий cfg:-regex ниже.)
|
||||
if ($typeStr -in @("DynamicList","ConstantsSet","ReportObject")) {
|
||||
X "$indent<v8:Type>cfg:$typeStr</v8:Type>"
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.128 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.129 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -3412,9 +3412,10 @@ def emit_single_type(lines, type_str, indent):
|
||||
lines.append(f'{indent}<v8:Type>{DCS_MAP[type_str]}</v8:Type>')
|
||||
return
|
||||
|
||||
# DynamicList
|
||||
if type_str == 'DynamicList':
|
||||
lines.append(f'{indent}<v8:Type>cfg:DynamicList</v8:Type>')
|
||||
# Голые конфигурационные типы (cfg: без .Имя): дин-список, набор констант, общий объект отчёта.
|
||||
# Корпус (acc+erp 8.3.24): DynamicList 5205, ConstantsSet 103, ReportObject 10.
|
||||
if type_str in ('DynamicList', 'ConstantsSet', 'ReportObject'):
|
||||
lines.append(f'{indent}<v8:Type>cfg:{type_str}</v8:Type>')
|
||||
return
|
||||
|
||||
# TypeSet (набор типов) → <v8:TypeSet>: определяемый тип / характеристика (именованные)
|
||||
|
||||
@@ -1142,6 +1142,8 @@ Forgiving-синонимы типа: XML-имя (`SpreadSheetDocumentField`) и
|
||||
| `"FormattedString"` | `v8ui:FormattedString` |
|
||||
| `"Picture"` | `v8ui:Picture` |
|
||||
| `"DynamicList"` | `cfg:DynamicList` |
|
||||
| `"ConstantsSet"` | `cfg:ConstantsSet` (набор констант; голый конфигурационный тип без `.Имя`) |
|
||||
| `"ReportObject"` | `cfg:ReportObject` (общий объект отчёта без `.Имя`; дотированная форма `ReportObject.Имя` — отдельный отчёт) |
|
||||
| `"StandardPeriod"` | `v8:StandardPeriod` (forgiving: `СтандартныйПериод`, `v8:StandardPeriod`) |
|
||||
| `"StandardBeginningDate"` | `v8:StandardBeginningDate` (синоним `СтандартнаяДатаНачала`) |
|
||||
| `"UUID"` | `v8:UUID` (синоним `УникальныйИдентификатор`) |
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
{ "name": "СписокЗначений", "type": "ValueList", "valueType": "string(50) | decimal(10,2)" },
|
||||
{ "name": "СписокЛюбой", "type": "ValueList", "valueType": "" },
|
||||
{ "name": "Идентификатор", "type": "v8:UUID" },
|
||||
{ "name": "НаборКонстант", "type": "ConstantsSet" },
|
||||
{ "name": "ОбъектОтчета", "type": "ReportObject" },
|
||||
{ "name": "Таблица", "type": "ValueTable", "title": "Таблица", "columns": [
|
||||
{ "name": "ИНН", "type": "string(12,fixed)" },
|
||||
{ "name": "Код", "type": "string(9,fixed)" },
|
||||
|
||||
+26
-4
@@ -165,7 +165,29 @@
|
||||
<v8:Type>v8:UUID</v8:Type>
|
||||
</Type>
|
||||
</Attribute>
|
||||
<Attribute name="Таблица" id="22">
|
||||
<Attribute name="НаборКонстант" id="22">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Набор констант</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>cfg:ConstantsSet</v8:Type>
|
||||
</Type>
|
||||
</Attribute>
|
||||
<Attribute name="ОбъектОтчета" id="23">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Объект отчета</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>cfg:ReportObject</v8:Type>
|
||||
</Type>
|
||||
</Attribute>
|
||||
<Attribute name="Таблица" id="24">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -176,7 +198,7 @@
|
||||
<v8:Type>v8:ValueTable</v8:Type>
|
||||
</Type>
|
||||
<Columns>
|
||||
<Column name="ИНН" id="23">
|
||||
<Column name="ИНН" id="25">
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
@@ -185,7 +207,7 @@
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Код" id="24">
|
||||
<Column name="Код" id="26">
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
@@ -194,7 +216,7 @@
|
||||
</v8:StringQualifiers>
|
||||
</Type>
|
||||
</Column>
|
||||
<Column name="Имя" id="25">
|
||||
<Column name="Имя" id="27">
|
||||
<Type>
|
||||
<v8:Type>xs:string</v8:Type>
|
||||
<v8:StringQualifiers>
|
||||
|
||||
Reference in New Issue
Block a user