From 796403abe36be4b238b056ad12c23495720d12e2 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 23 May 2026 20:38:33 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-decompile):=20fold=20@autoDates=20?= =?UTF-8?q?=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BD=D0=BE=D0=BD=D0=B8=D1=87=D0=B5=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D1=85=20=D0=B8=D0=BC=D1=91=D0=BD=20=D0=9D=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=9F=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=D0=B0/?= =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D0=B5=D1=86=D0=9F=D0=B5=D1=80=D0=B8=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Раньше любая пара companion-параметров с expression "&P.ДатаНачала"/ "&P.ДатаОкончания" сворачивалась в @autoDates, независимо от их имён. Compile же всегда генерирует строго "НачалоПериода"/"КонецПериода" + type=date + DateFractions=Date. Для отчётов с шаблоном "Период" → "НачалоПериода"/"КонецПериода" + DateFractions=DateTime (типовой паттерн БСП — ПериодКонтрольСроков, ПериодОбязательств и т.п.) это давало некорректный round-trip с потерей суффикса и формата дат. Теперь fold срабатывает ТОЛЬКО для канонической пары — остальные companion'ы остаются явными параметрами с полным сохранением имени, type=dateTime, DateFractions=DateTime и expression. sample30: −152 строки (1548 → 1396). --- .claude/skills/skd-decompile/scripts/skd-decompile.ps1 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index 9be547f6..088dbc15 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.66 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.67 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -2362,7 +2362,11 @@ foreach ($p in $paramsRaw) { if ($q.expression -eq $startExpr) { $startMatch = $q.name } elseif ($q.expression -eq $endExpr) { $endMatch = $q.name } } - if ($startMatch -and $endMatch) { + # Fold ТОЛЬКО если companion-имена точно "НачалоПериода"/"КонецПериода" БЕЗ суффикса. + # Иначе compile (который генерирует именно эти имена + type=date + DateFractions=Date) + # не сможет вернуть bit-perfect для отчётов с шаблоном "Период" → "НачалоПериода"/ + # "КонецПериода" + DateFractions=DateTime. Оставляем как явные параметры. + if ($startMatch -eq 'НачалоПериода' -and $endMatch -eq 'КонецПериода') { $p['autoDates'] = $true $removedNames[$startMatch] = $true $removedNames[$endMatch] = $true