diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1
index 3926cd4d..bfd49299 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.62 — Compile 1C DCS from JSON
+# skd-compile v1.63 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -1090,6 +1090,15 @@ function Emit-DataSetLinks {
if ($link.parameter) {
X "`t`t$(Esc-Xml "$($link.parameter)")"
}
+ if ($link.PSObject.Properties.Match('parameterListAllowed').Count -gt 0 -and $link.parameterListAllowed) {
+ X "`t`ttrue"
+ }
+ if ($link.PSObject.Properties.Match('startExpression').Count -gt 0 -and $null -ne $link.startExpression) {
+ X "`t`t$(Esc-Xml "$($link.startExpression)")"
+ }
+ if ($link.PSObject.Properties.Match('linkConditionExpression').Count -gt 0 -and $null -ne $link.linkConditionExpression) {
+ X "`t`t$(Esc-Xml "$($link.linkConditionExpression)")"
+ }
X "`t"
}
}
diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py
index aa70a341..bc567558 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.62 — Compile 1C DCS from JSON
+# skd-compile v1.63 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -851,6 +851,12 @@ def emit_data_set_links(lines, defn):
lines.append(f'\t\t{esc_xml(dst_ex)}')
if link.get('parameter'):
lines.append(f'\t\t{esc_xml(str(link["parameter"]))}')
+ if link.get('parameterListAllowed'):
+ lines.append('\t\ttrue')
+ if link.get('startExpression') is not None:
+ lines.append(f'\t\t{esc_xml(str(link["startExpression"]))}')
+ if link.get('linkConditionExpression') is not None:
+ lines.append(f'\t\t{esc_xml(str(link["linkConditionExpression"]))}')
lines.append('\t')
diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1
index fa9df9d6..73ea0bff 100644
--- a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1
+++ b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1
@@ -1,4 +1,4 @@
-# skd-decompile v0.46 — Decompile 1C DCS Template.xml to JSON DSL (draft)
+# skd-decompile v0.47 — Decompile 1C DCS Template.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -2114,6 +2114,27 @@ foreach ($dsNode in $dsNodes) {
$dsi++
}
+# --- 5a-bis. dataSetLinks ---
+
+$dataSetLinks = @()
+$dslNodes = $root.SelectNodes("r:dataSetLink", $ns)
+foreach ($dslNode in $dslNodes) {
+ $link = [ordered]@{}
+ $link['sourceDataSet'] = Get-Text $dslNode.SelectSingleNode("r:sourceDataSet", $ns)
+ $link['destinationDataSet'] = Get-Text $dslNode.SelectSingleNode("r:destinationDataSet", $ns)
+ $link['sourceExpression'] = Get-Text $dslNode.SelectSingleNode("r:sourceExpression", $ns)
+ $link['destinationExpression'] = Get-Text $dslNode.SelectSingleNode("r:destinationExpression", $ns)
+ $pNode = $dslNode.SelectSingleNode("r:parameter", $ns)
+ if ($pNode) { $link['parameter'] = Get-Text $pNode }
+ $plaNode = $dslNode.SelectSingleNode("r:parameterListAllowed", $ns)
+ if ($plaNode -and ((Get-Text $plaNode) -eq 'true')) { $link['parameterListAllowed'] = $true }
+ $seNode = $dslNode.SelectSingleNode("r:startExpression", $ns)
+ if ($seNode) { $link['startExpression'] = Get-Text $seNode }
+ $lceNode = $dslNode.SelectSingleNode("r:linkConditionExpression", $ns)
+ if ($lceNode) { $link['linkConditionExpression'] = Get-Text $lceNode }
+ $dataSetLinks += $link
+}
+
# --- 5b. calculatedFields ---
$calculatedFields = @()
@@ -2182,6 +2203,7 @@ foreach ($p in $paramsRaw) {
$out = [ordered]@{}
if ($emitDataSources) { $out['dataSources'] = $dataSources }
$out['dataSets'] = $dataSets
+if ($dataSetLinks.Count -gt 0) { $out['dataSetLinks'] = $dataSetLinks }
if ($calculatedFields.Count -gt 0) { $out['calculatedFields'] = $calculatedFields }
if ($totalFields.Count -gt 0) { $out['totalFields'] = $totalFields }
if ($parameters.Count -gt 0) { $out['parameters'] = $parameters }