diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1
index 79c51d10..2feb6f61 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.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 "$innertrue" }
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
diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py
index 3d7a6b3d..304948b6 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.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}true')
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'))
diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md
index d19a7f84..1cbf9abf 100644
--- a/docs/form-dsl-spec.md
+++ b/docs/form-dsl-spec.md
@@ -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 расщепляет оформление вокруг `
`.)
+Прямые свойства оформления элемента. Ключи — англ. camelCase 1:1 с тегами; **принимаются рус. синонимы** (forgiving). Применимо к полям (input/check/radio/labelField/picField/calendar), декорациям (label/picture), кнопкам (button), группам (group/columnGroup) и таблицам (table); порядок тегов в XML — по базовому типу (профиль), компилятор расставляет сам (1С толерантна к порядку оформления внутри элемента).
| Ключ | Тег | Рус. синоним |
|------|-----|--------------|
diff --git a/tests/skills/cases/form-compile/element-appearance.json b/tests/skills/cases/form-compile/element-appearance.json
index 5dcace61..3496bf7d 100644
--- a/tests/skills/cases/form-compile/element-appearance.json
+++ b/tests/skills/cases/form-compile/element-appearance.json
@@ -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" } }
]
}
}
diff --git a/tests/skills/cases/form-compile/snapshots/element-appearance/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/element-appearance/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml
index 6e7d0b98..3d72ed01 100644
--- a/tests/skills/cases/form-compile/snapshots/element-appearance/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml
+++ b/tests/skills/cases/form-compile/snapshots/element-appearance/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml
@@ -68,9 +68,22 @@
+
+
+ StdPicture.Print
+ false
+
+ web:FireBrick
+
+
+ Single
+
+
+
+
-
+
cfg:CatalogObject.Товары