mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-13 01:14:56 +03:00
feat(skd-compile): пустой <dcsset:filter/> на conditionalAppearance item
Платформа эмитит <dcsset:filter/> (self-closing, без условий) на каждом condApp item, где фильтр не задан — это нормальная форма "правило применяется ко всем строкам без дополнительных условий". Compile теперь эмитит пустой тег если filter отсутствует/пуст. Decompile-side уже корректно игнорировал пустой filter (Build-CondApp читает items только если они есть). Эффект на sample30: −252 строки diff. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -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 {
|
||||
# Платформа эмитит пустой <dcsset:filter/> на каждом condApp item
|
||||
X "$indent`t`t<dcsset:filter/>"
|
||||
}
|
||||
|
||||
# Appearance (parameter-value pairs)
|
||||
|
||||
@@ -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<dcsset:selection/>')
|
||||
|
||||
# Filter
|
||||
if ca.get('filter'):
|
||||
if ca.get('filter') and len(ca['filter']) > 0:
|
||||
emit_filter(lines, ca['filter'], f'{indent}\t\t')
|
||||
else:
|
||||
# Платформа эмитит пустой <dcsset:filter/> на каждом condApp item
|
||||
lines.append(f'{indent}\t\t<dcsset:filter/>')
|
||||
|
||||
# Appearance
|
||||
if ca.get('appearance'):
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
<dcsset:field>ДатаДокумента</dcsset:field>
|
||||
</dcsset:item>
|
||||
</dcsset:selection>
|
||||
<dcsset:filter/>
|
||||
<dcsset:appearance>
|
||||
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
|
||||
<dcscor:parameter>Формат</dcscor:parameter>
|
||||
|
||||
Reference in New Issue
Block a user