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): поддержка типа Enum (Перечисления) (v1.51/v0.42)
13-й тип. Рерайт Emit-EnumProperties на общие хелперы (был легаси-хардкод:
Comment/UseStandardCommands/ChoiceMode/формы/презентации/ChoiceHistoryOnInput).
Emit-EnumValue + comment; Parse-EnumValueShorthand больше не стрингифаит synonym
(строка|{ru,en}). Декомпилятор: снят гейт +Enum; захват EnumValue (values,
короткая строка|объект name/synonym/comment); StandardAttributes register-style
opt-out (блок Order/Ref present 85%, absent → standardAttributes:"").
Class-2 фиксы дефолтов (тип-зависимые, декомпилятор зеркалит компилятор):
- useStandardCommands: у Enum дефолт false (не true)
- quickChoice: у Enum дефолт true (не false)
- пустой <Synonym/> значения ≠ авто-синоним → synonym:"" (аналог object-level фикса)
ПОЛНЫЙ КОРПУС 2545 (acc+erp): match 2545/2545, TOTAL 0, 0 крашей — byte-exact,
order-preserved (сверено с реальными 1С-файлами modulo trailing newline+GUID).
Регресс 50/50 ps1+py, ps1==py identical. spec §7.3, кейс enum-full.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+26
-2
@@ -787,13 +787,37 @@ Split-CamelCase имени.
|
||||
]
|
||||
```
|
||||
|
||||
### 7.3 Enum
|
||||
### 7.3 Enum (Перечисление)
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `values` | `[]` | → EnumValue в ChildObjects |
|
||||
| `comment` | пусто | Comment |
|
||||
| `useStandardCommands` | `false` | UseStandardCommands (у Enum дефолт **false**, в отличие от прочих типов) |
|
||||
| `quickChoice` | `true` | QuickChoice (у Enum дефолт **true**) |
|
||||
| `choiceMode` | `BothWays` | ChoiceMode (BothWays/FromForm/QuickChoice) |
|
||||
| `choiceHistoryOnInput` | `Auto` | ChoiceHistoryOnInput |
|
||||
| `listPresentation` / `extendedListPresentation` / `explanation` | пусто | презентации (ML) |
|
||||
| `defaultListForm` / `defaultChoiceForm` / `auxiliaryListForm` / `auxiliaryChoiceForm` | пусто | *ListForm/*ChoiceForm (ссылка на форму) |
|
||||
| `standardAttributes` | (блок всегда) | `""` — opt-out: подавить all-default блок стандартных реквизитов (Order/Ref); ~14% перечислений его опускают, правило не выводимо |
|
||||
|
||||
Других настраиваемых свойств нет — все дефолтные.
|
||||
**Значения (`values`)** — массив, каждый элемент строка ЛИБО объект:
|
||||
- строка `"Имя"` → значение с авто-синонимом из имени (Split-CamelCase);
|
||||
- объект `{ "name": "Имя", "synonym"?, "comment"? }`, где `synonym` — строка ИЛИ `{ru, en}` (мультиязычный),
|
||||
либо `""` для явно пустого синонима (когда авто-синоним из имени неуместен).
|
||||
|
||||
Пример:
|
||||
```json
|
||||
{ "type": "Enum", "name": "СтатусыОбработки", "comment": "(Демо)",
|
||||
"useStandardCommands": true, "choiceMode": "QuickChoice",
|
||||
"listPresentation": { "ru": "Статусы обработки", "en": "Processing statuses" },
|
||||
"standardAttributes": "",
|
||||
"values": [
|
||||
{ "name": "Новый", "synonym": { "ru": "Новый", "en": "New" }, "comment": "начальный статус" },
|
||||
{ "name": "ВРаботе", "synonym": "" },
|
||||
"Завершен"
|
||||
] }
|
||||
```
|
||||
|
||||
### 7.4 Constant
|
||||
|
||||
|
||||
Reference in New Issue
Block a user