mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-03 16:50:52 +03:00
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:
co-authored by
Claude Opus 4.7
parent
e843cd8997
commit
6e3632e5ff
@@ -1,4 +1,4 @@
|
||||
# skd-decompile v0.33 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
||||
# skd-decompile v0.34 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -1375,17 +1375,19 @@ function Build-FilterItem {
|
||||
if ($userId) { $flags += '@user' }
|
||||
if ($viewMode -eq 'QuickAccess') { $flags += '@quickAccess' }
|
||||
elseif ($viewMode -eq 'Inaccessible') { $flags += '@inaccessible' }
|
||||
# Normal сохраняется только если node присутствовал — переходит в object form
|
||||
# Normal: явное присутствие <viewMode>Normal</viewMode> в XML сохраняется
|
||||
# через shorthand-флаг @normal (отсутствие — без флага). Это эквивалентно
|
||||
# object form "viewMode": "Normal" но компактнее.
|
||||
elseif ($viewMode -eq 'Normal') { $flags += '@normal' }
|
||||
|
||||
# nullity ops have no value
|
||||
$noValueOps = @('filled','notFilled')
|
||||
|
||||
# Переход в object form:
|
||||
# - userSettingPresentation,
|
||||
# - явный viewMode=Normal (отсутствие тоже нужно сохранить),
|
||||
# - массивное value (multi-right или пустой ValueList),
|
||||
# - явный valueType (например, dcscor:Field — field-to-field comparison)
|
||||
if ($userPresNode -or $viewMode -eq 'Normal' -or $valueIsArrayFlag -or $valueTypeAttr) {
|
||||
if ($userPresNode -or $valueIsArrayFlag -or $valueTypeAttr) {
|
||||
$obj = [ordered]@{ field = $field; op = $op }
|
||||
if ($op -notin $noValueOps -and $null -ne $value) {
|
||||
if ($valueIsArrayFlag) {
|
||||
|
||||
Reference in New Issue
Block a user