From 03720d93edaeae6719919c6c2e8e4f8826758398 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 13 Jun 2026 15:22:10 +0300 Subject: [PATCH] =?UTF-8?q?feat(form-decompile,form-compile):=20AutoShowOp?= =?UTF-8?q?en/ClearButtonMode=20(input)=20+=20EnableDrag=20=D0=BD=D0=B0=20?= =?UTF-8?q?PictureDecoration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (1) AutoShowOpenButtonMode (input, enum Auto/Always/FilledOnly, 14) + AutoShowClearButtonMode (3) — листовые скаляры → GENERIC_SCALARS (обе стороны + py). (2) PictureDecoration>EnableDrag (7) — декомпилятор ловил generic-ом (Add-CommonProps), но EnableDrag эмитился ТОЛЬКО в Emit-Table/SpreadSheet (Emit-Layout его не выводит) → PictureDecoration терял. Добавлен явный emit в Emit-PictureDecoration (после Emit-Layout). Generic-перенос enableDrag в Emit-Layout отклонён: сдвигает позицию в сертифицированных Table/SpreadSheet-снэпшотах (EnableDrag может быть XDTO-позиционно-чувствителен, как HeaderHeight/CurrentRowUse) — точечный фикс безопаснее. Выборка 22 формы: match 19 (целевые AutoShow*/PictureDecoration>EnableDrag закрыты; остаток 3 — SpellCheckingOnTextInput + value). 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 | 5 ++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 4fe62c53..c099e304 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.160 — Compile 1C managed form from JSON or object metadata +# form-compile v1.161 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -3260,6 +3260,9 @@ $script:genericScalars = @( @{ Tag='ShowCheckBoxesInDropList'; Key='showCheckBoxesInDropList'; Kind='bool' } @{ Tag='MultipleValueDataPath'; Key='multipleValueDataPath'; Kind='value' } @{ Tag='MultipleValuePresentDataPath'; Key='multipleValuePresentDataPath'; Kind='value' } + # Режим авто-показа кнопок открытия/очистки (input, enum Auto/Always/FilledOnly/…) + @{ Tag='AutoShowOpenButtonMode'; Key='autoShowOpenButtonMode'; Kind='value' } + @{ Tag='AutoShowClearButtonMode'; Key='autoShowClearButtonMode'; Kind='value' } # Оформление/картинка множественного выбора (input, редко; цвета — текст-контент, не атрибуты) @{ Tag='MultipleValuesTextColor'; Key='multipleValuesTextColor'; Kind='value' } @{ Tag='MultipleValuesBackColor'; Key='multipleValuesBackColor'; Kind='value' } @@ -4834,6 +4837,8 @@ function Emit-PictureDecoration { if ($el.hyperlink -eq $true) { X "$innertrue" } Emit-Layout -el $el -indent $inner + # EnableDrag — фактическое значение (декорация-картинка перетаскиваема; декомпилятор ловит generic-ом) + if ($null -ne $el.enableDrag) { X "$inner$(if ($el.enableDrag){'true'}else{'false'})" } # Оформление (цвета/шрифт/граница) — профиль декорации (1С толерантна к порядку appearance) Emit-Appearance -el $el -indent $inner -profile 'decoration' diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index 45ce8f35..e0460ad0 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.160 — Compile 1C managed form from JSON or object metadata +# form-compile v1.161 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -3377,6 +3377,9 @@ GENERIC_SCALARS = [ ('ShowCheckBoxesInDropList', 'showCheckBoxesInDropList', 'bool'), ('MultipleValueDataPath', 'multipleValueDataPath', 'value'), ('MultipleValuePresentDataPath', 'multipleValuePresentDataPath', 'value'), + # Режим авто-показа кнопок открытия/очистки (input, enum) + ('AutoShowOpenButtonMode', 'autoShowOpenButtonMode', 'value'), + ('AutoShowClearButtonMode', 'autoShowClearButtonMode', 'value'), # Оформление/картинка множественного выбора (input, редко; цвета — текст-контент) ('MultipleValuesTextColor', 'multipleValuesTextColor', 'value'), ('MultipleValuesBackColor', 'multipleValuesBackColor', 'value'), @@ -4562,6 +4565,9 @@ def emit_picture_decoration(lines, el, name, eid, indent): if el.get('hyperlink') is True: lines.append(f'{inner}true') emit_layout(lines, el, inner) + # EnableDrag — фактическое значение (декорация-картинка перетаскиваема; декомпилятор ловит generic-ом) + if el.get('enableDrag') is not None: + lines.append(f'{inner}{"true" if el["enableDrag"] else "false"}') # Оформление (цвета/шрифт/граница) — профиль декорации (1С толерантна к порядку appearance) emit_appearance(lines, el, inner, 'decoration') diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 13cb4f0e..cb4756d6 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.134 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.135 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -1616,6 +1616,9 @@ $GENERIC_SCALARS = @( @{ Tag='ShowCheckBoxesInDropList'; Key='showCheckBoxesInDropList'; Kind='bool' } @{ Tag='MultipleValueDataPath'; Key='multipleValueDataPath'; Kind='value' } @{ Tag='MultipleValuePresentDataPath'; Key='multipleValuePresentDataPath'; Kind='value' } + # Режим авто-показа кнопок открытия/очистки (input, enum) + @{ Tag='AutoShowOpenButtonMode'; Key='autoShowOpenButtonMode'; Kind='value' } + @{ Tag='AutoShowClearButtonMode'; Key='autoShowClearButtonMode'; Kind='value' } # Оформление/картинка множественного выбора (input, редко; цвета — текст-контент) @{ Tag='MultipleValuesTextColor'; Key='multipleValuesTextColor'; Kind='value' } @{ Tag='MultipleValuesBackColor'; Key='multipleValuesBackColor'; Kind='value' }