From e127dfcf3dfea13d37ab892d65d6cca647b62b09 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 13 Jun 2026 11:55:06 +0300 Subject: [PATCH] =?UTF-8?q?fix(form-decompile):=20whitespace-=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BE=D0=BA=20=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=B2=D0=B8=D0=B7=D0=B8=D1=82=D0=B0=20(Get-LangTextWS)=20?= =?UTF-8?q?=E2=80=94=20=D0=BA=D0=BB=D0=B0=D1=81=D1=82=D0=B5=D1=80=20Attrib?= =?UTF-8?q?ute>Title?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Реквизит формы с whitespace-only (<v8:content> </v8:content>, одиночный пробел) терялся: декомпилятор читал заголовок через Get-LangText, а PreserveWhitespace=false стрипал пробел → "" (= суппресс-маркер «нет заголовка») → компилятор не эмитил Title. Фикс: Get-LangText → Get-LangTextWS (существующий хелпер, восстанавливает значимый пробел — как уже сделано для UsualGroup Title/ToolTip). Декомпилятор-only: компилятор " "-заголовок уже умеет (прецедент групп). Для непустого/мультиязык-контента поведение не меняется (Get-LangTextWS == Get-LangText). Корпус 8.3.24: 13 whitespace-заголовков реквизита в 10 формах. Кластер Attribute>Title (impact 42) был раздут harness-мис-атрибуцией: одна реальная потеря на форму, а generic строки-обёртки (<Title>/<v8:item>/<v8:lang>ru) сыпались ложным LOST под соседними реквизитами. Выборка 5 форм: match 0→5, TOTAL→0. Регресс 43/43. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --- .claude/skills/form-decompile/scripts/form-decompile.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 16f7329b..9985652d 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.122 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.123 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -2592,7 +2592,7 @@ if ($attrsNode) { $isMain = ($ao['main'] -eq $true) # именно true; main:false (суппресс-маркер) → не-main для Title $tNode = $a.SelectSingleNode("lf:Title", $ns) if ($tNode) { - $t = Get-LangText $tNode + $t = Get-LangTextWS $tNode # восстановление значимого пробела (whitespace-заголовок реквизита) if ($null -ne $t) { if ($isMain -or -not ($t -is [string]) -or $t -ne (Title-FromName $ao['name'])) { $ao['title'] = $t } }