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 }