mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-15 07:49:01 +03:00
docs(mxl): актуализировать спецификации после серии находок на стенде
Спецификация XML — дописано то, что вскрыли контролируемые макеты и замеры по корпусу: - шрифт-ссылка на СИСТЕМНЫЙ шрифт: префикс sys в корне не объявлен, поэтому объявление xmlns дописывается прямо на узел. Плюс правило вывода kind из префикса и то, что неиспользуемый шрифт в палитру не попадает; - новый раздел «Устройство палитр»: порядок документный и НЕ зависит от последовательности действий автора (проверено опытом с оформлением снизу вверх), формат по умолчанию последний, палитра дедуплицирована по содержимому; - у текста ячейки ТРИ состояния: тега нет, тег с элементами, пустой <tl/>. Третье — 57% макетов корпуса; - языковые настройки: набор языков не выводится из языков текста, description бывает самозакрывающимся, currentLanguage бывает отсутствующим и бывает указывающим на необъявленный язык. Спецификация DSL — из ограничений убрано объявление языков макета: оно больше не теряется. Добавлено пояснение, почему побайтовое совпадение достижимо не на любом макете: в долго правленных макетах остаются следы прежних состояний, которые из итогового документа не выводятся. В инструкции навыка отражена только форма шрифта-ссылки — остальное из этой серии либо уже там, либо для авторинга не нужно. Примеры из справочника скомпилированы и проверены валидатором. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
98bcf79b41
commit
241a56a29f
@@ -55,7 +55,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J
|
||||
|
||||
```
|
||||
{ columns, page, defaultWidth, columnWidths, columnStyles,
|
||||
fonts: { name: { face, size, bold, italic, underline, strikeout } },
|
||||
fonts: { name: { face, size, bold, italic, underline, strikeout } | { ref } },
|
||||
styles: { name: { font, horizontalAlignment, verticalAlignment, textPlacement,
|
||||
backColor, textColor, border, borderColor, format, hidden } },
|
||||
areas: [{ name, columnSet, rows: [{ height, hidden, rowStyle, cells: [
|
||||
|
||||
@@ -230,9 +230,12 @@ XML не возвращается.
|
||||
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
|
||||
- рисунки и картинки, в том числе штрихкоды, и примечания к ячейкам;
|
||||
- группировки строк и колонок;
|
||||
- колонтитулы, параметры печати, область печати;
|
||||
- объявление языков макета: список языков и текущий язык всегда описываются как русский —
|
||||
сами надписи при этом сохраняются на всех языках.
|
||||
- колонтитулы, параметры печати, область печати.
|
||||
|
||||
Пересборка макета из DSL — это полная перегенерация, а не точечная правка XML, поэтому
|
||||
diff после round-trip обычно шире фактической доработки.
|
||||
|
||||
Отдельно про побайтовое совпадение. В макетах, которые долго правили в Конфигураторе,
|
||||
встречаются следы прежних состояний: формат ячейки может нести ширину колонки, которая с тех
|
||||
пор изменилась. Такие значения не описывают итоговый документ и из него не выводятся, поэтому
|
||||
собранный XML совпадёт с исходным не всегда — при полностью сохранённом содержании.
|
||||
|
||||
@@ -63,6 +63,18 @@
|
||||
</languageSettings>
|
||||
```
|
||||
|
||||
Языков бывает несколько, и объявленный набор НЕ выводится из того, на каких языках лежит
|
||||
текст ячеек: на корпусе ERP объявлен один `ru` у 10 753 макетов, при том что текст в них
|
||||
лежит и под `ru`, и под `en`. Наборы: `[ru]` — 10 753, `[ru,en]` — 148, `[en,ru]` — 20.
|
||||
|
||||
`id` и `code` всегда со значением; `description` бывает пустым и тогда пишется
|
||||
самозакрывающимся тегом `<description/>` (77 записей из 11 094). Из `id` эти поля не
|
||||
выводятся: у `en` описание бывает «Английский», пустым и «English».
|
||||
|
||||
`currentLanguage` иногда отсутствует вовсе (3 макета), иногда указывает на необъявленный
|
||||
язык (8 макетов с `en` при объявленном одном `ru`). `defaultLanguage` во всех четырёх
|
||||
русских типовых равен `ru`, но это свойство конфигурации, а не формата.
|
||||
|
||||
## Колонки
|
||||
|
||||
### Основной набор
|
||||
@@ -169,6 +181,16 @@
|
||||
На корпусе ERP из 1 212 023 записанных номеров ни один не избыточен (счётчик начинается с −1,
|
||||
поэтому у ячейки в колонке 0 номера тоже нет).
|
||||
|
||||
У текста ячейки ТРИ состояния, а не два:
|
||||
|
||||
| запись | смысл |
|
||||
|---|---|
|
||||
| `<tl>` отсутствует | текста нет |
|
||||
| `<tl>` с элементами | текст по элементу на язык (содержимое бывает пустым) |
|
||||
| `<tl/>` | тег есть, языков в нём нет |
|
||||
|
||||
Третье — не редкость: 38 075 ячеек на 1200 макетов, встречается в 57% макетов корпуса.
|
||||
|
||||
`<f>0</f>` означает, что формата у ячейки **нет вовсе** — это не индекс записи. Так записана
|
||||
ячейка без собственного оформления: 170 710 таких ячеек против 50 635, ссылающихся на формат
|
||||
по умолчанию; `<f>0</f>` встречается в 71% макетов.
|
||||
@@ -365,10 +387,38 @@
|
||||
<font faceName="Arial" height="14" bold="true" italic="false"
|
||||
underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||||
|
||||
<!-- Ссылка на стиль -->
|
||||
<!-- Ссылка на элемент стиля конфигурации -->
|
||||
<font ref="style:TextFont" kind="StyleItem"/>
|
||||
|
||||
<!-- Ссылка на системный шрифт: префикс sys в корне НЕ объявлен, поэтому объявление
|
||||
дописывается прямо на узел — тот же приём, что у цветов из web-палитры -->
|
||||
<font xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system"
|
||||
ref="sys:ANSIVariableFont" kind="WindowsFont"/>
|
||||
```
|
||||
|
||||
`kind` выводится из префикса ссылки: `style:` → `StyleItem`, `sys:` → `WindowsFont`.
|
||||
На корпусе ERP таких шрифтов 272 в 213 макетах из 10 924 (StyleItem 209, WindowsFont 63).
|
||||
|
||||
Шрифт, на который не ссылается ни один формат, в палитру не попадает: у макета без
|
||||
оформления элемента `<font>` нет вовсе.
|
||||
|
||||
## Устройство палитр
|
||||
|
||||
Три правила, общие для всех палитр. Все проверены на корпусе ERP (10 924 макета) и на
|
||||
макетах, собранных вручную в Конфигураторе.
|
||||
|
||||
**Порядок — документный.** Записи идут в том порядке, в каком встречаются при обходе
|
||||
документа сверху вниз: сначала форматы колонок (в порядке колонок), затем форматы строк и
|
||||
ячеек. Порядок НЕ зависит от того, в какой последовательности автор оформлял макет:
|
||||
контрольный опыт с оформлением снизу вверх дал палитру в порядке строк.
|
||||
|
||||
**Формат по умолчанию — последняя запись.** На корпусе он последний в 8285 макетах из 10 863,
|
||||
первым — в 25.
|
||||
|
||||
**Палитра форматов дедуплицирована по содержимому:** двух одинаковых записей в ней нет
|
||||
(10 804 макета из 10 924). Остальные 120 — накопленный мусор редактирования, там доходит до
|
||||
583 записей при 130 уникальных.
|
||||
|
||||
## Форматы
|
||||
|
||||
Палитра форматов — центральный элемент. **Индексация 1-based** (индекс 0 = формат не задан).
|
||||
|
||||
@@ -230,9 +230,12 @@ XML не возвращается.
|
||||
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
|
||||
- рисунки и картинки, в том числе штрихкоды, и примечания к ячейкам;
|
||||
- группировки строк и колонок;
|
||||
- колонтитулы, параметры печати, область печати;
|
||||
- объявление языков макета: список языков и текущий язык всегда описываются как русский —
|
||||
сами надписи при этом сохраняются на всех языках.
|
||||
- колонтитулы, параметры печати, область печати.
|
||||
|
||||
Пересборка макета из DSL — это полная перегенерация, а не точечная правка XML, поэтому
|
||||
diff после round-trip обычно шире фактической доработки.
|
||||
|
||||
Отдельно про побайтовое совпадение. В макетах, которые долго правили в Конфигураторе,
|
||||
встречаются следы прежних состояний: формат ячейки может нести ширину колонки, которая с тех
|
||||
пор изменилась. Такие значения не описывают итоговый документ и из него не выводятся, поэтому
|
||||
собранный XML совпадёт с исходным не всегда — при полностью сохранённом содержании.
|
||||
|
||||
Reference in New Issue
Block a user