feat(form-decompile,form-compile): Command AssociatedTableElementId (используемая таблица)

Свойство команды «Используемая таблица» — ссылка по ИМЕНИ элемента-таблицы
(<AssociatedTableElementId xsi:type="xs:string">Имя</…>, 240 в корпусе, всегда
xs:string). Команда работает в контексте этой таблицы (текущая строка).

- Ключ table; forgiving-синонимы associatedTableElementId (XML-тег) и
  ИспользуемаяТаблица (рус., регистро-/пробело-незав.) — команды идут отдельным
  путём Emit-Commands, не через PROP_SYNONYMS слой Emit-Element.
- CurrentRowUse («использование текущей строки») уже поддерживался.

Зеркало py. Кейс table расширен (table + currentRowUse), сертифицирован
загрузкой в 1С. Регресс 39/39 в обоих рантаймах.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-09 11:58:04 +03:00
co-authored by Claude Opus 4.8
parent fd9539dd20
commit 8aad132cc3
6 changed files with 26 additions and 4 deletions
@@ -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<CurrentRowUse>$($cmd.currentRowUse)</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<AssociatedTableElementId xsi:type=`"xs:string`">$(Esc-Xml "$cmdTable")</AssociatedTableElementId>"
}
if ($cmd.shortcut) {
X "$inner<Shortcut>$($cmd.shortcut)</Shortcut>"
}
@@ -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}<CurrentRowUse>{cmd["currentRowUse"]}</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}<AssociatedTableElementId xsi:type="xs:string">{esc_xml(str(cmd_table))}</AssociatedTableElementId>')
if cmd.get('shortcut'):
lines.append(f'{inner}<Shortcut>{cmd["shortcut"]}</Shortcut>')