From ceaaa8bc55a72081aaf422497ad24de7765516bf Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 24 May 2026 20:27:21 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-decompile):=20=D0=BD=D0=B5=20=D1=81?= =?UTF-8?q?=D0=B2=D0=BE=D1=80=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?@autoDates=20companions=20=D1=81=20availableAsField=3Dfalse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companions НачалоПериода/КонецПериода имеют canonical имена/expression в некоторых корпусах, но дополнительно несут availableAsField=false (поле-ограничение, не участвует в выборе). Наш @autoDates auto-generator не передаёт этот атрибут — для совместимости с другими корпусами без него. Решение в decompile: не сворачивать в @autoDates если хотя бы один companion имеет availableAsField=false → companions остаются явными параметрами, compile эмитит их со всеми атрибутами через стандартный path. Sample30: 607 → 458 строк diff (-149). --- .claude/skills/skd-compile/scripts/skd-compile.ps1 | 2 +- .claude/skills/skd-compile/scripts/skd-compile.py | 2 +- .claude/skills/skd-decompile/scripts/skd-decompile.ps1 | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index a5c13cd5..68f38e1a 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.ps1 +++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1 @@ -1,4 +1,4 @@ -# skd-compile v1.98 — Compile 1C DCS from JSON +# skd-compile v1.100 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index 8c5444b0..4bfdcd30 100644 --- a/.claude/skills/skd-compile/scripts/skd-compile.py +++ b/.claude/skills/skd-compile/scripts/skd-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# skd-compile v1.98 — Compile 1C DCS from JSON +# skd-compile v1.100 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json diff --git a/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 b/.claude/skills/skd-decompile/scripts/skd-decompile.ps1 index 14b48c92..b85a4ed5 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.83 — Decompile 1C DCS Template.xml to JSON DSL (draft) +# skd-decompile v0.84 — Decompile 1C DCS Template.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -2646,7 +2646,13 @@ foreach ($p in $paramsRaw) { # Иначе compile (который генерирует именно эти имена + type=date + DateFractions=Date) # не сможет вернуть bit-perfect для отчётов с шаблоном "Период" → "НачалоПериода"/ # "КонецПериода" + DateFractions=DateTime. Оставляем как явные параметры. - if ($startMatch -eq 'НачалоПериода' -and $endMatch -eq 'КонецПериода') { + # Также НЕ сворачиваем если companions имеют availableAsField=false — compile + # auto-gen не передаёт этот атрибут (ERP-стиль без него; БСП-стиль с ним — + # вариативность не выразима через @autoDates флаг, пусть companions останутся явными). + $beginP = $paramByName[$startMatch] + $endP = $paramByName[$endMatch] + $hasNotAField = ($beginP -and $beginP.notAField) -or ($endP -and $endP.notAField) + if ($startMatch -eq 'НачалоПериода' -and $endMatch -eq 'КонецПериода' -and -not $hasNotAField) { $p['autoDates'] = $true $removedNames[$startMatch] = $true $removedNames[$endMatch] = $true