diff --git a/.claude/skills/skd-compile/SKILL.md b/.claude/skills/skd-compile/SKILL.md index 0e358a23..25c950a5 100644 --- a/.claude/skills/skd-compile/SKILL.md +++ b/.claude/skills/skd-compile/SKILL.md @@ -96,6 +96,15 @@ powershell.exe -NoProfile -File .claude/skills/skd-compile/scripts/skd-compile.p В объектной форме: `"useRestriction": { "field": true, "condition": true, "group": true, "order": true }` или `"restrict": ["noField", "noFilter"]`. +Дополнительные ключи объектной формы: +- `"presentationExpression": "<выражение>"` — что показывать вместо значения поля. Исходное значение остаётся «под капотом» для перехода/расшифровки. +- `"appearance": { "<параметр>": "<значение>" }` — оформление колонки по умолчанию (применяется во всех вариантах настроек). Ключи — параметры платформы (`ГоризонтальноеПоложение`, `МинимальнаяШирина`, `Формат`, `Текст` и т.п.). + +```json +{ "field": "Сумма", "title": "Сумма продажи", "type": "decimal(15,2)", + "appearance": { "ГоризонтальноеПоложение": "Right", "МинимальнаяШирина": "80" } } +``` + ### Вычисляемые поля (calculatedFields) Shorthand: `"Имя [Заголовок]: тип = Выражение #noField #noFilter #noGroup #noOrder"` — все части кроме имени опциональны. diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index ef2b9c29..4c77170b 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.ps1 +++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1 @@ -1,4 +1,4 @@ -# skd-compile v1.18 — Compile 1C DCS from JSON +# skd-compile v1.19 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -259,7 +259,7 @@ function Parse-FieldShorthand { $result = @{ dataPath = ""; field = ""; title = ""; type = "" - roles = @(); restrict = @(); appearance = @{} + roles = @(); restrict = @(); appearance = [ordered]@{} } # Extract @roles @@ -600,7 +600,7 @@ function Emit-Field { type = if ($fieldDef.type) { Resolve-TypeStr "$($fieldDef.type)" } else { "" } roles = @() restrict = @() - appearance = @{} + appearance = [ordered]@{} } # Parse role if ($fieldDef.role) { diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index 0352bfe7..55798a20 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.py +++ b/.claude/skills/skd-compile/scripts/skd-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# skd-compile v1.18 — Compile 1C DCS from JSON +# skd-compile v1.19 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json diff --git a/tests/skills/cases/skd-compile/field-appearance-and-presentation.json b/tests/skills/cases/skd-compile/field-appearance-and-presentation.json new file mode 100644 index 00000000..399308ac --- /dev/null +++ b/tests/skills/cases/skd-compile/field-appearance-and-presentation.json @@ -0,0 +1,34 @@ +{ + "name": "appearance и presentationExpression на поле DataSet", + "params": { "outputPath": "Template.xml" }, + "input": { + "dataSets": [{ + "name": "ЖурналОшибок", + "objectName": "ЖурналОшибок", + "fields": [ + { + "field": "ТекстСообщения", + "title": "Текст сообщения", + "type": "string(150)", + "appearance": { + "МинимальнаяШирина": "100", + "РастягиватьПоГоризонтали": "true" + } + }, + { + "field": "Расшифровка", + "title": "Описание", + "type": "CatalogRef.Организации", + "presentationExpression": "ТекстСообщения", + "appearance": { + "ГоризонтальноеПоложение": "Right" + } + } + ] + }] + }, + "validatePath": "Template.xml", + "expect": { + "files": ["Template.xml"] + } +} diff --git a/tests/skills/cases/skd-compile/snapshots/field-appearance-and-presentation/Template.xml b/tests/skills/cases/skd-compile/snapshots/field-appearance-and-presentation/Template.xml new file mode 100644 index 00000000..935cc8ca --- /dev/null +++ b/tests/skills/cases/skd-compile/snapshots/field-appearance-and-presentation/Template.xml @@ -0,0 +1,87 @@ + + + + ИсточникДанных1 + Local + + + ЖурналОшибок + + ТекстСообщения + ТекстСообщения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Текст сообщения</v8:content> + </v8:item> + + + xs:string + + 150 + Variable + + + + + МинимальнаяШирина + 100 + + + РастягиватьПоГоризонтали + true + + + + + Расшифровка + Расшифровка + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Описание</v8:content> + </v8:item> + + + d5p1:CatalogRef.Организации + + + + ГоризонтальноеПоложение + Right + + + ТекстСообщения + + ИсточникДанных1 + ЖурналОшибок + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + +