mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 23:13:22 +03:00
feat(mxl-compile,mxl-decompile): textLanguages — текст строкой на всех языках макета
Строка в text/template разворачивается по одному элементу на каждый язык из документного ключа textLanguages (по умолчанию только ru). Декомпилятор собирает набор языков по всем текстам макета и пишет строкой текст, одинаковый на всём наборе; различающийся остаётся объектом. Языки текстов и языки, объявленные в конфигурации, — разные вещи: типовые ERP объявляют один ru, а тексты хранят под ru и en. Набор постоянен внутри конфигурации, поэтому он документный, а не вычисляемый: к моменту компиляции тексты уже свёрнуты в строки. Заодно: эмиссия tl проверяет НАЛИЧИЕ ключа text/template, а не истинность — пустая строка это текст, платформа такие ячейки пишет с пустым tl, а по истинности он терялся. Проверено на пилоте (40 макетов ERP): скомпилированный XML совпадает с прошлым прогоном байт в байт обоими рантаймами, объём JSON −47%. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4cceb03269
commit
683ed8e08d
+15
-2
@@ -77,6 +77,7 @@
|
||||
| `page` | нет | — | Формат страницы: `"A4-landscape"` (780), `"A4-portrait"` (540) или число. Автоматически вычисляет `defaultWidth` из суммы пропорций `"Nx"` |
|
||||
| `defaultWidth` | нет | 10 | Ширина колонок по умолчанию. Игнорируется если задан `page` и все колонки используют `"Nx"` |
|
||||
| `columnWidths` | нет | `{}` | Ширины колонок. Ключи 1-based: `"1"`, `"3-14"`, `"5,7,9"`. Значения: число (абсолют) или `"Nx"` (множитель от defaultWidth, напр. `"2x"`, `"0.5x"`) |
|
||||
| `textLanguages` | нет | `["ru"]` | Языки, на которых пишется текст, заданный строкой (см. ниже) |
|
||||
| `fonts` | нет | — | Именованные шрифты (если не задано, создаётся Arial 10) |
|
||||
| `styles` | нет | `{}` | Именованные стили |
|
||||
| `areas` | да | — | Массив областей — диапазонов подряд идущих строк (порядок = порядок в документе); имя необязательно |
|
||||
@@ -227,14 +228,26 @@
|
||||
|
||||
### Текст на нескольких языках
|
||||
|
||||
`text` и `template` принимают строку или объект «язык → текст». Строка означает русский; объект даёт по надписи на каждый язык, в порядке ключей.
|
||||
`text` и `template` принимают строку или объект «язык → текст». Объект даёт по надписи на каждый язык, в порядке ключей. Строка означает один и тот же текст на всех языках макета — по умолчанию только русский.
|
||||
|
||||
```json
|
||||
{ "col": 1, "text": "Наименование" }
|
||||
{ "col": 2, "text": { "ru": "Поставщик", "en": "Supplier" } }
|
||||
```
|
||||
|
||||
Языки макета объявляются отдельно (`languageSettings` в XML) и по умолчанию ограничены русским; писать текст на языке, которого нет в объявленных, допустимо — так устроено большинство типовых макетов.
|
||||
Набор языков задаётся документным ключом `textLanguages`:
|
||||
|
||||
```json
|
||||
{ "columns": 3, "textLanguages": ["ru", "en"], "areas": [] }
|
||||
```
|
||||
|
||||
С таким объявлением `"Наименование"` из примера выше даст надпись и под `ru`, и под `en`.
|
||||
|
||||
**Языки текстов и языки, объявленные в конфигурации, — разные вещи**, и у типовых они не совпадают: почти все макеты ERP объявляют один русский, а тексты хранят под `ru` и `en`. Писать текст на языке, которого нет среди объявленных в конфигурации, платформа позволяет.
|
||||
|
||||
Набор постоянен внутри конфигурации, а не подбирается под макет: в ERP это `ru` и `en` у всех макетов с текстом, в БП, УТ и УНФ — только `ru`. Поэтому `textLanguages` объявляется один раз на макет и обычно повторяет соседние. Вывести его из самих текстов компилятор не может: к моменту компиляции они уже свёрнуты в строки.
|
||||
|
||||
Пустая строка — это текст: ячейка с `"text": ""` даёт пустую надпись, а не ячейку без текста.
|
||||
|
||||
## `rowStyle` — автозаполнение
|
||||
|
||||
|
||||
Reference in New Issue
Block a user