From 32e06cbc561f7c485e404691861a5018c248ecb6 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 22 May 2026 19:27:36 +0300 Subject: [PATCH] =?UTF-8?q?fix(skd-compile):=20=D0=B2=D1=81=D0=B5=D0=B3?= =?UTF-8?q?=D0=B4=D0=B0=20=D1=8D=D0=BC=D0=B8=D1=82=D0=B8=D1=82=D1=8C=20use?= =?UTF-8?q?Restriction=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Платформа эмитит true|false у каждого параметра безусловно. Раньше compile эмитил только если =true, что приводило к LOST false в roundtrip. Эффект на sample30: −84 строки diff. Co-Authored-By: Claude Opus 4.7 --- .../skills/skd-compile/scripts/skd-compile.ps1 | 11 ++++++----- .claude/skills/skd-compile/scripts/skd-compile.py | 11 +++++++---- .../snapshots/auto-data-parameters/Template.xml | 8 ++++++++ .../available-values-and-folders/Template.xml | 1 + .../decimal-qualifier-defaults/Template.xml | 3 +++ .../snapshots/empty-param-values/Template.xml | 15 +++++++++++++++ .../snapshots/full-example/Template.xml | 1 + .../snapshots/multi-lang-title/Template.xml | 1 + .../Template.xml | 1 + .../snapshots/with-filters/Template.xml | 1 + .../snapshots/with-parameters/Template.xml | 2 ++ .../snapshots/calc-total-params/Template.xml | 4 ++++ .../snapshots/variant-full/Template.xml | 2 ++ 13 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1 index 542c332b..6ff69a35 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.49 — Compile 1C DCS from JSON +# skd-compile v1.50 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -1257,10 +1257,11 @@ function Emit-SingleParam { $parsed.useRestriction = $true } - # UseRestriction - if ($parsed.useRestriction -eq $true -or ($p -isnot [string] -and $p.useRestriction -eq $true)) { - X "`t`ttrue" - } + # UseRestriction — платформа всегда эмитит этот тег у параметра (true/false) + $urEmit = $false + if ($parsed.useRestriction -eq $true) { $urEmit = $true } + elseif ($p -isnot [string] -and $p.useRestriction -eq $true) { $urEmit = $true } + X ("`t`t" + $(if ($urEmit) { 'true' } else { 'false' }) + "") # Expression if ($parsed.expression) { diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py index b97423c7..f8ddc6ff 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.49 — Compile 1C DCS from JSON +# skd-compile v1.50 — Compile 1C DCS from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1078,9 +1078,12 @@ def emit_single_param(lines, p, parsed): parsed['availableAsField'] = False parsed['useRestriction'] = True - # UseRestriction - if parsed.get('useRestriction') is True or (p is not None and not isinstance(p, str) and p.get('useRestriction') is True): - lines.append('\t\ttrue') + # UseRestriction — платформа всегда эмитит этот тег у параметра (true/false) + ur_emit = ( + parsed.get('useRestriction') is True + or (p is not None and not isinstance(p, str) and p.get('useRestriction') is True) + ) + lines.append(f'\t\t{"true" if ur_emit else "false"}') # Expression if parsed.get('expression'): diff --git a/tests/skills/cases/skd-compile/snapshots/auto-data-parameters/Template.xml b/tests/skills/cases/skd-compile/snapshots/auto-data-parameters/Template.xml index f2fcec94..08bb6031 100644 --- a/tests/skills/cases/skd-compile/snapshots/auto-data-parameters/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/auto-data-parameters/Template.xml @@ -38,6 +38,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always @@ -87,6 +88,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false Флаг @@ -94,6 +96,7 @@ xs:boolean true + false Сумма @@ -106,6 +109,7 @@ 0 + false Ставка @@ -118,6 +122,7 @@ 13.5 + false Метка @@ -129,6 +134,7 @@ ТестовоеЗначение + false ПустаяСтрока @@ -140,6 +146,7 @@ + false Валюта @@ -147,6 +154,7 @@ d5p1:CatalogRef.Валюты Справочник.Валюты.EmptyRef + false Основной diff --git a/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml b/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml index 57d1ebe6..82b400fd 100644 --- a/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml @@ -93,6 +93,7 @@ d5p1:EnumRef.Округления Перечисление.Округления.Окр1_00 + false Перечисление.Округления.Окр1_00 diff --git a/tests/skills/cases/skd-compile/snapshots/decimal-qualifier-defaults/Template.xml b/tests/skills/cases/skd-compile/snapshots/decimal-qualifier-defaults/Template.xml index 88cda4d3..4505d876 100644 --- a/tests/skills/cases/skd-compile/snapshots/decimal-qualifier-defaults/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/decimal-qualifier-defaults/Template.xml @@ -123,6 +123,7 @@ 0 + false ПараметрЦелое @@ -135,6 +136,7 @@ 0 + false ПараметрКоличество @@ -147,6 +149,7 @@ 0 + false Основной diff --git a/tests/skills/cases/skd-compile/snapshots/empty-param-values/Template.xml b/tests/skills/cases/skd-compile/snapshots/empty-param-values/Template.xml index 75000f69..5a845773 100644 --- a/tests/skills/cases/skd-compile/snapshots/empty-param-values/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/empty-param-values/Template.xml @@ -31,6 +31,7 @@ Параметр1 + false Параметр2 @@ -42,12 +43,14 @@ + false ПараметрСписок d5p1:EnumRef.СтатусТеста + false true @@ -56,6 +59,7 @@ d5p1:CatalogRef.ПлоскийПростой + false ПараметрДата @@ -66,6 +70,7 @@ 0001-01-01T00:00:00 + false ПараметрЧисло @@ -78,6 +83,7 @@ 0 + false ПараметрБулево @@ -85,6 +91,7 @@ xs:boolean false + false ПараметрСтандартныйПериод @@ -96,10 +103,12 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false ПараметрТипНеЗадан + false ПараметрСписокСтрок @@ -110,6 +119,7 @@ Variable + false true @@ -121,6 +131,7 @@ 0001-01-01T12:30:00 + false ПараметрВремяПусто @@ -131,6 +142,7 @@ 0001-01-01T00:00:00 + false ПараметрСтрокаФиксСЗначением @@ -142,6 +154,7 @@ АБВ + false ПараметрСтрокаФиксПусто @@ -153,6 +166,7 @@ + false СоставнойТип @@ -165,6 +179,7 @@ d5p1:CatalogRef.ПлоскийПростой + false Основной diff --git a/tests/skills/cases/skd-compile/snapshots/full-example/Template.xml b/tests/skills/cases/skd-compile/snapshots/full-example/Template.xml index 3e9f5d4b..7d9a9749 100644 --- a/tests/skills/cases/skd-compile/snapshots/full-example/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/full-example/Template.xml @@ -68,6 +68,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always diff --git a/tests/skills/cases/skd-compile/snapshots/multi-lang-title/Template.xml b/tests/skills/cases/skd-compile/snapshots/multi-lang-title/Template.xml index 0e810997..9135f636 100644 --- a/tests/skills/cases/skd-compile/snapshots/multi-lang-title/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/multi-lang-title/Template.xml @@ -76,6 +76,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false Основной diff --git a/tests/skills/cases/skd-compile/snapshots/parameter-title-presentation-synonyms/Template.xml b/tests/skills/cases/skd-compile/snapshots/parameter-title-presentation-synonyms/Template.xml index 4f2ce774..5e8a558c 100644 --- a/tests/skills/cases/skd-compile/snapshots/parameter-title-presentation-synonyms/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/parameter-title-presentation-synonyms/Template.xml @@ -40,6 +40,7 @@ d5p1:EnumRef.Округления Перечисление.Округления.Окр1_00 + false Перечисление.Округления.Окр1_00 diff --git a/tests/skills/cases/skd-compile/snapshots/with-filters/Template.xml b/tests/skills/cases/skd-compile/snapshots/with-filters/Template.xml index 69d27f95..16a4a234 100644 --- a/tests/skills/cases/skd-compile/snapshots/with-filters/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/with-filters/Template.xml @@ -63,6 +63,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always diff --git a/tests/skills/cases/skd-compile/snapshots/with-parameters/Template.xml b/tests/skills/cases/skd-compile/snapshots/with-parameters/Template.xml index 4f7e6693..f224323d 100644 --- a/tests/skills/cases/skd-compile/snapshots/with-parameters/Template.xml +++ b/tests/skills/cases/skd-compile/snapshots/with-parameters/Template.xml @@ -60,6 +60,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always @@ -105,6 +106,7 @@ d5p1:CatalogRef.Организации + false Основной 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 776dd8e5..5b6c3601 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 @@ -103,6 +103,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always @@ -148,12 +149,14 @@ d5p1:CatalogRef.Организации + false СписокДокументов d5p1:CatalogRef.Документы + false true @@ -175,6 +178,7 @@ d5p1:EnumRef.Округления Перечисление.Округления.Окр1 + false Перечисление.Округления.Окр1_00 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 331424d5..8e16174a 100644 --- a/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml +++ b/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml @@ -81,6 +81,7 @@ 0001-01-01T00:00:00 0001-01-01T00:00:00 + false true Always @@ -126,6 +127,7 @@ xs:boolean true + false