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))}')