diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index 6ff69a35..8e31fe34 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.50 — Compile 1C DCS from JSON +# skd-compile v1.51 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -2192,6 +2192,11 @@ function Emit-ConditionalAppearance { foreach ($ca in $items) { X "$indent`t" + # use=false — отключённое правило (эмитим до selection — XML-порядок) + if ($ca.use -eq $false) { + X "$indent`t`tfalse" + } + # Selection (which fields to apply to; empty = all) if ($ca.selection -and $ca.selection.Count -gt 0) { X "$indent`t`t" @@ -2234,6 +2239,22 @@ function Emit-ConditionalAppearance { X "$indent`t`t$(Esc-Xml $uid)" } + # useInXxx — список областей где правило НЕ применяется (DontUse). + # Порядок имитирует платформенный (group → hierarchicalGroup → overall → ...). + if ($ca.useInDontUse -and $ca.useInDontUse.Count -gt 0) { + $useInOrder = @('group','hierarchicalGroup','overall', + 'fieldsHeader','header','parameters','filter', + 'resourceFieldsHeader','overallHeader','overallResourceFieldsHeader') + $set = @{} + foreach ($n in $ca.useInDontUse) { $set["$n"] = $true } + foreach ($n in $useInOrder) { + if ($set.ContainsKey($n)) { + $tag = "useIn" + ($n.Substring(0,1).ToUpper()) + ($n.Substring(1)) + X "$indent`t`tDontUse" + } + } + } + X "$indent`t" } if ($null -ne $blockViewMode) { diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index f8ddc6ff..d42f46cd 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.50 — Compile 1C DCS from JSON +# skd-compile v1.51 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1836,6 +1836,9 @@ def emit_conditional_appearance(lines, items, indent, block_view_mode=None): for ca in items: lines.append(f'{indent}\t') + if ca.get('use') is False: + lines.append(f'{indent}\t\tfalse') + # Selection if ca.get('selection') and len(ca['selection']) > 0: lines.append(f'{indent}\t\t') @@ -1870,6 +1873,17 @@ 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{esc_xml(uid)}') + # useInXxx — список областей где правило НЕ применяется (DontUse) + if ca.get('useInDontUse'): + use_in_order = ['group', 'hierarchicalGroup', 'overall', + 'fieldsHeader', 'header', 'parameters', 'filter', + 'resourceFieldsHeader', 'overallHeader', 'overallResourceFieldsHeader'] + s = set(ca['useInDontUse']) + for n in use_in_order: + if n in s: + tag = 'useIn' + n[0].upper() + n[1:] + lines.append(f'{indent}\t\tDontUse') + lines.append(f'{indent}\t') if block_view_mode is not None: lines.append(f'{indent}\t{esc_xml(str(block_view_mode))}')