From eda7279de0562f216af1e7483221086999c6805a Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 25 Apr 2026 16:38:57 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-info):=20-Mode=20full=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=81=D1=85=D0=B5=D0=BC=D0=B5=20=D0=B1=D0=B5=D0=B7=20DataSetQu?= =?UTF-8?q?ery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Show-Query/show_query при отсутствии DataSetQuery делал exit 1, что обрывало full режим после Show-Overview — секции fields/resources/ params/variant пользователь не видел. Теперь в full проверяем наличие Query-набора и при отсутствии печатаем "(no query datasets)" и продолжаем. Прямой -Mode query сохраняет прежнее поведение. Воспроизводилось на схемах-приёмниках с одним DataSetObject (например, ЖурналОшибок в ERP). Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/skd-info/scripts/skd-info.ps1 | 5 +++-- .claude/skills/skd-info/scripts/skd-info.py | 7 ++++-- .../cases/skd-info/object-only-full.json | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 tests/skills/cases/skd-info/object-only-full.json diff --git a/.claude/skills/skd-info/scripts/skd-info.ps1 b/.claude/skills/skd-info/scripts/skd-info.ps1 index 11e3d8bf..0356eb0f 100644 --- a/.claude/skills/skd-info/scripts/skd-info.ps1 +++ b/.claude/skills/skd-info/scripts/skd-info.ps1 @@ -1,4 +1,4 @@ -# skd-info v1.1 — Analyze 1C DCS structure +# skd-info v1.2 — Analyze 1C DCS structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory=$true)] @@ -1349,7 +1349,8 @@ if ($Mode -eq "variant") { elseif ($Mode -eq "full") { Show-Overview $lines.Add(""); $lines.Add("--- query ---"); $lines.Add("") - Show-Query + $hasQuery = $root.SelectNodes("descendant::s:dataSet[@xsi:type='DataSetQuery']", $ns).Count -gt 0 + if ($hasQuery) { Show-Query } else { $lines.Add("(no query datasets)") } $lines.Add(""); $lines.Add("--- fields ---"); $lines.Add("") Show-Fields $lines.Add(""); $lines.Add("--- resources ---"); $lines.Add("") diff --git a/.claude/skills/skd-info/scripts/skd-info.py b/.claude/skills/skd-info/scripts/skd-info.py index ac41c576..a0db8d0b 100644 --- a/.claude/skills/skd-info/scripts/skd-info.py +++ b/.claude/skills/skd-info/scripts/skd-info.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# skd-info v1.1 — Analyze 1C DCS structure +# skd-info v1.2 — Analyze 1C DCS structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1662,7 +1662,10 @@ def main(): lines.append("") lines.append("--- query ---") lines.append("") - show_query() + if root.findall(".//s:dataSet[@xsi:type='DataSetQuery']", NSMAP): + show_query() + else: + lines.append("(no query datasets)") lines.append("") lines.append("--- fields ---") lines.append("") diff --git a/tests/skills/cases/skd-info/object-only-full.json b/tests/skills/cases/skd-info/object-only-full.json new file mode 100644 index 00000000..d09aa518 --- /dev/null +++ b/tests/skills/cases/skd-info/object-only-full.json @@ -0,0 +1,22 @@ +{ + "name": "Полный режим на схеме без Query (только DataSetObject)", + "args_extra": ["-Mode", "full"], + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "ВнешниеДанные", + "objectName": "ЖурналОшибок", + "fields": [ + { "field": "ТекстСообщения", "title": "Текст сообщения", "type": "string(150)" }, + { "field": "Расшифровка", "title": "Описание", "type": "CatalogRef.Контрагенты" } + ] + }] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" } + } + ], + "params": { "templatePath": "Template.xml" }, + "expect": { "stdoutContains": "ВнешниеДанные" } +}