From 0846740db788d9b1f7a063fafacb0f6bd931e722 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 22 May 2026 21:51:49 +0300 Subject: [PATCH] =?UTF-8?q?feat(skd-compile):=20=D0=BF=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B9=20=20=D0=BD=D0=B0=20conditionalApp?= =?UTF-8?q?earance=20item?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Платформа эмитит (self-closing, без условий) на каждом condApp item, где фильтр не задан — это нормальная форма "правило применяется ко всем строкам без дополнительных условий". Compile теперь эмитит пустой тег если filter отсутствует/пуст. Decompile-side уже корректно игнорировал пустой filter (Build-CondApp читает items только если они есть). Эффект на sample30: −252 строки diff. Co-Authored-By: Claude Opus 4.7 --- .claude/skills/skd-compile/scripts/skd-compile.ps1 | 7 +++++-- .claude/skills/skd-compile/scripts/skd-compile.py | 7 +++++-- .../snapshots/appearance-multilang-value/Template.xml | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index 5041e49c..01c26f3d 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.ps1 +++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1 @@ -1,4 +1,4 @@ -# skd-compile v1.60 — Compile 1C DCS from JSON +# skd-compile v1.61 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -2248,8 +2248,11 @@ function Emit-ConditionalAppearance { } # Filter (reuse existing Emit-Filter logic) - if ($ca.filter) { + if ($ca.filter -and $ca.filter.Count -gt 0) { Emit-Filter -items $ca.filter -indent "$indent`t`t" + } else { + # Платформа эмитит пустой на каждом condApp item + X "$indent`t`t" } # Appearance (parameter-value pairs) diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index 86f55559..d752e2b0 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.py +++ b/.claude/skills/skd-compile/scripts/skd-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# skd-compile v1.60 — Compile 1C DCS from JSON +# skd-compile v1.61 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1882,8 +1882,11 @@ def emit_conditional_appearance(lines, items, indent, block_view_mode=None): lines.append(f'{indent}\t\t') # Filter - if ca.get('filter'): + if ca.get('filter') and len(ca['filter']) > 0: emit_filter(lines, ca['filter'], f'{indent}\t\t') + else: + # Платформа эмитит пустой на каждом condApp item + lines.append(f'{indent}\t\t') # Appearance if ca.get('appearance'): diff --git a/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml b/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml index 3ecb7672..d9cecb2e 100644 --- a/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml @@ -57,6 +57,7 @@ ДатаДокумента + Формат