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:
Nick Shirokov
2026-06-12 13:04:54 +03:00
co-authored by Claude Opus 4.8
parent d0361561ca
commit 569234b448
5 changed files with 41 additions and 12 deletions
@@ -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>: определяемый тип / характеристика (именованные)