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 @@ </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>