Files
cc-1c-skills/tests/skills/cases/mxl-compile/row-own-format.json
T
Nick ShirokovandClaude Opus 5 ba25aa4a00 feat(mxl-compile,mxl-decompile): формат самой строки
У строки есть собственный формат: платформа хранит в нём скрытие (17 423 вхождения
в корпусе), шрифт (9 216), фон, выравнивания, защиту. Мы писали туда только высоту,
всё остальное теряли.

Разбор на контролируемом стенде показал, что это два разных случая, а не один.
Оформление, применённое к строке целиком, платформа пишет И строке, И каждой
ячейке (backColor: 13 899 ячеек повторяют против 96). Скрытие — только строке
(24 026 против 62 856). Поэтому одного правила «rowStyle красит ячейки» мало.

Теперь rowStyle — стиль строки: по умолчанию ложится и на строку, и на ячейки,
как это делает платформа. Объектная форма { style, apply } задаёт исключения:
"row" — только строке, "cells" — только ячейкам. Модификатор нужен раундтрипу,
в описании DSL его нет.

Скрытие и высота — собственные свойства строки, ключами рядом: у ячейки таких
свойств не бывает, и в её оформление они не попадают.

На пилоте категория row[].formatIndex упала с 1964 до 201 потерянного факта.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 18:36:41 +03:00

39 lines
1.2 KiB
JSON

{
"name": "Формат строки: скрытие, высота и режимы применения стиля",
"input": {
"columns": 3,
"defaultWidth": 20,
"fonts": {
"default": { "face": "Arial", "size": 10 },
"bold": { "face": "Arial", "size": 10, "bold": true }
},
"styles": {
"фон": { "backColor": "#EBEBEB" },
"рамка": { "border": "Solid" },
"жирный": { "font": "bold" }
},
"areas": [
{
"name": "Тело",
"rows": [
{ "height": 20, "hidden": true, "cells": [
{ "col": 1, "text": "скрытая строка" }
]},
{ "rowStyle": "фон", "cells": [
{ "col": 1, "text": "и строке, и ячейкам" }
]},
{ "rowStyle": { "style": "жирный", "apply": "row" }, "cells": [
{ "col": 1, "text": "только строке" }
]},
{ "rowStyle": { "style": "рамка", "apply": "cells" }, "cells": [
{ "col": 1, "text": "только ячейкам" }
]}
]
}
]
},
"params": { "outputPath": "Template.xml" },
"validatePath": "Template.xml",
"expect": { "files": ["Template.xml"] }
}