revert(skd-decompile): вернуть @normal shorthand-флаг

Раньше при наличии явного <viewMode>Normal</viewMode> decompile
переводил filter item в полноценный object form. Это раздувало JSON
без причины — @normal в shorthand функционально эквивалентен
"viewMode": "Normal" в object form, и compile уже его парсит.

Теперь: object form триггерится только реальными причинами
(userSettingPresentation, value-массив, dcscor:Field валуетайп);
явный Normal сохраняется как @normal в shorthand. Object form
по-прежнему может содержать "viewMode": "Normal" — это равнозначно.

Compile-side изменений не требуется. Spec обновлён.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-22 18:41:57 +03:00
co-authored by Claude Opus 4.7
parent e843cd8997
commit 6e3632e5ff
2 changed files with 9 additions and 7 deletions
+3 -3
View File
@@ -553,14 +553,14 @@ XML-маппинг — по `<group>` на каждый элемент:
]
```
Формат: `"<Поле> <оператор> [<значение>] [@off] [@user] [@quickAccess] [@inaccessible]"`.
Формат: `"<Поле> <оператор> [<значение>] [@off] [@user] [@quickAccess] [@normal] [@inaccessible]"`.
- Значение `_` — пустое (placeholder, не выводится в XML)
- `@off``use=false`
- `@user``userSettingID=auto` (генерировать GUID)
- `@quickAccess``viewMode=QuickAccess`
- `@normal``viewMode=Normal` (явный — для bit-perfect, см. [viewMode](#viewmode-режим-доступности))
- `@inaccessible``viewMode=Inaccessible`
- `Normal` (default) — отдельным флагом не задаётся. Если в исходном XML был явный `<viewMode>Normal</viewMode>`, decompile переводит item в object form с `"viewMode": "Normal"`.
- Типы значений автоопределяются: `true`/`false` → boolean, `2024-01-01T00:00:00` → dateTime, числа → decimal, `Перечисление.*`/`Справочник.*`/`ПланСчетов.*`/`Документ.*` → DesignTimeValue, прочее → string
- OrGroup: `{"group": "Or", "items": ["условие1", "условие2"]}` — объединяет условия через ИЛИ
@@ -719,7 +719,7 @@ XML-маппинг — по `<group>` на каждый элемент:
]
```
Формат: `"<Имя> [= <значение>] [@off] [@user] [@quickAccess] [@inaccessible]"`.
Формат: `"<Имя> [= <значение>] [@off] [@user] [@quickAccess] [@normal] [@inaccessible]"`.
- Значения-варианты периодов (`LastMonth`, `ThisYear` и др.) автоматически оборачиваются в `v8:StandardPeriod`
- `@off``use=false`, `@user``userSettingID=auto`