diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1 index 418df381f..8146ae42d 100644 --- a/.claude/skills/form-validate/scripts/form-validate.ps1 +++ b/.claude/skills/form-validate/scripts/form-validate.ps1 @@ -1,4 +1,4 @@ -# form-validate v1.21 — Validate 1C managed form +# form-validate v1.22 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -944,7 +944,9 @@ if (-not $stopped) { if ($tv -in $validClosedTypes) { continue } if ($tv -match '^cfg:(.+)$') { $cfgVal = $Matches[1] - if ($cfgVal -eq "DynamicList") { continue } + # Тип без имени объекта: динамический список, набор констант, любой отчёт — ровно те три, + # что встречаются в формах корпуса (УТ, ERP, БП, УНФ); иное без имени — вероятная опечатка + if ($cfgVal -cin @("DynamicList", "ConstantsSet", "ReportObject")) { continue } if ($cfgVal -match '^([^.]+)\.') { $pfx = $Matches[1] if ($pfx -in $validCfgPrefixes) { diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py index 05d09dc5a..33dedd682 100644 --- a/.claude/skills/form-validate/scripts/form-validate.py +++ b/.claude/skills/form-validate/scripts/form-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-validate v1.21 — Validate 1C managed form +# form-validate v1.22 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -900,7 +900,9 @@ def main(): elif tv.startswith("cfg:"): suffix = tv[4:] # after "cfg:" prefix = suffix.split(".")[0] - if prefix in VALID_CFG_PREFIXES or suffix == "DynamicList": + # Тип без имени объекта: динамический список, набор констант, любой отчёт — ровно те три, + # что встречаются в формах корпуса (УТ, ERP, БП, УНФ); иное без имени — вероятная опечатка + if ("." in suffix and prefix in VALID_CFG_PREFIXES) or suffix in ("DynamicList", "ConstantsSet", "ReportObject"): # ExternalDataProcessorObject/ExternalReportObject valid only in EPF/ERF context if is_config_context and prefix in ('ExternalDataProcessorObject', 'ExternalReportObject'): report_error(f'12. Type "{tv}": External* type in configuration context (use DataProcessorObject/ReportObject instead)') diff --git a/tests/skills/cases/form-validate/bare-cfg-type-typo.json b/tests/skills/cases/form-validate/bare-cfg-type-typo.json new file mode 100644 index 000000000..f2ca6fb2c --- /dev/null +++ b/tests/skills/cases/form-validate/bare-cfg-type-typo.json @@ -0,0 +1,44 @@ +{ + "name": "Опечатка в голом cfg-типе (cfg:ConstantSet) по-прежнему предупреждается", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Constant", + "name": "Флаг", + "valueType": "Boolean" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "Настройки" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "writeFile": { + "path": "CommonForms/Настройки/Ext/Form.xml", + "content": "\n
\n\t\n\t\t<v8:item>\n\t\t\t<v8:lang>ru</v8:lang>\n\t\t\t<v8:content>Настройки</v8:content>\n\t\t</v8:item>\n\t\n\tfalse\n\t\n\t\n\t\t\n\t\t\tНаборКонстант.Флаг\n\t\t\tAuto\n\t\t\tRight\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\tcfg:ConstantSet\n\t\t\t\n\t\t\ttrue\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t<v8:item>\n\t\t\t\t\t<v8:lang>ru</v8:lang>\n\t\t\t\t\t<v8:content>Отчет</v8:content>\n\t\t\t\t</v8:item>\n\t\t\t\n\t\t\t\n\t\t\t\tcfg:ReportObject\n\t\t\t\n\t\t\n\t\n" + } + } + ], + "params": { + "formPath": "CommonForms/Настройки" + }, + "expect": { + "stdoutContains": [ + "cfg:ConstantSet", + "unrecognized cfg prefix" + ] + }, + "skipPlatformVerify": "намеренная опечатка в типе — платформа такую форму не загрузит" +} diff --git a/tests/skills/cases/form-validate/bare-cfg-types.json b/tests/skills/cases/form-validate/bare-cfg-types.json new file mode 100644 index 000000000..5352fe53b --- /dev/null +++ b/tests/skills/cases/form-validate/bare-cfg-types.json @@ -0,0 +1,40 @@ +{ + "name": "Голые cfg:ConstantsSet и cfg:ReportObject — допустимые типы (набор констант, любой отчёт), без предупреждения", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Constant", + "name": "Флаг", + "valueType": "Boolean" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "CommonForm", + "name": "Настройки" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "writeFile": { + "path": "CommonForms/Настройки/Ext/Form.xml", + "content": "\n
\n\t\n\t\t<v8:item>\n\t\t\t<v8:lang>ru</v8:lang>\n\t\t\t<v8:content>Настройки</v8:content>\n\t\t</v8:item>\n\t\n\tfalse\n\t\n\t\n\t\t\n\t\t\tНаборКонстант.Флаг\n\t\t\tAuto\n\t\t\tRight\n\t\t\t\n\t\t\t\n\t\t\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t\tcfg:ConstantsSet\n\t\t\t\n\t\t\ttrue\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t<v8:item>\n\t\t\t\t\t<v8:lang>ru</v8:lang>\n\t\t\t\t\t<v8:content>Отчет</v8:content>\n\t\t\t\t</v8:item>\n\t\t\t\n\t\t\t\n\t\t\t\tcfg:ReportObject\n\t\t\t\n\t\t\n\t\n" + } + } + ], + "params": { + "formPath": "CommonForms/Настройки" + }, + "expect": { + "stdoutNotContains": "unrecognized cfg prefix" + } +} diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки.xml new file mode 100644 index 000000000..3e778a517 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки.xml @@ -0,0 +1,24 @@ + + + + + Настройки + + + ru + Настройки + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки/Ext/Form.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки/Ext/Form.xml new file mode 100644 index 000000000..b170027cb --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки/Ext/Form.xml @@ -0,0 +1,39 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + false + + + + НаборКонстант.Флаг + Auto + Right + + + + + + + + cfg:ConstantSet + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отчет</v8:content> + </v8:item> + + + cfg:ReportObject + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/CommonForms/Настройки/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Configuration.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Configuration.xml new file mode 100644 index 000000000..2d4b780a7 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 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 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + 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 + Version8_3_24 + + + + Русский + Флаг + Настройки + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг.xml new file mode 100644 index 000000000..c6cf9335b --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг.xml @@ -0,0 +1,58 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Флаг + + + ru + Флаг + + + + + xs:boolean + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг/Ext/ManagerModule.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг/Ext/ValueManagerModule.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Constants/Флаг/Ext/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Languages/Русский.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-type-typo/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки.xml new file mode 100644 index 000000000..3e778a517 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки.xml @@ -0,0 +1,24 @@ + + + + + Настройки + + + ru + Настройки + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + false + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки/Ext/Form.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки/Ext/Form.xml new file mode 100644 index 000000000..e6cfc2f80 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки/Ext/Form.xml @@ -0,0 +1,39 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + false + + + + НаборКонстант.Флаг + Auto + Right + + + + + + + + cfg:ConstantsSet + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отчет</v8:content> + </v8:item> + + + cfg:ReportObject + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/CommonForms/Настройки/Ext/Form/Module.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Configuration.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Configuration.xml new file mode 100644 index 000000000..2d4b780a7 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 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 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + 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 + Version8_3_24 + + + + Русский + Флаг + Настройки + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг.xml new file mode 100644 index 000000000..c6cf9335b --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг.xml @@ -0,0 +1,58 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + Флаг + + + ru + Флаг + + + + + xs:boolean + + true + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + + + Auto + Managed + DontUse + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг/Ext/ManagerModule.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг/Ext/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг/Ext/ValueManagerModule.bsl b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Constants/Флаг/Ext/ValueManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Languages/Русский.xml b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/bare-cfg-types/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file