diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1
index 68a9225e..cba3f986 100644
--- a/.claude/skills/form-compile/scripts/form-compile.ps1
+++ b/.claude/skills/form-compile/scripts/form-compile.ps1
@@ -1,4 +1,4 @@
-# form-compile v1.89 — Compile 1C managed form from JSON or object metadata
+# form-compile v1.90 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -4766,6 +4766,15 @@ function Emit-Commands {
X "$inner$($cmd.currentRowUse)"
}
+ # Используемая таблица — имя элемента-таблицы (xsi:type обязателен).
+ # Forgiving-ключи: table / associatedTableElementId (XML-тег) / ИспользуемаяТаблица (рус., регистр-незав.)
+ $cmdTable = $cmd.table
+ if (-not $cmdTable) { $cmdTable = $cmd.associatedTableElementId }
+ if (-not $cmdTable) { $cmdTable = $cmd.используемаяТаблица }
+ if ($cmdTable) {
+ X "$inner$(Esc-Xml "$cmdTable")"
+ }
+
if ($cmd.shortcut) {
X "$inner$($cmd.shortcut)"
}
diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py
index 4014f929..ee50a010 100644
--- a/.claude/skills/form-compile/scripts/form-compile.py
+++ b/.claude/skills/form-compile/scripts/form-compile.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# form-compile v1.89 — Compile 1C managed form from JSON or object metadata
+# form-compile v1.90 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import copy
@@ -4461,6 +4461,14 @@ def emit_commands(lines, cmds, indent):
if cmd.get('currentRowUse'):
lines.append(f'{inner}{cmd["currentRowUse"]}')
+ # Используемая таблица — имя элемента-таблицы (xsi:type обязателен).
+ # Forgiving-ключи: table / associatedTableElementId (XML-тег) / ИспользуемаяТаблица (рус., регистр-незав.)
+ _cmd_norm = {k.replace(' ', '').lower(): v for k, v in cmd.items()}
+ cmd_table = (_cmd_norm.get('table') or _cmd_norm.get('associatedtableelementid')
+ or _cmd_norm.get('используемаятаблица'))
+ if cmd_table:
+ lines.append(f'{inner}{esc_xml(str(cmd_table))}')
+
if cmd.get('shortcut'):
lines.append(f'{inner}{cmd["shortcut"]}')
diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1
index 9732ab67..57a0441a 100644
--- a/.claude/skills/form-decompile/scripts/form-decompile.ps1
+++ b/.claude/skills/form-decompile/scripts/form-decompile.ps1
@@ -1,4 +1,4 @@
-# form-decompile v0.65 — Decompile 1C managed Form.xml to JSON DSL (draft)
+# form-decompile v0.66 — Decompile 1C managed Form.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
param(
@@ -1934,6 +1934,8 @@ if ($cmdsNode) {
$us = Decompile-XrFlag $c 'Use'; if ($null -ne $us) { $co['use'] = $us }
$cfo = Decompile-FunctionalOptions $c; if ($cfo) { $co['functionalOptions'] = $cfo }
$cru = Get-Child $c 'CurrentRowUse'; if ($cru) { $co['currentRowUse'] = $cru }
+ # Используемая таблица — ссылка по имени элемента-таблицы (Имя…>)
+ $ate = Get-Child $c 'AssociatedTableElementId'; if ($ate) { $co['table'] = $ate }
$sc = Get-Child $c 'Shortcut'; if ($sc) { $co['shortcut'] = $sc }
$ref = $c.SelectSingleNode("lf:Picture/xr:Ref", $ns); if ($ref) { $co['picture'] = $ref.InnerText }
# Дефолт у picture команды = true → фиксируем только отклонение false (true опускаем)
diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md
index e07fa5f2..b4022d93 100644
--- a/docs/form-dsl-spec.md
+++ b/docs/form-dsl-spec.md
@@ -895,6 +895,7 @@ Pages поддерживает `pagesRepresentation`: `None`, `TabsOnTop`, `Tabs
| `use` | bool/object | Доступность команды по ролям (`