diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1
index 9aa3814d..f54784d6 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.68 — Compile 1C DCS from JSON
+# skd-compile v1.69 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -1698,7 +1698,13 @@ function Get-CellValue {
param($cell)
if ($null -eq $cell) { return $null }
if ($cell -is [string]) { return $cell }
+ if ($cell -is [hashtable] -or $cell -is [System.Collections.IDictionary]) {
+ if ($cell.Contains('value')) { return $cell['value'] }
+ return $cell # multilang dict без обёртки
+ }
if ($cell.PSObject -and $cell.PSObject.Properties['value']) { return $cell.value }
+ # PSCustomObject без 'value' — это multilang dict ({ru, en, ...}), отдаём как есть
+ if ($cell -is [PSCustomObject]) { return $cell }
return $null
}
@@ -1779,7 +1785,14 @@ function Emit-AreaTemplateDSL {
Emit-CellAppearance $cellStyle $w $false $true
} else {
# Cell value
- if ($null -ne $cellVal -and $cellVal -ne '') {
+ $cellIsDict = ($cellVal -is [hashtable]) -or ($cellVal -is [System.Collections.IDictionary]) -or ($cellVal -is [PSCustomObject])
+ if ($cellIsDict) {
+ # Multilang static text — эмитим напрямую с lwsTitle-подобной структурой
+ X "`t`t`t`t`t"
+ Emit-MLText -tag "dcsat:value" -text $cellVal -indent "`t`t`t`t`t`t"
+ X "`t`t`t`t`t"
+ $cellExtraItems = @()
+ } elseif ($null -ne $cellVal -and $cellVal -ne '') {
$cellStr = "$cellVal"
# Unescape \| and \>
if ($cellStr -eq '\|') { $cellStr = '|' }
diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py
index daff98e9..4aca5089 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.68 — Compile 1C DCS from JSON
+# skd-compile v1.69 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -1405,8 +1405,10 @@ def _get_cell_value(cell):
return None
if isinstance(cell, str):
return cell
- if isinstance(cell, dict) and 'value' in cell:
- return cell['value']
+ if isinstance(cell, dict):
+ if 'value' in cell:
+ return cell['value']
+ return cell # multilang dict without wrapper
return None
@@ -1478,7 +1480,12 @@ def _emit_area_template_dsl(lines, t):
_emit_cell_appearance(lines, cell_style, w, h_merge=True)
else:
cell_extra_items = []
- if cell_val is not None and str(cell_val) != '':
+ if isinstance(cell_val, dict):
+ # Multilang static text — эмитим напрямую
+ lines.append('\t\t\t\t\t')
+ emit_mltext(lines, '\t\t\t\t\t\t', 'dcsat:value', cell_val)
+ lines.append('\t\t\t\t\t')
+ elif cell_val is not None and str(cell_val) != '':
cell_str = str(cell_val)
# Unescape \| and \>
if cell_str == '\\|':