mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 15:03:20 +03:00
docs(mxl): актуализировать ограничения, убрать протёкшую реализацию
Раздел ограничений врал в обе стороны. Он обещал потерю областей Columns и Rectangle — они поддержаны предыдущим коммитом; и молчал про то, что теряется на самом деле. Проверено по коду обоих навыков, доли — по корпусу ERP 8.3.24: ячейки-поля ввода (53% макетов), несколько наборов колонок (63%), объединения вне ячеек (16%), рисунки (2%), цвета, скрытые строки, отступ, посторонние стили линий, группировки, колонтитулы и параметры печати. Отдельно записано, что многоязычные надписи не поддерживаются: при разборе берётся первый вариант текста, при генерации язык всегда ru — для двуязычных макетов остальные языки теряются. Заодно убрано то, что описывает реализацию, а не использование: - таблицы с точными текстами сообщений об ошибках и кодом возврата. Модель, вызвавшая навык, видит и текст, и код прямо в выводе; документировать их незачем, а протухают они молча — ровно как протух раздел ограничений. Правила, из-за которых ошибка возникает, остались; сами строки зафиксированы в кейсах через expectError, где расхождение ловится механически. В остальных пяти спеках таких таблиц и не было — там принята одна фраза «ненулевой код выхода и сообщение в stderr»; - фраза про порядок эмиссии именованных элементов: автор DSL на него не влияет. Сам факт (платформа хранит их отсортированными по имени) перенесён в docs/1c-spreadsheet-spec.md, где описывается XML-уровень, вместе с оговоркой, что случай с «ё» не проверен. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f13fe140f0
commit
e268fbd71f
+23
-25
@@ -138,18 +138,7 @@
|
||||
]
|
||||
```
|
||||
|
||||
Диапазон — та же грамматика, что у `columnWidths`, но **только** число или `"N-M"`: список через запятую запрещён, область непрерывна.
|
||||
|
||||
Ошибки (stderr, код возврата 1):
|
||||
|
||||
| Условие | Сообщение |
|
||||
|---------|-----------|
|
||||
| нет `name` | `namedAreas: 'name' is required: …` |
|
||||
| не задана ни одна ось | `namedAreas: at least one of 'rows'/'cols' is required: …` |
|
||||
| список через запятую | `namedAreas: 'cols' must be a single number or range, got list "…": …` |
|
||||
| диапазон задом наперёд | `namedAreas: 'rows' range is reversed "…": …` |
|
||||
|
||||
Порядок именованных элементов в выходном XML — по имени: так их хранит платформа, компилятор сортирует сам.
|
||||
Диапазон — та же грамматика, что у `columnWidths`, но **только** число или `"N-M"`: список через запятую запрещён, область непрерывна. Имя обязательно, и хотя бы одна ось должна быть задана; нарушение любого из этих правил → ненулевой код выхода и сообщение в stderr.
|
||||
|
||||
## Строки (`rows[]`)
|
||||
|
||||
@@ -189,14 +178,7 @@
|
||||
- не выразить текст, совпадающий с `">"`, `"|"` или с шаблоном `"{...}"`;
|
||||
- `"|"` продолжает ячейку из предыдущей строки, только если её позиция известна явно (`col` задан или строка записана массивом).
|
||||
|
||||
Ошибки короткой формы (stderr, код возврата 1):
|
||||
|
||||
| Условие | Сообщение |
|
||||
|---------|-----------|
|
||||
| `">"` без ячейки слева | `Row shorthand: '>' has no cell to the left: area "…", row N, cell M` |
|
||||
| `"|"` без ячейки сверху | `Row shorthand: '|' has no cell above: area "…", row N, cell M` |
|
||||
| объектный элемент с `col` | `Row shorthand: cell object must not carry 'col': area "…", row N, cell M` |
|
||||
| элементов больше `columns` | `Row exceeds 'columns' (K): area "…", row N` |
|
||||
`">"` без ячейки слева, `"|"` без ячейки сверху, объектный элемент с `col`, элементов больше `columns` → ненулевой код выхода и сообщение в stderr.
|
||||
|
||||
## Ячейки (`cells[]`)
|
||||
|
||||
@@ -227,8 +209,24 @@
|
||||
|
||||
## Ограничения
|
||||
|
||||
Текущая версия не поддерживает:
|
||||
- Множественные наборы колонок (`columnsID`)
|
||||
- Области типа Columns / Rectangle
|
||||
- Рисунки (штрихкоды, картинки)
|
||||
- Фон ячеек
|
||||
DSL описывает не все конструкции табличного документа. Перечисленное ниже **теряется при
|
||||
round-trip** (`/mxl-decompile` → `/mxl-compile`): в JSON оно не попадает, в сгенерированный
|
||||
XML не возвращается. Доля — по корпусу типовой ERP 8.3.24 (10 924 макета), где измерялась.
|
||||
|
||||
| Конструкция | Доля макетов |
|
||||
|-------------|--------------|
|
||||
| Ячейки-поля ввода (`containsValue` / `valueType` / `controlType`) | 53% |
|
||||
| Несколько наборов колонок (`columnsID`) — свои ширины у группы строк | 63% |
|
||||
| Объединения, не привязанные к ячейке (по всей высоте или ширине) | 16% |
|
||||
| Рисунки и картинки (в т.ч. штрихкоды) | 2% |
|
||||
| Цвет текста, цвет фона ячейки, скрытые строки/колонки, отступ | — |
|
||||
| Рамка с разным стилем у разных сторон; стили линий кроме сплошной | — |
|
||||
| Группировки строк и колонок | — |
|
||||
| Колонтитулы, параметры печати, область печати | — |
|
||||
|
||||
**Многоязычные надписи не поддерживаются:** при разборе берётся первый вариант текста,
|
||||
при генерации язык всегда `ru`. Для двуязычных макетов (в ERP это почти весь корпус)
|
||||
надписи на остальных языках теряются.
|
||||
|
||||
Отдельно: пересборка макета из DSL — это полная перегенерация, а не точечная правка XML,
|
||||
поэтому diff после round-trip обычно шире фактической доработки.
|
||||
|
||||
Reference in New Issue
Block a user