mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-30 16:36:56 +03:00
fix(form-decompile,form-compile): formatted у LabelDecoration независим от hyperlink (кластер formatted)
Компилятор выводил <Title formatted="…"> из hyperlink (formatted = hyperlink), но это неверно: атрибут formatted НЕЗАВИСИМ. По корпусу acc+erp: - 9080 label'ов: hyperlink есть, formatted=false (компилятор давал true); - 6545: formatted=true без hyperlink (компилятор давал false). Итого ~15625 расхождений. Введён отдельный ключ formatted (bool, выводится при true): - декомпилятор: захват атрибута <Title formatted> у LabelDecoration (независимо от <Hyperlink>); - компилятор Emit-Label: formatted из ключа, не из hyperlink. Декомпилятор (ps1) + компилятор (ps1+py) + spec (label.formatted). Снэпшот events обновлён: label с hyperlink:true теперь даёт formatted="false" (фиксирует развязку) — сертифицирован в 1С 8.3.24. Регресс ps+py 33/33. Остаток <Title formatted> в раундтрипе принадлежит ExtendedTooltip-с-контентом и PictureDecoration — отдельные кластеры (в BACKLOG). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
908af27bf0
commit
6857ad5060
@@ -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}<Title formatted="{formatted}">')
|
||||
emit_ml_items(lines, f'{inner}\t', label_title)
|
||||
lines.append(f'{inner}</Title>')
|
||||
|
||||
Reference in New Issue
Block a user