mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-14 06:45:17 +03:00
feat(meta-compile,meta-decompile): мультиязычный ML для синонима и подсказки реквизита (v1.18/v0.4)
Раундтрип-находка (класс-1 синоним + класс-3 подсказка). Корпус: у реквизитов 21677 мультиязычных
синонимов (ru+en) и 16063 непустых подсказки (10689 мультиязычных). meta-compile писал ВСЁ ML только ru
(Emit-MLText брал строку) и хардкодил <ToolTip/> пустым → массовая потеря en + подсказок.
- meta-compile (дуал-порт): Emit-MLText/emit_mltext принимают строку (→ru) ИЛИ объект {lang:content}
(→<v8:item> на язык, в порядке ключей) через новый Emit-MLItems/emit_ml_items. Parse object-форма
реквизита пробрасывает synonym/tooltip без стрингификации; Emit-Attribute эмитит <ToolTip> из tooltip.
- meta-decompile: Get-MLValue → строка (ru-only) | {ru,en} (мультиязычно, порядок из XML); object-форма
реквизита при кастомном синониме ИЛИ наличии подсказки.
- spec meta-dsl-spec.md v2.3: §4.2 (tooltip) + §4.4 ML-значения (строка/{ru,en}), консистентно с form-compile.
- тест-кейс catalog-attr-ml (мультиязычный синоним + подсказка, обе формы).
Валидация: PS==PY паритет; полный прогон −228748 строк (447285→218537, >половины); регресс 35/35 (ps+py);
1С-cert зелёный.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+13
-1
@@ -1,6 +1,6 @@
|
||||
# Meta DSL — спецификация JSON-формата для объектов метаданных 1С
|
||||
|
||||
Версия: 2.2
|
||||
Версия: 2.3
|
||||
|
||||
## Обзор
|
||||
|
||||
@@ -124,12 +124,15 @@ JSON DSL для описания объектов метаданных конф
|
||||
"name": "Имя",
|
||||
"type": "String(100)",
|
||||
"synonym": "Мой синоним",
|
||||
"tooltip": "Всплывающая подсказка",
|
||||
"comment": "Комментарий",
|
||||
"fillChecking": "ShowError",
|
||||
"indexing": "Index"
|
||||
}
|
||||
```
|
||||
|
||||
**`synonym` и `tooltip` — ML-значения** (см. §4.4): строка → русский текст; объект `{ "ru": "…", "en": "…" }` → мультиязычный (`<v8:item>` на язык, в порядке ключей). `tooltip` → `<ToolTip>` реквизита; нет ключа → `<ToolTip/>` (пусто). `synonym` не задан → авто из имени (§2).
|
||||
|
||||
Тип можно задать единой строкой (`"type": "String(100)"`) или раздельными полями:
|
||||
|
||||
```json
|
||||
@@ -157,6 +160,15 @@ JSON DSL для описания объектов метаданных конф
|
||||
|
||||
Флаги разделяются запятой после `|`.
|
||||
|
||||
### 4.4 ML-значения (многоязычный текст)
|
||||
|
||||
Текстовые поля, попадающие в `<v8:item>`-структуру 1С (`synonym`, `tooltip`), принимают две формы:
|
||||
|
||||
- **строка** → один язык `ru`: `"synonym": "Наименование"`;
|
||||
- **объект `{ lang: content }`** → по `<v8:item>` на язык, **в порядке ключей**: `"tooltip": { "ru": "Подсказка", "en": "Hint" }`.
|
||||
|
||||
Пустая строка `""` / отсутствие ключа → самозакрывающийся тег (`<ToolTip/>`). Консистентно с формой `title`/`tooltip` в form-compile.
|
||||
|
||||
---
|
||||
|
||||
## 5. Табличные части
|
||||
|
||||
Reference in New Issue
Block a user