From 8b0f55f1cc1aaed2f37ce0398578e6304074cd41 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 15 May 2026 11:40:27 +0300 Subject: [PATCH] =?UTF-8?q?feat(form-validate):=20silent-skip=20=D1=87?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=BE=D0=B2=D1=8B=D1=85=20=D0=B8=20UUID-Data?= =?UTF-8?q?Path=20=D0=B2=20Check=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В реальных выгрузках ERP/БП встречаются непрозрачные платформенные DataPath, которые невозможно проверить из одного Form.xml: - bare numeric ("10", "1000003") — внутренние индексы платформы - "N/M:" — ссылка на метаданные по UUID Раньше Check 5 ругался на них "attribute not found". Теперь такие пути пропускаются без счёта в paths checked и без ошибки. Реалистичные пользовательские опечатки (кириллица в имени атрибута) продолжают ловиться обычной проверкой attrMap. Добавлен тест-кейс datapath-opaque-refs, версия v1.5 → v1.6. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../form-validate/scripts/form-validate.ps1 | 9 ++++- .../form-validate/scripts/form-validate.py | 8 ++++- .../form-validate/datapath-opaque-refs.json | 5 +++ .../Opaque/Forms/Форма/Ext/Form.xml | 35 +++++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 tests/skills/cases/form-validate/datapath-opaque-refs.json create mode 100644 tests/skills/cases/form-validate/fixtures/datapath-opaque-refs/DataProcessors/Opaque/Forms/Форма/Ext/Form.xml 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 + + +