From 092cd8ebb42f8106a5818eade586696f7ce72b3c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 22 May 2026 20:22:22 +0300 Subject: [PATCH] =?UTF-8?q?feat(skd-decompile):=20=D1=87=D1=82=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20additionalProperties=20=D0=B2=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit → dict в settings.additionalProperties. Все значения xs:string, простые key→value пары. Эффект на sample30: −121 строка diff. Co-Authored-By: Claude Opus 4.7 --- .../skills/skd-decompile/scripts/skd-decompile.ps1 | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index 8afcef12..26cf4d2e 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.38 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.39 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -2317,6 +2317,18 @@ foreach ($sv in $svNodes) { $sivmNode = $settingsNode.SelectSingleNode("dcsset:itemsViewMode", $ns) if ($sivmNode) { $settings['itemsViewMode'] = $sivmNode.InnerText } + # — key→value свойства варианта (URL, имя, GUID и т.п.) + $apNode = $settingsNode.SelectSingleNode("dcsset:additionalProperties", $ns) + if ($apNode) { + $apDict = [ordered]@{} + foreach ($prop in $apNode.SelectNodes("v8:Property", $ns)) { + $pName = $prop.GetAttribute("name") + $valEl = $prop.SelectSingleNode("v8:Value", $ns) + if ($pName -and $valEl) { $apDict[$pName] = $valEl.InnerText } + } + if ($apDict.Count -gt 0) { $settings['additionalProperties'] = $apDict } + } + # Skip pure-default variants: settings contains only "details" structure (or nothing) + # name=Основной + no distinctive title. $nonStructKeys = @($settings.Keys | Where-Object { $_ -ne 'structure' })