mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-13 17:34:57 +03:00
7f3a8861ad
Cell в rows теперь может быть либо string ("text"/"{param}"/"|"/">"/null),
либо объектом {value, style: "presetName"}. Object form применяется когда
стиль ячейки отличается от template default.
compile (ps1+py): helpers _get_cell_value / _get_cell_style_or_default.
Emit-AreaTemplateDSL / _emit_area_template_dsl используют per-cell style
для appearance вместо единого template style.
decompile: refactor Build-Template. Первый pass — собрать style name per
cell в cellStyleMap. Второй pass — выбрать template default как most
frequent style. Третий pass — обернуть в {value, style} ячейки, чьи
стили отличаются от default. TemplateStyleMismatch sentinel удалён —
теперь все случаи покрываются через inline override.
Дедуп при обоих pass'ах (Match-PresetByShape) работает через
effectivePresets (built-in + user + ранее аллоцированные customN), так
что одинаковые shape'ы получают одно имя.
Новый тест template-inline-cell-style (round-trip bit-perfect).
Versions: compile v1.32→v1.33, decompile v0.15→v0.16.
Метрики на момент коммита:
- ERP-сэмпл 30: 30/30 clean, 0 sentinel'ов
- Корпус из 40 отчётов целевого класса: 40/40 clean, 0 sentinel'ов
Закрывает категории A, B, C полностью на обоих корпусах.
29 lines
804 B
JSON
29 lines
804 B
JSON
{
|
||
"name": "Шаблон с inline cell style (data + per-cell override)",
|
||
"preRun": [
|
||
{
|
||
"script": "skd-compile/scripts/skd-compile",
|
||
"input": {
|
||
"dataSets": [{
|
||
"name": "Тест",
|
||
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
|
||
"fields": ["Поле: string"]
|
||
}],
|
||
"templates": [
|
||
{
|
||
"name": "СмешанныйМакет",
|
||
"style": "data",
|
||
"rows": [
|
||
["A", { "value": "B", "style": "header" }, "C"]
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" },
|
||
"cwd": "{workDir}"
|
||
}
|
||
],
|
||
"params": { "templatePath": "Template.xml" },
|
||
"outputPath": "decompiled.json"
|
||
}
|