From 6cfc5045096b46bb849a0944a83528aaf319661e Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 13 Jun 2026 16:21:44 +0300 Subject: [PATCH] =?UTF-8?q?feat(form-decompile,form-compile):=20DisplayImp?= =?UTF-8?q?ortance=20=D1=84=D0=BE=D1=80=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20AutoCommandBar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Форменная командная панель () может нести DisplayImportance="Low"/"VeryLow" (адаптивная важность). Декомпилятор не захватывал этот атрибут, маркер autoCmdBar создавался только при halign/autofill-false/children → DisplayImportance терялся; компилятор не эмитил. Декомпилятор: захват $acb DisplayImportance + расширен гейт маркера (DI тоже триггерит сохранение autoCmdBar-элемента). Компилятор: DI-Attr на тег форменного AutoCommandBar (обе ветки open/self-closing). Зеркало py. Корпус: 11 форменных ACB с DisplayImportance. Выборка 11 форм (ПерепискаСКонтролирующимиОрганами/ФормаГрупповойОтправки, …): match 11/11, TOTAL→0. ps1==py байт-в-байт. Регресс 43/43. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/form-compile/scripts/form-compile.ps1 | 7 ++++--- .claude/skills/form-compile/scripts/form-compile.py | 8 +++++--- .claude/skills/form-decompile/scripts/form-decompile.ps1 | 6 ++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 398d6ebd..0d2b225a 100644 --- a/.claude/skills/form-compile/scripts/form-compile.ps1 +++ b/.claude/skills/form-compile/scripts/form-compile.ps1 @@ -1,4 +1,4 @@ -# form-compile v1.163 — Compile 1C managed form from JSON or object metadata +# form-compile v1.164 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -6364,9 +6364,10 @@ if ($script:mainAcbDef) { } } $hasAcbChildren = ($script:mainAcbDef -and $script:mainAcbDef.children -and $script:mainAcbDef.children.Count -gt 0) +$acbDIAttr = if ($script:mainAcbDef) { DI-Attr $script:mainAcbDef } else { "" } # DisplayImportance форменной панели $acbHasInner = ($acbHAlign -or (-not $acbAutofill) -or $hasAcbChildren) if ($acbHasInner) { - X "`t" + X "`t" if ($acbHAlign) { X "`t`t$acbHAlign" } if (-not $acbAutofill) { X "`t`tfalse" } if ($hasAcbChildren) { @@ -6378,7 +6379,7 @@ if ($acbHasInner) { } X "`t" } else { - X "`t" + X "`t" } # 12e. Events diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index f0a22f64..f5c00d76 100644 --- a/.claude/skills/form-compile/scripts/form-compile.py +++ b/.claude/skills/form-compile/scripts/form-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-compile v1.163 — Compile 1C managed form from JSON or object metadata +# form-compile v1.164 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -6273,9 +6273,11 @@ def main(): if main_acb_def.get('horizontalAlign'): acb_halign = str(main_acb_def['horizontalAlign']) has_acb_children = bool(main_acb_def and isinstance(main_acb_def.get('children'), list) and len(main_acb_def['children']) > 0) + # DisplayImportance форменной панели (адаптивная важность) — атрибут тега + acb_di_attr = di_attr(main_acb_def) if main_acb_def is not None else '' has_inner = bool(acb_halign) or (not acb_autofill) or has_acb_children if has_inner: - lines.append(f'\t') + lines.append(f'\t') if acb_halign: lines.append(f'\t\t{acb_halign}') if not acb_autofill: @@ -6287,7 +6289,7 @@ def main(): lines.append('\t\t') lines.append('\t') else: - lines.append(f'\t') + lines.append(f'\t') # Events if defn.get('events'): diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 8c793974..1eed6508 100644 --- a/.claude/skills/form-decompile/scripts/form-decompile.ps1 +++ b/.claude/skills/form-decompile/scripts/form-decompile.ps1 @@ -1,4 +1,4 @@ -# form-decompile v0.138 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.139 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -2583,11 +2583,13 @@ $acb = $root.SelectSingleNode("lf:AutoCommandBar", $ns) if ($acb) { $haln = Get-Child $acb 'HorizontalAlign' $acbAutofill = Get-Child $acb 'Autofill' + $acbDI = $acb.GetAttribute("DisplayImportance") # адаптивная важность форменной панели (атрибут тега) $acbKids = Decompile-Children $acb $acbObj = $null - if ($haln -or ($acbAutofill -eq 'false') -or $acbKids) { + if ($haln -or ($acbAutofill -eq 'false') -or $acbKids -or $acbDI) { $acbObj = [ordered]@{} $acbObj['autoCmdBar'] = $acb.GetAttribute("name") + if ($acbDI) { $acbObj['displayImportance'] = $acbDI } if ($haln) { $acbObj['horizontalAlign'] = $haln } if ($acbAutofill -eq 'false') { $acbObj['autofill'] = $false } if ($acbKids) { $acbObj['children'] = $acbKids }