mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-19 17:19:42 +03:00
1888952a41
Прямые свойства оформления элемента: <TextColor>/<BackColor>/<BorderColor> + header/footer
(<TitleTextColor>/<FooterBackColor>/…), <Font>, <Border>. Раньше терялись при декомпиляции и
не эмитились. Выборка 2.17: LabelDecoration>TextColor 49, InputField>Border/TextColor, Button*3,
LabelField header/footer (колонки).
DSL: ключи англ. camelCase 1:1 с тегами (textColor/backColor/borderColor/titleTextColor/…/
font/border) + приём рус. синонимов (ЦветТекста/ЦветФона/ЦветРамки/Шрифт/Рамка/…Заголовка/…Подвала).
- Цвет — verbatim-строка: style:/web:/win:/#RRGGBB (компилятор не валидирует; win: валиден —
win:MenuBar/ButtonText/…; sys: в выгрузках не встречается; несуществующее имя → ошибка загрузки).
- Шрифт — строка "style:X" → <Font ref kind=StyleItem/> (минимальная форма); объект → только
заданные атрибуты (ref/faceName/height/bold/italic/underline/strikeout/kind/scale), дефолты не
досочиняются. Декомпилятор: чистый style-ref → строка, иначе объект (точный набор атрибутов).
- Граница — строка/{ref} → <Border ref="style:X"/>; {width,style} → явная (ControlBorderType:
Single/Double/Underline/DoubleUnderline/Overline/Embossed/Indented/WithoutBorder).
Порядок тегов в XML — XSD-профиль по базовому типу (field/decoration/button), компилятор
расставляет сам; вставка перед компаньонами. Декомпилятор — захват в Add-CommonProps (все типы).
Компилятор разведён в 6 эмиттеров (input/check/radio/label/labelField/button) + зеркало Python.
Валидация: round-trip фикстура ПроверкаПользовательскихНастроек — 10/10 LabelField (стили рамки,
header/footer, Absolute/style шрифты) бит-в-бит. Сертификация загрузкой в 1С 8.3.24 (кейс
element-appearance: decoration/field/button, цвета hex/web/style, шрифты, границы) — чисто.
Регресс 36/36 ps+py. Harness sample-2.17 TOTAL 1326→1177 (−149), 0 ADDED-регрессий.
Версии: form-compile v1.65, form-decompile v0.47. Попутно: декод garbled \u-комментариев в .py.
Остаток (декомпилятор захватывает, компилятор пока не эмитит — не регресс): UsualGroup 9, Table 9,
PictureDecoration 2 — отдельным шагом.
40 lines
1.7 KiB
JSON
40 lines
1.7 KiB
JSON
{
|
|
"name": "Оформление элементов — цвета/шрифты/граница на decoration/input/button (профили порядка)",
|
|
"preRun": [
|
|
{
|
|
"script": "meta-compile/scripts/meta-compile",
|
|
"input": { "type": "Catalog", "name": "Товары", "attributes": [{ "name": "Цена", "type": "Number", "length": 10, "precision": 2 }] },
|
|
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
|
},
|
|
{
|
|
"script": "form-add/scripts/form-add",
|
|
"args": { "-ObjectPath": "{workDir}/Catalogs/Товары.xml", "-FormName": "ФормаЭлемента", "-Purpose": "Object" }
|
|
}
|
|
],
|
|
"params": { "outputPath": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml" },
|
|
"validatePath": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml",
|
|
"input": {
|
|
"title": "Товары",
|
|
"attributes": [
|
|
{ "name": "Объект", "type": "CatalogObject.Товары", "main": true }
|
|
],
|
|
"elements": [
|
|
{ "label": "Внимание!",
|
|
"textColor": "web:FireBrick",
|
|
"font": { "faceName": "Arial", "height": 12, "bold": true, "italic": false, "underline": false, "strikeout": false, "kind": "Absolute", "scale": 100 },
|
|
"border": { "width": 1, "style": "Single" } },
|
|
{ "input": "Цена", "path": "Объект.Цена",
|
|
"textColor": "#FF0000",
|
|
"borderColor": "style:BorderColor" },
|
|
{ "label": "Из стиля",
|
|
"textColor": "web:DimGray",
|
|
"font": "style:NormalTextFont",
|
|
"border": "style:ControlBorder" },
|
|
{ "button": "ОК", "title": "ОК",
|
|
"backColor": "web:Honeydew",
|
|
"borderColor": "style:BorderColor",
|
|
"font": "style:NormalTextFont" }
|
|
]
|
|
}
|
|
}
|