mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 17:40:59 +03:00
feat(form-decompile,form-compile): loadTransparent картинки команд/кнопок/попапов (захват явного false)
Прозрачность картинки (<Picture><xr:LoadTransparent>) у Command/Button/Popup компилятор хардкодил true, а в корпусе значение смешано (Command true 11410/false 8066; Popup true 3142/false 2828). Явный false терялся. Теперь компилятор эмитит loadTransparent факт. значение (дефолт true — платформа всегда пишет тег внутри Picture; false при явном loadTransparent:false). Декомпилятор фиксирует ТОЛЬКО отклонение false (true опускается — додумывается дефолтом, без шума в DSL). Свойство плоское рядом с picture — консистентно с PictureDecoration(src)/PictureField(valuesPicture). TOTAL diff lines выборки 2.17: 2489 → 2415 (-74). Command/Button/Popup LoadTransparent residual → 0. Остаток (отдельный хвост): PictureField (HeaderPicture/valuesPicture), CheckBoxField-cascade, Table rowsPicture — другие картиночные объекты. Снапшот button-group (popup loadTransparent:false) сертифицирован в 1С (8.3.24). Регресс form-compile 34/34 зелёный на ps + python. decompile v0.42, compile v1.60. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4430ebc42e
commit
8448a28a29
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.41 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.42 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -1194,6 +1194,8 @@ function Decompile-Element {
|
||||
if ($type) { $tmap=@{'CommandBarButton'='commandBar';'UsualButton'='usual';'Hyperlink'='hyperlink';'CommandBarHyperlink'='hyperlink'}; if ($tmap.ContainsKey($type)) { $obj['type']=$tmap[$type] } else { $obj['type']=$type } }
|
||||
if ((Get-Child $node 'DefaultButton') -eq 'true') { $obj['defaultButton'] = $true }
|
||||
$ref = $node.SelectSingleNode("lf:Picture/xr:Ref", $ns); if ($ref) { $obj['picture'] = $ref.InnerText }
|
||||
# Дефолт у picture кнопки/попапа = true → фиксируем только отклонение false (true опускаем)
|
||||
$lt = $node.SelectSingleNode("lf:Picture/xr:LoadTransparent", $ns); if ($lt -and $lt.InnerText -eq 'false') { $obj['loadTransparent'] = $false }
|
||||
$rep = Get-Child $node 'Representation'; if ($rep) { $obj['representation'] = $rep }
|
||||
$lic = Get-Child $node 'LocationInCommandBar'; if ($lic) { $obj['locationInCommandBar'] = $lic }
|
||||
}
|
||||
@@ -1217,6 +1219,8 @@ function Decompile-Element {
|
||||
$obj[$key] = $name
|
||||
Add-CommonProps $obj $node $name
|
||||
$ref = $node.SelectSingleNode("lf:Picture/xr:Ref", $ns); if ($ref) { $obj['picture'] = $ref.InnerText }
|
||||
# Дефолт у picture кнопки/попапа = true → фиксируем только отклонение false (true опускаем)
|
||||
$lt = $node.SelectSingleNode("lf:Picture/xr:LoadTransparent", $ns); if ($lt -and $lt.InnerText -eq 'false') { $obj['loadTransparent'] = $false }
|
||||
$rep = Get-Child $node 'Representation'; if ($rep) { $obj['representation'] = $rep }
|
||||
$kids = Decompile-Children $node
|
||||
if ($kids) { $obj['children'] = $kids }
|
||||
@@ -1469,6 +1473,8 @@ if ($cmdsNode) {
|
||||
$cru = Get-Child $c 'CurrentRowUse'; if ($cru) { $co['currentRowUse'] = $cru }
|
||||
$sc = Get-Child $c 'Shortcut'; if ($sc) { $co['shortcut'] = $sc }
|
||||
$ref = $c.SelectSingleNode("lf:Picture/xr:Ref", $ns); if ($ref) { $co['picture'] = $ref.InnerText }
|
||||
# Дефолт у picture команды = true → фиксируем только отклонение false (true опускаем)
|
||||
$lt = $c.SelectSingleNode("lf:Picture/xr:LoadTransparent", $ns); if ($lt -and $lt.InnerText -eq 'false') { $co['loadTransparent'] = $false }
|
||||
$rep = Get-Child $c 'Representation'; if ($rep) { $co['representation'] = $rep }
|
||||
[void]$cmds.Add($co)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user