mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-16 10:43:18 +03:00
3119700c71
Категория C — закрыта для однородных шаблонов с custom appearance. Refactor fingerprint → preset shape (11 полей: font/fontSize/bold/italic/ hAlign/vAlign/wrap/bgColor/textColor/borderColor/borders). vAlign теперь учитывается в matching (раньше игнорировался). Алгоритм: 1. При -OutputPath загружается existing skd-styles.json рядом (если есть); user presets накладываются на built-in по той же логике что и compile. 2. Каждая ячейка → Extract-CellPreset → Match-PresetByShape против effectivePresets (built-in + user). 3. Если не match — Allocate-CustomStyle: новый customN, регистрируется в effectivePresets и accumulator. 4. По окончании Save-UserStyles пишет skd-styles.json рядом с outputPath (preserved existing + новые customN). 5. Compile подхватит файл по своим search-путям (cwd/dirname/scan-up). В SKILL.md не добавляем (custom стили — для round-trip, не для написания модель с нуля; built-in `data/header/subheader/total/none` остаются основным интерфейсом для модели). - runner.mjs: новый preRun step `writeFile` для подготовки fixture-файлов в workDir (нужен для теста с предзаписанным skd-styles.json). - Новый тест template-custom-style: preRun пишет myHeader preset, скомпилирует темплейт, decompile reverse'ит → переиспользует имя myHeader (не создаёт customN). - v0.14 → v0.15. Метрики: - ERP-сэмпл 30: 24 → 0 sentinel'ов, clean 26 → 30/30 - Целевой корпус 40 отчётов: 39 → 25 sentinel'ов (часть закрыта), clean 19 → 20/40. Остаточные — шаблоны с разными стилями в разных ячейках одного шаблона (нужно per-cell style override — отдельная задача).
43 lines
1.2 KiB
JSON
43 lines
1.2 KiB
JSON
{
|
||
"name": "Шаблон с custom стилем (Calibri 11) — переиспользование user preset из skd-styles.json",
|
||
"preRun": [
|
||
{
|
||
"writeFile": {
|
||
"path": "skd-styles.json",
|
||
"content": {
|
||
"myHeader": {
|
||
"font": "Calibri",
|
||
"fontSize": 11,
|
||
"bold": false,
|
||
"italic": false,
|
||
"hAlign": "Center",
|
||
"vAlign": "Center",
|
||
"wrap": false,
|
||
"bgColor": "style:ReportHeaderBackColor",
|
||
"textColor": null,
|
||
"borderColor": "style:ReportLineColor",
|
||
"borders": true
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"script": "skd-compile/scripts/skd-compile",
|
||
"input": {
|
||
"dataSets": [{
|
||
"name": "Тест",
|
||
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
|
||
"fields": ["Поле: string"]
|
||
}],
|
||
"templates": [
|
||
{ "name": "Заголовок", "style": "myHeader", "rows": [["A"]] }
|
||
]
|
||
},
|
||
"args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" },
|
||
"cwd": "{workDir}"
|
||
}
|
||
],
|
||
"params": { "templatePath": "Template.xml" },
|
||
"outputPath": "decompiled.json"
|
||
}
|