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