feat(form-decompile,form-compile): Popup>CommandSource + InputField multiple-value/itemWidth скаляры

(1) Popup>CommandSource — источник команд попапа (Form/FormCommandPanelGlobalCommands/
Item.X) не ловился/эмитился (был только у ButtonGroup/CommandBar). Добавлен в
обработчик Popup (декомпилятор, с тем же id-ссылка guard) + Emit-Popup (после Title/
ToolTip, перед компаньоном). Зеркало py.

(2) Листовые скаляры в GENERIC_SCALARS (обе стороны + py): ItemWidth (radio/check,
22), ShowCheckBoxesInDropList (input bool, 7), MultipleValueDataPath /
MultipleValuePresentDataPath (input, по 10) + хвост множественного выбора
MultipleValuesTextColor/BackColor (цвет — текст-контент) / MultipleValuePictureShape /
MultipleValuePictureDataPath (input, по 1).

Выборка 41 форма: match 35 (целевые категории ItemWidth/ShowCheckBoxes/
MultipleValue*/Popup>CommandSource закрыты; Контрагенты/ФормаВыбора → match).
ps1==py байт-в-байт. Регресс 43/43. Spec обновлён (commandSource +popup).
Остаток 6 форм — отдельные кластеры (MultipleValuesFont структурный, CA-whitespace
value, DataSet field, DisplayImportance на companion).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-13 14:57:00 +03:00
co-authored by Claude Opus 4.8
parent 2d326c99a5
commit e1fb40189c
4 changed files with 44 additions and 4 deletions
@@ -1,4 +1,4 @@
# form-decompile v0.133 — Decompile 1C managed Form.xml to JSON DSL (draft)
# form-decompile v0.134 — Decompile 1C managed Form.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
param(
@@ -1611,6 +1611,16 @@ $GENERIC_SCALARS = @(
@{ Tag='ItemTitleHeight'; Key='itemTitleHeight'; Kind='value' }
# Спец-режим ввода текста (input, моб.: Email/PhoneNumber/...) — листовой enum-скаляр
@{ Tag='SpecialTextInputMode'; Key='specialTextInputMode'; Kind='value' }
# Ширина пункта (radio/check) / выбор нескольких значений из выпадающего (input)
@{ Tag='ItemWidth'; Key='itemWidth'; Kind='value' }
@{ Tag='ShowCheckBoxesInDropList'; Key='showCheckBoxesInDropList'; Kind='bool' }
@{ Tag='MultipleValueDataPath'; Key='multipleValueDataPath'; Kind='value' }
@{ Tag='MultipleValuePresentDataPath'; Key='multipleValuePresentDataPath'; Kind='value' }
# Оформление/картинка множественного выбора (input, редко; цвета — текст-контент)
@{ Tag='MultipleValuesTextColor'; Key='multipleValuesTextColor'; Kind='value' }
@{ Tag='MultipleValuesBackColor'; Key='multipleValuesBackColor'; Kind='value' }
@{ Tag='MultipleValuePictureShape'; Key='multipleValuePictureShape'; Kind='value' }
@{ Tag='MultipleValuePictureDataPath'; Key='multipleValuePictureDataPath'; Kind='value' }
)
# Захват generic-скаляров. Специфичная обработка (если ключ уже задан) — побеждает.
@@ -2166,6 +2176,9 @@ function Decompile-Element {
Add-CommonProps $obj $node $name
Set-CommandPicture $obj $node
$rep = Get-Child $node 'Representation'; if ($rep) { $obj['representation'] = $rep }
# Источник команд попапа (Form / FormCommandPanelGlobalCommands / Item.X) — как у ButtonGroup/CommandBar
$cs = Get-Child $node 'CommandSource'
if ($cs) { if ($cs -match '^\d+:[0-9a-fA-F]{8}-') { [Console]::Error.WriteLine("form-decompile: CommandSource '$cs' ($name) — ссылка по id, не воспроизводима, опущена") } else { $obj['commandSource'] = $cs } }
$kids = Decompile-Children $node
if ($kids) { $obj['children'] = $kids }
}