From 46e065adb963a5d77291983e7c555c43507510b4 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 8 Apr 2026 20:36:50 +0300 Subject: [PATCH] feat(skd-edit): add-drilldown operation for connecting DrillDown to DCS template resources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds DetailsAreaTemplateParameter + Расшифровка appearance binding to all named templates for each specified resource. Comma-separated value list, idempotent, nesting-aware template scan. Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/skills/skd-edit/SKILL.md | 11 ++ .claude/skills/skd-edit/scripts/skd-edit.ps1 | 159 +++++++++++++++++- .claude/skills/skd-edit/scripts/skd-edit.py | 154 ++++++++++++++++- .../skills/cases/skd-edit/add-drilldown.json | 9 + .../fixtures/drilldown-base/Template.xml | 97 +++++++++++ .../snapshots/add-drilldown/Template.xml | 121 +++++++++++++ 6 files changed, 547 insertions(+), 4 deletions(-) create mode 100644 tests/skills/cases/skd-edit/add-drilldown.json create mode 100644 tests/skills/cases/skd-edit/fixtures/drilldown-base/Template.xml create mode 100644 tests/skills/cases/skd-edit/snapshots/add-drilldown/Template.xml diff --git a/.claude/skills/skd-edit/SKILL.md b/.claude/skills/skd-edit/SKILL.md index d3dcfab9..1b69b351 100644 --- a/.claude/skills/skd-edit/SKILL.md +++ b/.claude/skills/skd-edit/SKILL.md @@ -193,6 +193,17 @@ OrGroup: несколько условий через ` or ` в `when` объе **Важно**: для параметров данных используйте префикс `ПараметрыДанных.` в поле фильтра. +### add-drilldown — подключить расшифровку к ресурсам в шаблонах + +Value — имена ресурсов (как в полях/вычисляемых полях СКД) через запятую. + +``` +"ПоступлениеИзПроизводства, ВыбытиеПрочее" +"Сумма_Дт83, Сумма_Дт99, Сумма_68, Сумма_84" +``` + +Подключает DrillDown по `ИмяРесурса` ко всем шаблонам, содержащим указанные ресурсы. Идемпотентно. + ### set-query — заменить текст запроса Не поддерживает пакетный режим. Value — полный текст запроса или `@path/to/file.sql` (ссылка на внешний файл). Путь разрешается относительно Template.xml, затем CWD. diff --git a/.claude/skills/skd-edit/scripts/skd-edit.ps1 b/.claude/skills/skd-edit/scripts/skd-edit.ps1 index ce9d3c5c..3becbe8b 100644 --- a/.claude/skills/skd-edit/scripts/skd-edit.ps1 +++ b/.claude/skills/skd-edit/scripts/skd-edit.ps1 @@ -1,4 +1,4 @@ -# skd-edit v1.7 — Atomic 1C DCS editor +# skd-edit v1.8 — Atomic 1C DCS editor # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -8,7 +8,7 @@ param( [ValidateSet( "add-field","add-total","add-calculated-field","add-parameter","add-filter", "add-dataParameter","add-order","add-selection","add-dataSetLink", - "add-dataSet","add-variant","add-conditionalAppearance", + "add-dataSet","add-variant","add-conditionalAppearance","add-drilldown", "set-query","patch-query","set-outputParameter","set-structure", "modify-field","modify-filter","modify-dataParameter","modify-parameter", "clear-selection","clear-order","clear-filter", @@ -1526,6 +1526,12 @@ if ($Operation -eq "set-query" -or $Operation -eq "set-structure" -or $Operation $values = @($Value) } elseif ($Operation -eq "patch-query") { $values = @($Value -split ';;' | Where-Object { $_.Trim() }) +} elseif ($Operation -eq "add-drilldown") { + if ($Value.Contains(';;')) { + $values = @($Value -split ';;' | ForEach-Object { $_.Trim() } | Where-Object { $_ }) + } else { + $values = @($Value -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ }) + } } else { $values = @($Value -split ';;' | ForEach-Object { $_.Trim() } | Where-Object { $_ }) } @@ -2538,6 +2544,155 @@ switch ($Operation) { Write-Host "[OK] Filter for `"$fieldName`" removed from variant `"$varName`"" } } + + "add-drilldown" { + # String-based manipulation — templates use dcsat namespace with inline xmlns + $rawText = [System.IO.File]::ReadAllText($resolvedPath, [System.Text.Encoding]::UTF8) + $nl = "`r`n" + $dcsatNsDecl = 'xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template"' + + # Find all outer