From 77fc0cee2f84bb14f9c75a55f6a225de60509e72 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 22 May 2026 18:55:02 +0300 Subject: [PATCH] =?UTF-8?q?feat(skd-decompile):=20nested=20children=20?= =?UTF-8?q?=D0=B2=20table=20axis=20+=20structure-group=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Три связанных изменения: - Build-TableAxisBlock читает вложенные как children (StructureItemGroup внутри row/column/point/series) - Build-Structure принимает без явного xsi:type как StructureItemGroup (реальные XML используют такую default-форму для вложенных групп — раньше попадало в sentinel) - Чтение use=false на StructureItemGroup Эффект на sample30: −3253 строки diff (массовая категория — table row almost always содержит nested grouping). Co-Authored-By: Claude Opus 4.7 --- .../skills/skd-decompile/scripts/skd-decompile.ps1 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index d2324ebf..6cebaeb3 100644 --- a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 +++ b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 @@ -1,4 +1,4 @@ -# skd-decompile v0.34 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.35 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1710,6 +1710,9 @@ function Build-TableAxisBlock { $opNode = $node.SelectSingleNode("dcsset:outputParameters", $ns) $op = Build-OutputParameters -opNode $opNode if ($op -and $op.Count -gt 0) { $entry['outputParameters'] = $op } + # nested children (StructureItemGroup внутри table row/column или chart axis) + $children = Build-Structure -node $node -loc "$loc/children" + if ($children.Count -gt 0) { $entry['children'] = $children } # user-settings on the axis itself # viewMode: сохраняем даже Normal если node присутствует $avmNode = $node.SelectSingleNode("dcsset:viewMode", $ns) @@ -1804,12 +1807,17 @@ function Build-Structure { $idx++ continue } - if ($xt -ne 'StructureItemGroup') { + # без xsi:type → StructureItemGroup (default form, встречается + # во вложенных children внутри table row / structure group) + if ($xt -and $xt -ne 'StructureItemGroup') { $items += (New-Sentinel -kind "StructureItem:$xt" -loc $loc -detail 'Тип структуры пока не покрыт') $idx++ continue } $entry = [ordered]@{} + # use=false на самой группе — отключённая ветка структуры + $gUse = Get-Text $it "dcsset:use" + if ($gUse -eq 'false') { $entry['use'] = $false } # Optional name $nm = Get-Text $it "dcsset:name" if ($nm) { $entry['name'] = $nm }