From bbed308c85027121a20e80f0002e75ff7a70dc2f Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 24 May 2026 21:17:03 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-decompile):=20=D0=BD=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D1=8F=D1=82=D1=8C=20valueType=20?= =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20auto-detect=20compile=20=D0=B4=D0=B0?= =?UTF-8?q?=D1=81=D1=82=20=D1=82=D0=BE=D1=82=20=D0=B6=D0=B5=20=D1=82=D0=B8?= =?UTF-8?q?=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Для filter right values с типом dcscor:DesignTimeValue, чьё значение соответствует ref-pattern (Перечисление.X.Y / Справочник.X.Y / ПланСчетов.X.Y и др.), compile auto-detect-ит DesignTimeValue из значения. Раньше decompile всё равно сохранял valueType явно — лишний шум в DSL. Применено к single-right и multi-right. Эффект на diff нулевой (compile эмитит то же самое), но decompiled JSON становится компактнее и читабельнее. --- .../skd-decompile/scripts/skd-decompile.ps1 | 18 ++++++++++++++---- .../appearance-multilang-value/Template.xml | 9 +-------- .../snapshots/calc-total-params/Template.xml | 9 +-------- .../dataset-folder-and-auto-group/Template.xml | 9 +-------- .../dataset-query-multiline/Template.xml | 9 +-------- .../snapshots/dataset-types/Template.xml | 9 +-------- .../field-input-parameters/Template.xml | 9 +-------- .../field-order-expression/Template.xml | 9 +-------- .../snapshots/field-roles-rich/Template.xml | 9 +-------- .../fields-types-and-restrictions/Template.xml | 9 +-------- .../snapshots/minimal-query/Template.xml | 9 +-------- .../structure-nested-and-folder/Template.xml | 9 +-------- .../template-custom-style/Template.xml | 9 +-------- .../template-inline-cell-style/Template.xml | 9 +-------- .../snapshots/template-no-style/Template.xml | 9 +-------- .../Template.xml | 9 +-------- .../snapshots/variant-full/Template.xml | 9 +-------- 17 files changed, 30 insertions(+), 132 deletions(-) diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index 32dc12d5..ad033d07 100644 --- a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 +++ b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 @@ -1,4 +1,4 @@ -# skd-decompile v0.86 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.87 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1578,8 +1578,12 @@ function Build-FilterItem { } else { $vt = Get-FilterValueWithType $rn $value = $vt.value - # Сохраняем тип только если он не дефолтный (auto-detect compile вернёт xs:*) - if ($vt.type -and $vt.type -notmatch '^xs:') { + # Сохраняем тип только если он не дефолтный (auto-detect compile вернёт xs:*). + # DesignTimeValue для значений вида "Перечисление.X.Y" / "Справочник.X.Y" / + # "ПланСчетов.X.Y" и т.п. также auto-detect-ится — не сохраняем. + $autoDetectsDTV = ($vt.type -eq 'dcscor:DesignTimeValue') -and ` + ("$($vt.value)" -match '^(Перечисление|Справочник|ПланСчетов|Документ|ПланВидовХарактеристик|ПланВидовРасчета|БизнесПроцесс|Задача|РегистрСведений|ПланОбмена|Catalog|Enum|Document|ChartOfAccounts|ChartOfCharacteristicTypes|ChartOfCalculationTypes|BusinessProcess|Task|InformationRegister|ExchangePlan)\.') + if ($vt.type -and $vt.type -notmatch '^xs:' -and -not $autoDetectsDTV) { $valueTypeAttr = $vt.type } } @@ -1596,9 +1600,15 @@ function Build-FilterItem { # Сохраняем raw xsi:type если все одинаковые — compile будет использовать # как явный valueType (иначе авто-detect выберет DesignTimeValue для строк # "Перечисление.*", но оригинал может хранить как xs:string). + # DesignTimeValue для значений-ref-литералов сам авто-detect-ится — не сохраняем. $uniqTypes = @($rawTypes | Sort-Object -Unique) if ($uniqTypes.Count -eq 1 -and $uniqTypes[0]) { - $valueTypeAttr = $uniqTypes[0] + $autoDetectsDTV = ($uniqTypes[0] -eq 'dcscor:DesignTimeValue') -and ` + ($arr.Count -gt 0) -and ` + (@($arr | Where-Object { "$_" -notmatch '^(Перечисление|Справочник|ПланСчетов|Документ|ПланВидовХарактеристик|ПланВидовРасчета|БизнесПроцесс|Задача|РегистрСведений|ПланОбмена|Catalog|Enum|Document|ChartOfAccounts|ChartOfCharacteristicTypes|ChartOfCalculationTypes|BusinessProcess|Task|InformationRegister|ExchangePlan)\.' }).Count -eq 0) + if (-not $autoDetectsDTV) { + $valueTypeAttr = $uniqTypes[0] + } } } diff --git a/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml b/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml index d9cecb2e..89728f82 100644 --- a/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/appearance-multilang-value/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml index 0185369f..4a487c00 100644 --- a/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/dataset-folder-and-auto-group/Template.xml b/tests/skills/cases/skd-decompile/snapshots/dataset-folder-and-auto-group/Template.xml index ff4088c1..ae8d8723 100644 --- a/tests/skills/cases/skd-decompile/snapshots/dataset-folder-and-auto-group/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/dataset-folder-and-auto-group/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/dataset-query-multiline/Template.xml b/tests/skills/cases/skd-decompile/snapshots/dataset-query-multiline/Template.xml index 775fe7c0..c0e6e7a1 100644 --- a/tests/skills/cases/skd-decompile/snapshots/dataset-query-multiline/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/dataset-query-multiline/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml b/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml index da3c95cd..841013a7 100644 --- a/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/field-input-parameters/Template.xml b/tests/skills/cases/skd-decompile/snapshots/field-input-parameters/Template.xml index 0e3bb2a4..6cd276c9 100644 --- a/tests/skills/cases/skd-decompile/snapshots/field-input-parameters/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/field-input-parameters/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/field-order-expression/Template.xml b/tests/skills/cases/skd-decompile/snapshots/field-order-expression/Template.xml index 323c1d6f..9ef30a1e 100644 --- a/tests/skills/cases/skd-decompile/snapshots/field-order-expression/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/field-order-expression/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/field-roles-rich/Template.xml b/tests/skills/cases/skd-decompile/snapshots/field-roles-rich/Template.xml index 50c2ab54..d6101aa3 100644 --- a/tests/skills/cases/skd-decompile/snapshots/field-roles-rich/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/field-roles-rich/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml index e25d5217..76adee87 100644 --- a/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml b/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml index 880eb00b..ef7f7b7e 100644 --- a/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/structure-nested-and-folder/Template.xml b/tests/skills/cases/skd-decompile/snapshots/structure-nested-and-folder/Template.xml index c8d62202..19e807d7 100644 --- a/tests/skills/cases/skd-decompile/snapshots/structure-nested-and-folder/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/structure-nested-and-folder/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/template-custom-style/Template.xml b/tests/skills/cases/skd-decompile/snapshots/template-custom-style/Template.xml index 8693a7a8..2836e6ec 100644 --- a/tests/skills/cases/skd-decompile/snapshots/template-custom-style/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/template-custom-style/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/template-inline-cell-style/Template.xml b/tests/skills/cases/skd-decompile/snapshots/template-inline-cell-style/Template.xml index 71c67fa0..55f84558 100644 --- a/tests/skills/cases/skd-decompile/snapshots/template-inline-cell-style/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/template-inline-cell-style/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/template-no-style/Template.xml b/tests/skills/cases/skd-decompile/snapshots/template-no-style/Template.xml index ab20ab30..33934a1d 100644 --- a/tests/skills/cases/skd-decompile/snapshots/template-no-style/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/template-no-style/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml index 19a49432..cb501d54 100644 --- a/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local diff --git a/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml b/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml index a7534fea..f70b68d7 100644 --- a/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml @@ -1,12 +1,5 @@ - + ИсточникДанных1 Local