feat(form-decompile,form-compile): семантика title (кластер G)

Над-генерация заголовков элементов из имени. Различаем:
- нет ключа title → авто-вывод из имени (помощь модели при создании форм);
- title: "" → подавить (<Title> не эмитим);
- непустая строка → как есть.

- compiler PS1+PY: Emit-Title/emit_title + Emit-Label проверяют наличие ключа,
  а не truthiness (раньше "" триггерило авто-вывод).
- decompiler: ставит title:"" для авто-выводящих типов (page/popup/label,
  непривязанные поля, button без команды), когда <Title> в оригинале отсутствует.
- docs/form-dsl-spec: семантика title.
- tests: pages демонстрирует title:"" (+snapshot, сертифицирован в 1С).

АварийныйРежим: diff 13→1. Регресс 32/32 PS1+PY, churn нулевой.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-04 18:32:02 +03:00
co-authored by Claude Opus 4.8
parent e777ded8d2
commit 4ba1e595bf
6 changed files with 32 additions and 24 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
"properties": { "autoTitle": false },
"elements": [
{ "pages": "СтраницыМастера", "pagesRepresentation": "None", "children": [
{ "page": "Шаг1", "title": "Параметры", "children": [
{ "page": "Шаг1", "title": "", "children": [
{ "input": "Параметр1", "path": "Параметр1" }
]},
{ "page": "Шаг2", "title": "Результат", "children": [
@@ -14,12 +14,6 @@
<ExtendedTooltip name="СтраницыМастераРасширеннаяПодсказка" id="2"/>
<ChildItems>
<Page name="Шаг1" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Параметры</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="Шаг1РасширеннаяПодсказка" id="4"/>
<ChildItems>
<InputField name="Параметр1" id="5">