feat(skd): userSettingPresentation на conditionalAppearance item

Build-ConditionalAppearance не читал userSettingPresentation
(read только viewMode/userSettingID), теперь сохраняет multilang
презентацию в JSON, а Emit-ConditionalAppearance эмитит её обратно.

sample30: −80 строк (2114 → 2034).
This commit is contained in:
Nick Shirokov
2026-05-23 17:27:21 +03:00
parent 5ca8ce2b64
commit f75c71064c
3 changed files with 15 additions and 3 deletions
@@ -1,4 +1,4 @@
# skd-compile v1.71 — Compile 1C DCS from JSON
# skd-compile v1.72 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -2340,6 +2340,10 @@ function Emit-ConditionalAppearance {
X "$indent`t`t<dcsset:userSettingID>$(Esc-Xml $uid)</dcsset:userSettingID>"
}
if ($ca.userSettingPresentation) {
Emit-MLText -tag "dcsset:userSettingPresentation" -text $ca.userSettingPresentation -indent "$indent`t`t"
}
# useInXxx — список областей где правило НЕ применяется (DontUse).
# Порядок имитирует платформенный (group → hierarchicalGroup → overall → ...).
if ($ca.useInDontUse -and $ca.useInDontUse.Count -gt 0) {
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# skd-compile v1.70 — Compile 1C DCS from JSON
# skd-compile v1.72 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -1932,6 +1932,9 @@ def emit_conditional_appearance(lines, items, indent, block_view_mode=None):
uid = new_uuid() if str(ca['userSettingID']) == 'auto' else str(ca['userSettingID'])
lines.append(f'{indent}\t\t<dcsset:userSettingID>{esc_xml(uid)}</dcsset:userSettingID>')
if ca.get('userSettingPresentation'):
emit_mltext(lines, f'{indent}\t\t', 'dcsset:userSettingPresentation', ca['userSettingPresentation'])
# useInXxx — список областей где правило НЕ применяется (DontUse)
if ca.get('useInDontUse'):
use_in_order = ['group', 'hierarchicalGroup', 'overall',
@@ -1,4 +1,4 @@
# skd-decompile v0.54 — Decompile 1C DCS Template.xml to JSON DSL (draft)
# skd-decompile v0.55 — Decompile 1C DCS Template.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -1639,6 +1639,11 @@ function Build-ConditionalAppearance {
if ($vmN) { $entry['viewMode'] = $vmN.InnerText }
$usid = Get-Text $it "dcsset:userSettingID"
if ($usid) { $entry['userSettingID'] = 'auto' }
$uspN = $it.SelectSingleNode("dcsset:userSettingPresentation", $ns)
if ($uspN) {
$usp = Get-MLText $uspN
if ($usp) { $entry['userSettingPresentation'] = $usp }
}
# use=false на самом condAppearance item
$useV = Get-Text $it "dcsset:use"
if ($useV -eq 'false') { $entry['use'] = $false }