diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1 index 94b03e4c..c27c6c78 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.5 — Validate 1C managed form +# form-validate v1.6 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -366,6 +366,13 @@ if (-not $stopped) { $dataPath = $dpNode.InnerText.Trim() if (-not $dataPath) { continue } + # Opaque platform-internal DataPath shapes — not validatable from Form.xml alone: + # - bare numeric (e.g. "10", "1000003") — internal index + # - "N/M:" — metadata reference by UUID + if ($dataPath -match '^\d+$' -or $dataPath -match '^\d+/\d+:[0-9a-fA-F-]+$') { + continue + } + $pathChecked++ # Extract root segment of path, strip array indices like [0] diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py index 478b1e95..5d3b8c11 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.5 — Validate 1C managed form +# form-validate v1.6 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -376,6 +376,12 @@ def main(): if not data_path: continue + # Opaque platform-internal DataPath shapes — not validatable from Form.xml alone: + # - bare numeric (e.g. "10", "1000003") — internal index + # - "N/M:" — metadata reference by UUID + if re.match(r'^\d+$', data_path) or re.match(r'^\d+/\d+:[0-9a-fA-F-]+$', data_path): + continue + path_checked += 1 clean_path = re.sub(r'\[\d+\]', '', data_path) diff --git a/tests/skills/cases/form-validate/datapath-opaque-refs.json b/tests/skills/cases/form-validate/datapath-opaque-refs.json new file mode 100644 index 00000000..5ab8cf6e --- /dev/null +++ b/tests/skills/cases/form-validate/datapath-opaque-refs.json @@ -0,0 +1,5 @@ +{ + "name": "Числовые и UUID DataPath не вызывают ложных ошибок", + "setup": "fixture:datapath-opaque-refs", + "params": { "formPath": "DataProcessors/Opaque/Forms/Форма" } +} diff --git a/tests/skills/cases/form-validate/fixtures/datapath-opaque-refs/DataProcessors/Opaque/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-validate/fixtures/datapath-opaque-refs/DataProcessors/Opaque/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..69835b80 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/datapath-opaque-refs/DataProcessors/Opaque/Forms/Форма/Ext/Form.xml @@ -0,0 +1,35 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тест</v8:content> + </v8:item> + + + + + 1/0:a917a122-f663-4c45-8de0-fd5104007de3 + + + + + 10 + + + + + Объект.Наименование + + + + + + + + cfg:DataProcessorObject.Opaque + + true + + +