mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
feat(form-compile): оформление PictureDecoration — un-defer (хвост Appearance закрыт)
Ранее отложил PictureDecoration, ошибочно решив, что падение загрузки = порядок тегов (XSD расщепляет appearance вокруг <Title>). Разбор остатка показал: падало из-за НЕВАЛИДНОЙ ссылки на картинку в тесте (picture:"Картинка" → <xr:Ref>Картинка</xr:Ref>, такой CommonPicture нет), а не из-за оформления. Проверка с валидной StdPicture.Print + appearance → грузится чисто. Ключевой факт: 1С ТОЛЕРАНТНА к порядку оформления внутри элемента. LabelDecoration в корпусе тоже расщепляет appearance вокруг Title (TextColor/Font до Title — тысячи раз; BackColor/Border после), но компилятор эмитит contiguous-после-Title — и LabelDecoration сертифицировался. Значит профиль decoration валиден и для PictureDecoration. Разведён 12-й эмиттер (pictureDecoration, профиль decoration), PS+Python. Кейс element-appearance расширен PictureDecoration (StdPicture.Print, чистое имя через src). Сертификация загрузкой — чисто. Регресс 36/36 ps+py. Harness: остаток appearance LOST = 0 (был PictureDecoration 2), TOTAL 1146→1144; весь кластер Appearance 1326→1144 (−182). Версия form-compile v1.67.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.66 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.67 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -3607,8 +3607,8 @@ function Emit-PictureDecoration {
|
||||
if ($el.hyperlink -eq $true) { X "$inner<Hyperlink>true</Hyperlink>" }
|
||||
Emit-Layout -el $el -indent $inner
|
||||
|
||||
# Оформление PictureDecoration: XSD расщепляет appearance вокруг Title (Border после Title)
|
||||
# + позиция Picture — отдельный кластер, пока не разводим (декомпилятор захватывает в keys).
|
||||
# Оформление (цвета/шрифт/граница) — профиль декорации (1С толерантна к порядку appearance)
|
||||
Emit-Appearance -el $el -indent $inner -profile 'decoration'
|
||||
|
||||
# Companions
|
||||
Emit-CompanionPanel -tag "ContextMenu" -name "${name}КонтекстноеМеню" -indent $inner -panel $el.contextMenu
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.66 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.67 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -3302,8 +3302,8 @@ def emit_picture_decoration(lines, el, name, eid, indent):
|
||||
lines.append(f'{inner}<Hyperlink>true</Hyperlink>')
|
||||
emit_layout(lines, el, inner)
|
||||
|
||||
# Оформление PictureDecoration: XSD расщепляет appearance вокруг Title (Border после Title)
|
||||
# + позиция Picture — отдельный кластер, пока не разводим (декомпилятор захватывает в keys).
|
||||
# Оформление (цвета/шрифт/граница) — профиль декорации (1С толерантна к порядку appearance)
|
||||
emit_appearance(lines, el, inner, 'decoration')
|
||||
|
||||
# Companions
|
||||
emit_companion_panel(lines, 'ContextMenu', f'{name}\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435\u041c\u0435\u043d\u044e', inner, el.get('contextMenu'))
|
||||
|
||||
@@ -197,7 +197,7 @@ companion-панели с собственным контентом. Оба не
|
||||
|
||||
### 4.1e. Оформление элемента (цвета / шрифты / граница)
|
||||
|
||||
Прямые свойства оформления элемента. Ключи — англ. camelCase 1:1 с тегами; **принимаются рус. синонимы** (forgiving). Применимо к полям (input/check/radio/labelField/picField/calendar), декорациям (label), кнопкам (button), группам (group/columnGroup) и таблицам (table); порядок тегов в XML — по базовому типу (профиль), компилятор расставляет сам. (PictureDecoration пока не поддержан — у него XSD расщепляет оформление вокруг `<Title>`.)
|
||||
Прямые свойства оформления элемента. Ключи — англ. camelCase 1:1 с тегами; **принимаются рус. синонимы** (forgiving). Применимо к полям (input/check/radio/labelField/picField/calendar), декорациям (label/picture), кнопкам (button), группам (group/columnGroup) и таблицам (table); порядок тегов в XML — по базовому типу (профиль), компилятор расставляет сам (1С толерантна к порядку оформления внутри элемента).
|
||||
|
||||
| Ключ | Тег | Рус. синоним |
|
||||
|------|-----|--------------|
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "Оформление элементов — цвета/шрифты/граница на decoration/input/button/group (профили порядка)",
|
||||
"name": "Оформление элементов — цвета/шрифты/граница на decoration/input/button/group/picture (профили порядка)",
|
||||
"preRun": [
|
||||
{
|
||||
"script": "meta-compile/scripts/meta-compile",
|
||||
@@ -36,7 +36,10 @@
|
||||
"font": "style:NormalTextFont" },
|
||||
{ "group": "ГруппаОформление", "backColor": "web:Honeydew", "children": [
|
||||
{ "input": "Цена2", "path": "Объект.Цена", "textColor": "web:DimGray" }
|
||||
]}
|
||||
]},
|
||||
{ "picture": "Логотип", "src": "StdPicture.Print",
|
||||
"textColor": "web:FireBrick", "font": "style:NormalTextFont",
|
||||
"border": { "width": 1, "style": "Single" } }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -68,9 +68,22 @@
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<PictureDecoration name="Логотип" id="17">
|
||||
<Picture>
|
||||
<xr:Ref>StdPicture.Print</xr:Ref>
|
||||
<xr:LoadTransparent>false</xr:LoadTransparent>
|
||||
</Picture>
|
||||
<TextColor>web:FireBrick</TextColor>
|
||||
<Font ref="style:NormalTextFont" kind="StyleItem"/>
|
||||
<Border width="1">
|
||||
<v8ui:style xsi:type="v8ui:ControlBorderType">Single</v8ui:style>
|
||||
</Border>
|
||||
<ContextMenu name="ЛоготипКонтекстноеМеню" id="18"/>
|
||||
<ExtendedTooltip name="ЛоготипРасширеннаяПодсказка" id="19"/>
|
||||
</PictureDecoration>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="17">
|
||||
<Attribute name="Объект" id="20">
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogObject.Товары</v8:Type>
|
||||
</Type>
|
||||
|
||||
Reference in New Issue
Block a user