mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-06 19:50:20 +03:00
feat(form-decompile,form-compile): TitleLocation у LabelField/PictureField/Table (кластер TitleLocation)
TitleLocation обрабатывался только у input (passthrough), check/radio (smart-default) и calendar. У LabelField (7362 в корпусе), PictureField (2479) и Table (381) тег молча терялся — ни декомпилятор, ни компилятор его не знали. Профиль доли элементов с тегом: Table 2.9%, LabelField 15.8%, PictureField 80.5% (но 20% без тега). Платформа НЕ всегда эмитит → выбран passthrough (эмитим при наличии ключа, как у input/calendar), не smart-default. Корректно и консистентно; переиспользован существующий ключ titleLocation + Map-TitleLoc. Декомпилятор (ps1): захват titleLocation в трёх ветках. Компилятор (ps1+py): эмиссия в Emit-LabelField/Emit-Table/Emit-PictureField в позиции по схеме. spec §4.1: titleLocation вынесен в общие свойства с пометкой охвата. Тест-покрытие добавлено в input-fields (labelField=left), picture-field (picField=none), table (table=top) — снэпшоты сертифицированы в 1С 8.3.24. Раундтрип 60 форм с TitleLocation на label/pic/table/radio: остатка нет. Регресс ps+py 33/33. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
8998c0b5db
commit
c43041c0b7
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.13 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.14 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -401,6 +401,7 @@ function Decompile-Element {
|
||||
$obj[$key] = $name
|
||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||
Add-CommonProps $obj $node $name
|
||||
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
||||
$em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em }
|
||||
# LabelField: тег <Hiperlink> (опечатка платформы), не <Hyperlink>
|
||||
if ((Get-Child $node 'Hiperlink') -eq 'true') { $obj['hyperlink'] = $true }
|
||||
@@ -416,6 +417,7 @@ function Decompile-Element {
|
||||
$obj[$key] = $name
|
||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||
Add-CommonProps $obj $node $name
|
||||
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
||||
$ref = $node.SelectSingleNode("lf:ValuesPicture/xr:Ref", $ns); if ($ref) { $obj['valuesPicture'] = $ref.InnerText }
|
||||
}
|
||||
'CalendarField' {
|
||||
@@ -433,6 +435,7 @@ function Decompile-Element {
|
||||
$obj[$key] = $name
|
||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||
Add-CommonProps $obj $node $name
|
||||
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
||||
$rep = Get-Child $node 'Representation'; if ($rep) { $obj['representation'] = $rep }
|
||||
if ((Get-Child $node 'ChangeRowSet') -eq 'true') { $obj['changeRowSet'] = $true }
|
||||
if ((Get-Child $node 'ChangeRowOrder') -eq 'true') { $obj['changeRowOrder'] = $true }
|
||||
|
||||
Reference in New Issue
Block a user