From 9aac032ac87f0fbedf1dd6a8c37666270271cb72 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 22 May 2026 17:45:16 +0300 Subject: [PATCH] =?UTF-8?q?feat(skd-decompile):=20user-settings=20=D0=BD?= =?UTF-8?q?=D0=B0=20table/chart=20axis=20=D0=B8=20FilterItemGroup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build-TableAxisBlock теперь читает name на любой оси (раньше только для row), плюс viewMode (если non-Normal), userSettingID и userSettingPresentation на самом блоке column/row/point/series. Build-FilterItem для FilterItemGroup теперь читает presentation, viewMode (non-Normal), userSettingID, userSettingPresentation — раньше группа сохраняла только items. Co-Authored-By: Claude Opus 4.7 --- .../skd-decompile/scripts/skd-decompile.ps1 | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index a6cd1b11..d8535391 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.27 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.29 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1294,7 +1294,20 @@ function Build-FilterItem { foreach ($c in $itemNode.SelectNodes("dcsset:item", $ns)) { $items += (Build-FilterItem -itemNode $c -loc "$loc/item") } - return [ordered]@{ group = $groupName; items = $items } + $gObj = [ordered]@{ group = $groupName; items = $items } + $gPres = Get-Text $itemNode "dcsset:presentation" + if ($gPres) { $gObj['presentation'] = $gPres } + $gVM = Get-Text $itemNode "dcsset:viewMode" + # Normal — implicit when userSettingID present; skip unless non-default + if ($gVM -and $gVM -ne 'Normal') { $gObj['viewMode'] = $gVM } + $gUSID = Get-Text $itemNode "dcsset:userSettingID" + if ($gUSID) { $gObj['userSettingID'] = 'auto' } + $gUSPN = $itemNode.SelectSingleNode("dcsset:userSettingPresentation", $ns) + if ($gUSPN) { + $gUSP = Get-MLText $gUSPN + if ($gUSP) { $gObj['userSettingPresentation'] = $gUSP } + } + return $gObj } if ($xtype -ne 'FilterItemComparison') { return (New-Sentinel -kind "FilterItemType:$xtype" -loc $loc -detail 'Неизвестный тип фильтра') @@ -1598,10 +1611,9 @@ function Get-GroupFields { function Build-TableAxisBlock { param($node, [string]$loc, [bool]$includeName = $false) $entry = [ordered]@{} - if ($includeName) { - $nm = Get-Text $node "dcsset:name" - if ($nm) { $entry['name'] = $nm } - } + # name доступен на любой оси (column/row/point/series): убираем флаг includeName + $nm = Get-Text $node "dcsset:name" + if ($nm) { $entry['name'] = $nm } $gf = Get-GroupFields -parentNode $node -loc $loc if ($gf.Count -gt 0) { $entry['groupFields'] = $gf } # filter block on column/row/point/series @@ -1627,6 +1639,16 @@ function Build-TableAxisBlock { $opNode = $node.SelectSingleNode("dcsset:outputParameters", $ns) $op = Build-OutputParameters -opNode $opNode if ($op -and $op.Count -gt 0) { $entry['outputParameters'] = $op } + # user-settings on the axis itself + $avm = Get-Text $node "dcsset:viewMode" + if ($avm -and $avm -ne 'Normal') { $entry['viewMode'] = $avm } + $ausid = Get-Text $node "dcsset:userSettingID" + if ($ausid) { $entry['userSettingID'] = 'auto' } + $ausPresNode = $node.SelectSingleNode("dcsset:userSettingPresentation", $ns) + if ($ausPresNode) { + $ausPres = Get-MLText $ausPresNode + if ($ausPres) { $entry['userSettingPresentation'] = $ausPres } + } return $entry }