mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 17:40:59 +03:00
fix(form-compile,form-decompile): Table <Height> vs <HeightInTableRows> — развод свойств
DSL зря сводил оба тега в height, а компилятор для таблицы всегда эмитил <HeightInTableRows> → таблица с <Height>5</Height> регенерилась как <HeightInTableRows>5</HeightInTableRows> (форма БизнесСеть/ВыборОрганизации). Это РАЗНЫЕ свойства (высота элемента vs высота в строках), сосуществуют в 237 таблицах корпуса (Height-only 1242, HeightInTableRows-only 755). - Развёл: height → <Height> (generic Emit-Layout, как у всех элементов), новый heightInTableRows → <HeightInTableRows>. - Декомпилятор: Add-Layout ловит <Height> → height, Table-блок <HeightInTableRows> → heightInTableRows. Зеркало py. Кейс table расширен (оба тега), сертифицирован в 1С (платформа принимает оба). Регресс 39/39 в обоих рантаймах. Раундтрип TOTAL 68→61. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4916f5bf7c
commit
8bff8d7e05
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.63 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.64 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -756,8 +756,8 @@ function Build-ConditionalAppearance {
|
||||
}
|
||||
|
||||
# Общие layout-свойства → в $obj (симметрично Emit-Layout компилятора).
|
||||
# Вызывается один раз для любого элемента. Height тут — пиксельная высота
|
||||
# (<Height>); Table хранит высоту в строках (<HeightInTableRows>) и ловит её сам.
|
||||
# Вызывается один раз для любого элемента. Height тут — высота элемента (<Height>),
|
||||
# в т.ч. у Table; высоту в строках (<HeightInTableRows>) Table ловит отдельно в heightInTableRows.
|
||||
function Add-Layout {
|
||||
param($obj, $node)
|
||||
# Общие свойства элемента (любой тип): default/drag/skip
|
||||
@@ -1480,7 +1480,8 @@ function Decompile-Element {
|
||||
if ($node.SelectSingleNode("lf:RowFilter", $ns)) { $obj['rowFilter'] = $null }
|
||||
if ((Get-Child $node 'Header') -eq 'false') { $obj['header'] = $false }
|
||||
if ((Get-Child $node 'Footer') -eq 'true') { $obj['footer'] = $true }
|
||||
$htr = Get-Child $node 'HeightInTableRows'; if ($htr) { $obj['height'] = [int]$htr }
|
||||
# Высота в строках — отдельный ключ heightInTableRows (≠ height = <Height>, его ловит Add-Layout)
|
||||
$htr = Get-Child $node 'HeightInTableRows'; if ($htr) { $obj['heightInTableRows'] = [int]$htr }
|
||||
# CommandBarLocation: для дин-список-таблицы компилятор авто-инжектит "None" → инвертируем
|
||||
# (нет тега → суппресс-маркер ""; "None" → опускаем = авто-дефолт; иначе → захват).
|
||||
$cbl = Get-Child $node 'CommandBarLocation'
|
||||
|
||||
Reference in New Issue
Block a user