diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 69f8fbbe..80339fa0 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.37 — Compile 1C managed form from JSON or object metadata +# form-compile v1.38 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -1974,7 +1974,7 @@ function Emit-Element { "spinButton"=1;"dropListButton"=1;"markIncomplete"=1;"skipOnInput"=1;"inputHint"=1 "textEdit"=1 # label/hyperlink - "hyperlink"=1 + "hyperlink"=1;"formatted"=1 # group-specific "showTitle"=1;"united"=1;"collapsed"=1 # hierarchy @@ -2527,7 +2527,8 @@ function Emit-Label { $hasTitleKey = $null -ne $el.PSObject.Properties['title'] $labelTitle = if ($hasTitleKey) { $el.title } else { Title-FromName -name $name } if ($labelTitle) { - $formatted = if ($el.hyperlink -eq $true) { "true" } else { "false" } + # formatted — независимое свойство (НЕ выводится из hyperlink): ссылка может быть не-форматированной и наоборот. + $formatted = if ($el.formatted -eq $true) { "true" } else { "false" } X "$inner" Emit-MLItems -val $labelTitle -indent "$inner`t" X "$inner" diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index cdc235dd..a5ab5c1a 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.37 — Compile 1C managed form from JSON or object metadata +# form-compile v1.38 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -1367,7 +1367,7 @@ KNOWN_KEYS = { "multiLine", "passwordMode", "choiceButton", "clearButton", "spinButton", "dropListButton", "markIncomplete", "skipOnInput", "inputHint", "textEdit", - "hyperlink", + "hyperlink", "formatted", "showTitle", "united", "collapsed", "children", "columns", "changeRowSet", "changeRowOrder", "header", "footer", @@ -2177,7 +2177,8 @@ def emit_label(lines, el, name, eid, indent): label_title = el['title'] if 'title' in el else title_from_name(name) if label_title: - formatted = 'true' if el.get('hyperlink') is True else 'false' + # formatted — независимое свойство (НЕ выводится из hyperlink). + formatted = 'true' if el.get('formatted') is True else 'false' lines.append(f'{inner}') emit_ml_items(lines, f'{inner}\t', label_title) lines.append(f'{inner}') diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 085578c3..475eb44f 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.17 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.18 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -399,6 +399,9 @@ function Decompile-Element { $obj[$key] = $name Add-CommonProps $obj $node $name if ((Get-Child $node 'Hyperlink') -eq 'true') { $obj['hyperlink'] = $true } + # formatted — атрибут , НЕЗАВИСИМ от hyperlink (true → ключ, false → опускаем) + $tiNode = $node.SelectSingleNode("lf:Title", $ns) + if ($tiNode -and $tiNode.GetAttribute('formatted') -eq 'true') { $obj['formatted'] = $true } } 'LabelField' { $obj[$key] = $name diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md index 00ad093a..5edd8de4 100644 --- a/docs/form-dsl-spec.md +++ b/docs/form-dsl-spec.md @@ -276,6 +276,7 @@ |----------|-----|----------| | `title` | string | Текст надписи | | `hyperlink` | bool | Режим гиперссылки | +| `formatted` | bool | Форматированный текст (`<Title formatted="true">`). **Независим от `hyperlink`** — выводится только при `true` | | `width` | int | Ширина | | `height` | int | Высота | | `autoMaxWidth` | bool | Автомаксимальная ширина | diff --git a/tests/skills/cases/form-compile/snapshots/events/DataProcessors/События/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/events/DataProcessors/События/Forms/Форма/Ext/Form.xml index 95304b6c..18c07411 100644 --- a/tests/skills/cases/form-compile/snapshots/events/DataProcessors/События/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-compile/snapshots/events/DataProcessors/События/Forms/Форма/Ext/Form.xml @@ -31,7 +31,7 @@ </Events> </InputField> <LabelDecoration name="Подсказка" id="7"> - <Title formatted="true"> + <Title formatted="false"> <v8:item> <v8:lang>ru</v8:lang> <v8:content>Нажмите для перехода</v8:content>