mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-03 16:50:52 +03:00
feat(form-decompile,form-compile): дин-список AutoCommandBar — маркер отклонения вместо ADDED
Хвост кластера командных панелей: компилятор-эвристика додумывает Autofill=false
дин-список-таблицам (подавляет панель, чтобы не дублировать КП формы), но ~15%
таблиц имеют голый <AutoCommandBar/> (autofill=true по умолчанию — панель оставлена
при таблице). Раньше эвристика их перетирала → ADDED <Autofill>false>.
Решение (B): эвристика держит дефолт false (оптимальный — 85% дин-списков; контекст-
сигналы проверены по корпусу, ни один не даёт >50% «голых» → улучшать дефолт нечем),
а декомпилятор фиксирует ОТКЛОНЕНИЕ маркером commandBar:{ autofill: true }. commandBar
имеет приоритет над эвристикой.
Компилятор: Emit-CompanionPanel больше не пишет <Autofill>true</Autofill> (платформа
его не эмитит — true это дефолт); только <Autofill>false</Autofill>. autofill:true или
отсутствие → тег опускается, при пустой панели → self-closing <AutoCommandBar/>.
TOTAL diff lines выборки 2.17: 5293 → 5249 (-44). Table>AutoCommandBar ADDED 22 → 0
(полностью закрыт). Остаток AutoCommandBar 18 — форменная панель (heuristic B3, корень
формы) — отдельный пункт. Регресс form-compile 33/33 зелёный на ps + python.
decompile v0.30, compile v1.49.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
a1a22d1ffe
commit
7b945e786d
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.48 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.49 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2281,13 +2281,15 @@ function Emit-CompanionPanel {
|
||||
$children = $panel.children
|
||||
}
|
||||
$hasChildren = $children -and @($children).Count -gt 0
|
||||
if ($null -eq $autofill -and -not $hasChildren -and -not $halign) {
|
||||
# Платформа пишет <Autofill> только при false; true = дефолт (тег опускается).
|
||||
$emitAfFalse = ($autofill -eq $false)
|
||||
if (-not $emitAfFalse -and -not $hasChildren -and -not $halign) {
|
||||
X "$indent<$tag name=`"$name`" id=`"$id`"/>"
|
||||
return
|
||||
}
|
||||
X "$indent<$tag name=`"$name`" id=`"$id`">"
|
||||
if ($halign) { X "$indent`t<HorizontalAlign>$halign</HorizontalAlign>" }
|
||||
if ($null -ne $autofill) { X "$indent`t<Autofill>$(if ($autofill){'true'}else{'false'})</Autofill>" }
|
||||
if ($emitAfFalse) { X "$indent`t<Autofill>false</Autofill>" }
|
||||
if ($hasChildren) {
|
||||
X "$indent`t<ChildItems>"
|
||||
foreach ($c in @($children)) { Emit-Element -el $c -indent "$indent`t`t" -inCmdBar $true }
|
||||
|
||||
Reference in New Issue
Block a user