mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-30 16:36: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:
co-authored by
Claude Opus 4.7
parent
480d828c35
commit
0846740db7
@@ -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
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[string]$DefinitionFile,
|
[string]$DefinitionFile,
|
||||||
@@ -2248,8 +2248,11 @@ function Emit-ConditionalAppearance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Filter (reuse existing Emit-Filter logic)
|
# 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"
|
Emit-Filter -items $ca.filter -indent "$indent`t`t"
|
||||||
|
} else {
|
||||||
|
# Платформа эмитит пустой <dcsset:filter/> на каждом condApp item
|
||||||
|
X "$indent`t`t<dcsset:filter/>"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Appearance (parameter-value pairs)
|
# Appearance (parameter-value pairs)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/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
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
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/>')
|
lines.append(f'{indent}\t\t<dcsset:selection/>')
|
||||||
|
|
||||||
# Filter
|
# Filter
|
||||||
if ca.get('filter'):
|
if ca.get('filter') and len(ca['filter']) > 0:
|
||||||
emit_filter(lines, ca['filter'], f'{indent}\t\t')
|
emit_filter(lines, ca['filter'], f'{indent}\t\t')
|
||||||
|
else:
|
||||||
|
# Платформа эмитит пустой <dcsset:filter/> на каждом condApp item
|
||||||
|
lines.append(f'{indent}\t\t<dcsset:filter/>')
|
||||||
|
|
||||||
# Appearance
|
# Appearance
|
||||||
if ca.get('appearance'):
|
if ca.get('appearance'):
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
<dcsset:field>ДатаДокумента</dcsset:field>
|
<dcsset:field>ДатаДокумента</dcsset:field>
|
||||||
</dcsset:item>
|
</dcsset:item>
|
||||||
</dcsset:selection>
|
</dcsset:selection>
|
||||||
|
<dcsset:filter/>
|
||||||
<dcsset:appearance>
|
<dcsset:appearance>
|
||||||
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
|
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
|
||||||
<dcscor:parameter>Формат</dcscor:parameter>
|
<dcscor:parameter>Формат</dcscor:parameter>
|
||||||
|
|||||||
Reference in New Issue
Block a user