From a1b33cdda0ca7520b15bfedfc93e5e5fe737efb6 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 13 Aug 2026 18:05:57 +0300 Subject: [PATCH] =?UTF-8?q?fix(cf-init):=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B0=D1=82=D1=8C=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=20CompatibilityMode=20DontUse=20=D0=B2=D0=BC=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=B2=20?= =?UTF-8?q?SKILL.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit «Не использовать» в Конфигураторе хранится как версия ТЕКУЩЕЙ платформы: свежая база получает Version8_3_<своя> (замерено на 8.3.20/8.3.24/8.3.25/8.3.27/8.5.1), и ни одна из пяти типовых в корпусе DontUse не содержит. Само значение легально — платформа принимает его без ошибок, — но не выживает: на 8.3.25 и на 8.3.27 выгрузка возвращает Version8_3_8. Контроль: тот же шаблон cf-init с явным Version8_3_25 роундтрипится без изменений. Отсюда предупреждение, а не запрет: запрещать значение, которое платформа принимает, — то же самое, от чего мы только что ушли в -FormatVersion. Канал тот же (stderr, exit 0), что и у предупреждения о версии формата. Абзац про DontUse убран из SKILL.md: инструкция читается всегда, а ловушка актуальна почти никогда, и текст сам ЗНАКОМИЛ модель со значением, которое выбирать не следует. Сравнение регистронезависимо явно в обоих портах: в PS -eq таков по умолчанию, в py — нет, и молчаливое расхождение портов началось бы прямо здесь. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/skills/cf-init/SKILL.md | 3 - .claude/skills/cf-init/scripts/cf-init.ps1 | 12 +- .claude/skills/cf-init/scripts/cf-init.py | 11 +- .../cases/cf-init/compat-dontuse-warns.json | 20 ++ .../cf-init/compat-normal-no-warning.json | 19 ++ .../compat-dontuse-warns/Configuration.xml | 251 +++++++++++++++++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../Languages/Русский.xml | 16 ++ .../Configuration.xml | 255 ++++++++++++++++++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../Languages/Русский.xml | 16 ++ 11 files changed, 634 insertions(+), 5 deletions(-) create mode 100644 tests/skills/cases/cf-init/compat-dontuse-warns.json create mode 100644 tests/skills/cases/cf-init/compat-normal-no-warning.json create mode 100644 tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Configuration.xml create mode 100644 tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Languages/Русский.xml create mode 100644 tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Configuration.xml create mode 100644 tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Languages/Русский.xml diff --git a/.claude/skills/cf-init/SKILL.md b/.claude/skills/cf-init/SKILL.md index b4b0aa15..08457ccd 100644 --- a/.claude/skills/cf-init/SKILL.md +++ b/.claude/skills/cf-init/SKILL.md @@ -38,9 +38,6 @@ allowed-tools: появившиеся позже. Выше целевой платформы — нельзя: такая конфигурация загрузится, но работать на ней не будет. -Значение `DontUse` не задавать: платформа заменяет его на `Version8_3_8`, то есть молча опускает -конфигурацию до старого режима. - ```powershell powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/cf-init.ps1" -Name "МояКонфигурация" ``` diff --git a/.claude/skills/cf-init/scripts/cf-init.ps1 b/.claude/skills/cf-init/scripts/cf-init.ps1 index 526c33a3..b940d51b 100644 --- a/.claude/skills/cf-init/scripts/cf-init.ps1 +++ b/.claude/skills/cf-init/scripts/cf-init.ps1 @@ -1,4 +1,4 @@ -# cf-init v1.13 — Create empty 1C configuration scaffold (+write_xml_file/write_utf8_bom: общий эталон записи) +# cf-init v1.14 — Create empty 1C configuration scaffold (+write_xml_file/write_utf8_bom: общий эталон записи) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -47,6 +47,16 @@ if ($formatRank -lt (Get-FormatRank $formatVerifiedMin) -or $formatRank -gt (Get [Console]::Error.WriteLine("WARNING: Format version '$FormatVersion' is outside the tested range $formatVerifiedMin-$formatVerifiedMax — the scaffold is emitted as requested but was not verified on that platform") } +# «Не использовать» в Конфигураторе хранится как версия ТЕКУЩЕЙ платформы, а не как DontUse: +# свежая база получает Version8_3_<своя>, и ни одна типовая в корпусе DontUse не содержит. +# Само значение легально — платформа принимает его без ошибок, — но не выживает: замерено на +# 8.3.25 и 8.3.27, выгрузка обоих возвращает Version8_3_8. Поэтому предупреждение, а не запрет. +# Сравнение регистронезависимо ЯВНО: в PS -eq таков по умолчанию, в py — нет, и молчаливое +# расхождение портов началось бы прямо здесь. +if ($CompatibilityMode -and $CompatibilityMode.ToLowerInvariant() -eq 'dontuse') { + [Console]::Error.WriteLine("WARNING: CompatibilityMode 'DontUse' is not `"no restrictions`" — the platform stores it as Version8_3_8. For no compatibility restrictions use the target platform version (e.g. Version8_3_27 for 8.3.27).") +} + # --- Resolve output dir --- if (-not [System.IO.Path]::IsPathRooted($OutputDir)) { $OutputDir = Join-Path (Get-Location).Path $OutputDir diff --git a/.claude/skills/cf-init/scripts/cf-init.py b/.claude/skills/cf-init/scripts/cf-init.py index a4030a5e..b1629130 100644 --- a/.claude/skills/cf-init/scripts/cf-init.py +++ b/.claude/skills/cf-init/scripts/cf-init.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-init v1.13 — Create empty 1C configuration scaffold (+write_xml_file/write_utf8_bom: общий эталон записи) +# cf-init v1.14 — Create empty 1C configuration scaffold (+write_xml_file/write_utf8_bom: общий эталон записи) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Generates minimal XML source files for a 1C configuration.""" import sys, os, argparse, re, uuid @@ -88,6 +88,15 @@ def main(): f"{FORMAT_VERIFIED_MIN}-{FORMAT_VERIFIED_MAX} — the scaffold is emitted as requested " f"but was not verified on that platform", file=sys.stderr) + # «Не использовать» в Конфигураторе хранится как версия ТЕКУЩЕЙ платформы, а не как DontUse: + # свежая база получает Version8_3_<своя>, и ни одна типовая в корпусе DontUse не содержит. + # Само значение легально — платформа принимает его без ошибок, — но не выживает: замерено на + # 8.3.25 и 8.3.27, выгрузка обоих возвращает Version8_3_8. Поэтому предупреждение, а не запрет. + # Сравнение регистронезависимо ЯВНО: в PS -eq таков по умолчанию, в py — нет, и молчаливое + # расхождение портов началось бы прямо здесь. + if (args.CompatibilityMode or "").lower() == "dontuse": + print("WARNING: CompatibilityMode 'DontUse' is not \"no restrictions\" — the platform stores it as Version8_3_8. For no compatibility restrictions use the target platform version (e.g. Version8_3_27 for 8.3.27).", file=sys.stderr) + name = args.Name synonym = args.Synonym if args.Synonym else name output_dir = args.OutputDir diff --git a/tests/skills/cases/cf-init/compat-dontuse-warns.json b/tests/skills/cases/cf-init/compat-dontuse-warns.json new file mode 100644 index 00000000..ebae1e1e --- /dev/null +++ b/tests/skills/cases/cf-init/compat-dontuse-warns.json @@ -0,0 +1,20 @@ +{ + "name": "CompatibilityMode DontUse: предупреждение, но конфигурация создаётся", + "params": { + "name": "КонфаDU" + }, + "args_extra": [ + "-CompatibilityMode", + "DontUse" + ], + "expect": { + "files": [ + "Configuration.xml" + ], + "fileContains": { + "file": "Configuration.xml", + "text": "DontUse" + }, + "stderrContains": "CompatibilityMode 'DontUse' is not" + } +} diff --git a/tests/skills/cases/cf-init/compat-normal-no-warning.json b/tests/skills/cases/cf-init/compat-normal-no-warning.json new file mode 100644 index 00000000..f38c605b --- /dev/null +++ b/tests/skills/cases/cf-init/compat-normal-no-warning.json @@ -0,0 +1,19 @@ +{ + "name": "Обычный режим совместимости: предупреждения про DontUse нет", + "params": { + "name": "КонфаОК" + }, + "args_extra": [ + "-CompatibilityMode", + "Version8_3_27", + "-FormatVersion", + "2.20" + ], + "expect": { + "fileContains": { + "file": "Configuration.xml", + "text": "Version8_3_27" + }, + "stdoutNotContains": "DontUse" + } +} diff --git a/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Configuration.xml b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Configuration.xml new file mode 100644 index 00000000..4a05edd4 --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Configuration.xml @@ -0,0 +1,251 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + КонфаDU + + + ru + КонфаDU + + + + + DontUse + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + DontUse + + + + Русский + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Languages/Русский.xml b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-dontuse-warns/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Configuration.xml b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Configuration.xml new file mode 100644 index 00000000..96b09cfe --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Configuration.xml @@ -0,0 +1,255 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + КонфаОК + + + ru + КонфаОК + + + + + Version8_3_27 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Languages/Русский.xml b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Languages/Русский.xml new file mode 100644 index 00000000..fe1c5336 --- /dev/null +++ b/tests/skills/cases/cf-init/snapshots/compat-normal-no-warning/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file