mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-26 22:51:03 +03:00
feat(form-decompile,form-compile): общие свойства элемента DefaultItem/FileDragMode/EnableStartDrag/SkipOnInput (кластер generic element props)
Эти свойства — общие для любого типа элемента (таблица, поле, надпись, картинка, кнопка), а не специфичны для таблицы. Раньше обрабатывались только в дин-список-блоке Table → терялись на PictureDecoration/PictureField/LabelField/InputField/Button. Перенесены в общий Emit-Layout/Add-Layout (универсальны — 17 вызовов компилятора, один вызов декомпилятора на каждый элемент): - DefaultItem (элемент по умолчанию), EnableStartDrag, FileDragMode — захват при наличии. - SkipOnInput — теперь эмитится явное значение, включая false (раньше только true); декомпилятор захватывает фактическое значение. - Вынесены в helper Emit-CommonElementProps; убраны дубли из дин-список-блока Table (useAlternationRowColor/initialTreeView остаются table-specific) и из Emit-Table (enableStartDrag). Зеркало в form-compile.py идентично (py==ps1 проверено). Валидация: FileDragMode/DefaultItem/EnableStartDrag — 0 LOST / 0 ADDED (полностью закрыты на всех типах); SkipOnInput 141→37 (остаток — companion/nested-cmdbar кнопки, редундантный false, в BACKLOG); регресс 33/33 ps+py; сертификация в 1С PASS; harness 8300→7971 (−329), 0 fail, match 7→8. Spec: defaultItem/enableStartDrag/fileDragMode/skipOnInput → раздел 4.1 (общие свойства). В BACKLOG: хвост SkipOnInput на companion + мис-атрибуция дубликатов в harness. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
1d158e3218
commit
a9e1ab64c8
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.22 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.23 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -716,7 +716,11 @@ function Build-ConditionalAppearance {
|
||||
# (<Height>); Table хранит высоту в строках (<HeightInTableRows>) и ловит её сам.
|
||||
function Add-Layout {
|
||||
param($obj, $node)
|
||||
if ((Get-Child $node 'SkipOnInput') -eq 'true') { $obj['skipOnInput'] = $true }
|
||||
# Общие свойства элемента (любой тип): default/drag/skip
|
||||
if ((Get-Child $node 'DefaultItem') -eq 'true') { $obj['defaultItem'] = $true }
|
||||
$soi = Get-Child $node 'SkipOnInput'; if ($null -ne $soi) { $obj['skipOnInput'] = ($soi -eq 'true') }
|
||||
if ((Get-Child $node 'EnableStartDrag') -eq 'true') { $obj['enableStartDrag'] = $true }
|
||||
$fdm = Get-Child $node 'FileDragMode'; if ($fdm) { $obj['fileDragMode'] = $fdm }
|
||||
if ((Get-Child $node 'AutoMaxWidth') -eq 'false') { $obj['autoMaxWidth'] = $false }
|
||||
$mw = Get-Child $node 'MaxWidth'; if ($mw) { $obj['maxWidth'] = [int]$mw }
|
||||
if ((Get-Child $node 'AutoMaxHeight') -eq 'false') { $obj['autoMaxHeight'] = $false }
|
||||
@@ -991,12 +995,10 @@ function Decompile-Element {
|
||||
if ((Get-Child $node 'AllowRootChoice') -eq 'true') { $obj['allowRootChoice'] = $true }
|
||||
$uodc = Get-Child $node 'UpdateOnDataChange'; if ($uodc -and $uodc -ne 'Auto') { $obj['updateOnDataChange'] = $uodc }
|
||||
if ((Get-Child $node 'AllowGettingCurrentRowURL') -eq 'false') { $obj['allowGettingCurrentRowURL'] = $false }
|
||||
# Group B (захват при наличии)
|
||||
if ((Get-Child $node 'DefaultItem') -eq 'true') { $obj['defaultItem'] = $true }
|
||||
# list-таблица: useAlternationRowColor/initialTreeView (defaultItem/enableStartDrag/
|
||||
# fileDragMode — общие, ловятся в Add-Layout)
|
||||
if ((Get-Child $node 'UseAlternationRowColor') -eq 'true') { $obj['useAlternationRowColor'] = $true }
|
||||
$itv = Get-Child $node 'InitialTreeView'; if ($itv) { $obj['initialTreeView'] = $itv }
|
||||
if ((Get-Child $node 'EnableStartDrag') -eq 'true') { $obj['enableStartDrag'] = $true }
|
||||
$fdm = Get-Child $node 'FileDragMode'; if ($fdm) { $obj['fileDragMode'] = $fdm }
|
||||
# Group C
|
||||
$rpdp = Get-Child $node 'RowPictureDataPath'
|
||||
if ($null -eq $rpdp) { $obj['rowPictureDataPath'] = '' }
|
||||
|
||||
Reference in New Issue
Block a user