From d0e256a42f9839c1e6a9e985e8fe68574696ccf4 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Mon, 6 Jul 2026 16:28:14 +0300 Subject: [PATCH] =?UTF-8?q?fix(meta-decompile):=20=D0=BE=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?FixedArray=20choiceParameters=20=D1=82=D0=B5=D1=80=D1=8F=D0=BB?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BA=D0=B0=D0=BA=20=D1=81=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D1=8F=D1=80=20(v0.33)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Get-ChoiceParamValue возвращал 1-элементный ArrayList → PowerShell разворачивал коллекцию при `return` в скаляр → FixedArray с одним элементом декомпилировался как скалярное значение → компилятор эмитил `app:value` вместо `v8:FixedArray`+`v8:Value`. Фикс: унарная запятая `return ,$arr`. Многоэлементные массивы не задевало (не разворачиваются). Компилятор на явном `["x"]` был корректен — баг чисто декомпиляторный. Роундтрип Document: Attribute>Value 54→0, TOTAL 166→94, match 109→118/151. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/meta-decompile/scripts/meta-decompile.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 index 38e590e6..ae9c7ea2 100644 --- a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 +++ b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 @@ -1,4 +1,4 @@ -# meta-decompile v0.32 — XML объекта метаданных 1С → JSON-черновик формата meta-compile +# meta-decompile v0.33 — XML объекта метаданных 1С → JSON-черновик формата meta-compile # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # # Поддержаны: Catalog, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes, Document. Инверс meta-compile (omit-on-default: ключ эмитим только @@ -210,7 +210,7 @@ function Get-ChoiceParamValue { if ($xt -match 'FixedArray$') { $arr = [System.Collections.ArrayList]@() foreach ($sub in @($valNode.SelectNodes('v8:Value', $nsm))) { [void]$arr.Add((Convert-ChScalarNode $sub)) } - return $arr + return ,$arr # унарная запятая: PS иначе разворачивает 1-элементную коллекцию при return → FixedArray станет скаляром } return Convert-ChScalarNode $valNode }