diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 index 5ca103c0..60ef4a7d 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 @@ -1077,6 +1077,11 @@ if (-not $script:stopped -and $script:borrowedFormsWithTree.Count -gt 0) { $rootMatch14 = [regex]::Match($raw, '(?s)]*>(?:(?!).)*?true') if (-not $rootMatch14.Success) { continue } $rootName = $rootMatch14.Groups[1].Value + # У динамического списка набор полей — результат его запроса, а не состав объекта: + # туда входят и стандартные поля списка (Ref, Date, DefaultPicture), и псевдонимы + # запроса. Сверять такие пути с ChildObjects объекта нельзя — будут ложные ошибки + # (корпусная проверка: 3383 таких сегмента на 1094 формах списка УТ). + if ($rootMatch14.Value -match '>cfg:DynamicList<') { continue } $ownerKey = ($ctx -split '\.Form\.')[0] $ownerParts = $ownerKey -split '\.', 2 if ($ownerParts.Count -lt 2) { continue } diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.py b/.claude/skills/cfe-validate/scripts/cfe-validate.py index 27ae1876..5a5f6fad 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.py +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.py @@ -1051,6 +1051,12 @@ def main(): if root_match14 is None: continue root_name14 = root_match14.group(1) + # У динамического списка набор полей — результат его запроса, а не состав объекта: + # туда входят и стандартные поля списка (Ref, Date, DefaultPicture), и псевдонимы + # запроса. Сверять такие пути с ChildObjects объекта нельзя — будут ложные ошибки + # (корпусная проверка: 3383 таких сегмента на 1094 формах списка УТ). + if '>cfg:DynamicList<' in root_match14.group(0): + continue owner_key = ctx.split('.Form.')[0] owner_parts = owner_key.split('.', 1) if len(owner_parts) < 2: diff --git a/tests/skills/cases/cfe-validate/list-form-dangling-path.json b/tests/skills/cases/cfe-validate/list-form-dangling-path.json deleted file mode 100644 index f70fe0f3..00000000 --- a/tests/skills/cases/cfe-validate/list-form-dangling-path.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "С -ConfigPath ловится висячий путь формы списка (Список.НетТакогоРеквизита)", - "preRun": [ - { - "script": "meta-compile/scripts/meta-compile", - "input": { "type": "Document", "name": "Расход", "attributes": [ "Склад: String(50)" ] }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } - }, - { - "script": "form-add/scripts/form-add", - "args": { "-ObjectPath": "{workDir}/Documents/Расход.xml", "-FormName": "ФормаСписка" } - }, - { - "writeFile": { - "path": "Documents/Расход/Forms/ФормаСписка/Ext/Form.xml", - "content": "\n
\n\tfalse\n\t\n\t\n\t\t\n\t\t\tСписок\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tСписок.Склад\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tСписок.НетТакогоРеквизита\n\t\t\t\t\t\n\t\t\t\t\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:DynamicList\n\t\t\t\n\t\t\ttrue\n\t\t\t\n\t\t\t\tfalse\n\t\t\t\tDocument.Расход\n\t\t\t\n\t\t\n\t\n" - } - }, - { - "script": "cfe-init/scripts/cfe-init", - "args": { "-Name": "Тест", "-OutputDir": "{workDir}/ext", "-ConfigPath": "{workDir}" } - }, - { - "script": "cfe-borrow/scripts/cfe-borrow", - "args": { "-ExtensionPath": "{workDir}/ext", "-ConfigPath": "{workDir}", "-Object": "Document.Расход.Form.ФормаСписка", "-BorrowMainAttribute": "Form" } - } - ], - "params": { "extensionPath": "ext" }, - "args_extra": ["-ConfigPath", "{workDir}"], - "expectError": true, - "expect": { "stdoutContains": "Список.НетТакогоРеквизита" } -} diff --git a/tests/skills/cases/cfe-validate/list-form-no-false-paths.json b/tests/skills/cases/cfe-validate/list-form-no-false-paths.json new file mode 100644 index 00000000..0d40a369 --- /dev/null +++ b/tests/skills/cases/cfe-validate/list-form-no-false-paths.json @@ -0,0 +1,33 @@ +{ + "name": "Пути формы списка не проверяются по составу объекта: поля запроса и стандартные поля списка — не висячие", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "Document", "name": "Расход", "attributes": [ "Склад: String(50)" ] }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "form-add/scripts/form-add", + "args": { "-ObjectPath": "{workDir}/Documents/Расход.xml", "-FormName": "ФормаСписка" } + }, + { + "writeFile": { + "path": "Documents/Расход/Forms/ФормаСписка/Ext/Form.xml", + "content": "\n
\n\tfalse\n\t\n\t\n\t\t\n\t\t\tСписок\n\t\t\tСписок.DefaultPicture\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tСписок.Склад\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tСписок.ПредставлениеСостояния\n\t\t\t\t\t\n\t\t\t\t\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:DynamicList\n\t\t\t\n\t\t\ttrue\n\t\t\t\n\t\t\t\ttrue\n\t\t\t\tDocument.Расход\n\t\t\t\tВЫБРАТЬ \tДокументРасход.Склад, \t\"\" КАК ПредставлениеСостояния ИЗ \tДокумент.Расход КАК ДокументРасход\n\t\t\t\n\t\t\n\t\n" + } + }, + { + "script": "cfe-init/scripts/cfe-init", + "args": { "-Name": "Тест", "-OutputDir": "{workDir}/ext", "-ConfigPath": "{workDir}" } + }, + { + "script": "cfe-borrow/scripts/cfe-borrow", + "args": { "-ExtensionPath": "{workDir}/ext", "-ConfigPath": "{workDir}", "-Object": "Document.Расход.Form.ФормаСписка", "-BorrowMainAttribute": "Form" } + } + ], + "params": { "extensionPath": "ext" }, + "args_extra": ["-ConfigPath", "{workDir}"], + "expect": { + "stdoutNotContains": ["Список.DefaultPicture", "Список.ПредставлениеСостояния"] + } +} diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Configuration.xml new file mode 100644 index 00000000..5311dd4e --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + 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/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход.xml new file mode 100644 index 00000000..771ab10e --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход.xml @@ -0,0 +1,127 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Расход + + + ru + Расход + + + + true + + String + 11 + Variable + Year + true + true + + + + Document.Расход.StandardAttribute.Number + + Use + Begin + DontUse + Directly + Document.Расход.Form.ФормаСписка + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + + Склад + + + ru + Склад + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + DontIndex + Use + Use + + +
ФормаСписка
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка.xml new file mode 100644 index 00000000..79ff6a75 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаСписка + + + ru + ФормаСписка + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml new file mode 100644 index 00000000..8b824c4c --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml @@ -0,0 +1,35 @@ + +
+ false + + + + Список + Список.DefaultPicture + + + Список.Склад + + + + Список.ПредставлениеСостояния + + + + +
+
+ + + + cfg:DynamicList + + true + + true + Document.Расход + ВЫБРАТЬ ДокументРасход.Склад, "" КАК ПредставлениеСостояния ИЗ Документ.Расход КАК ДокументРасход + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/ClientApplicationInterface.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Configuration.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Configuration.xml new file mode 100644 index 00000000..250ee8d0 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Configuration.xml @@ -0,0 +1,72 @@ + + + + + + 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 + + + + Adopted + Тест + + + ru + Тест + + + + Customization + true + Тест_ + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + Role.Тест_ОсновнаяРоль + + + + Language.Русский + + + + + + TaxiEnableVersion8_2 + + + Русский + Тест_ОсновнаяРоль + Расход + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход.xml new file mode 100644 index 00000000..d7f14d97 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход.xml @@ -0,0 +1,50 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Adopted + Расход + + UUID-012 + String + 11 + Variable + + +
ФормаСписка
+ + + + + Adopted + Склад + + UUID-014 + xs:string50Variable + + +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка.xml new file mode 100644 index 00000000..c10ef3f6 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка.xml @@ -0,0 +1,13 @@ + + +
+ + + Adopted + ФормаСписка + + UUID-002 + Managed + + +
\ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml new file mode 100644 index 00000000..d6484817 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка/Ext/Form.xml @@ -0,0 +1,77 @@ + +
+ false + + + + Список + Список.DefaultPicture + + + Список.Склад + + + + Список.ПредставлениеСостояния + + + + +
+
+ + + + cfg:DynamicList + + true + + true + Document.Расход + ВЫБРАТЬ + ДокументРасход.Склад, + "" КАК ПредставлениеСостояния +ИЗ + Документ.Расход КАК ДокументРасход + + + + + false + + + + Список + Список.DefaultPicture + + + Список.Склад + + + + Список.ПредставлениеСостояния + + + + +
+
+ + + + cfg:DynamicList + + true + + true + Document.Расход + ВЫБРАТЬ + ДокументРасход.Склад, + "" КАК ПредставлениеСостояния + ИЗ + Документ.Расход КАК ДокументРасход + + + +
+ \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Documents/Расход/Forms/ФормаСписка/Ext/Form/Module.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Languages/Русский.xml new file mode 100644 index 00000000..c21624f5 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Languages/Русский.xml @@ -0,0 +1,13 @@ + + + + + + Adopted + Русский + + UUID-002 + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Roles/Тест_ОсновнаяРоль.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Roles/Тест_ОсновнаяРоль.xml new file mode 100644 index 00000000..ec9dfbaf --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Ext/Roles/Тест_ОсновнаяРоль.xml @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Languages/Русский.xml b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/cfe-validate/snapshots/list-form-no-false-paths/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file