mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-18 08:39:40 +03:00
fix(form-validate): skip DataPath check for base elements in borrowed forms
In extension forms with BaseForm, elements with id < 1000000 belong to the base configuration and their attributes are not present in the extension. Skip DataPath→Attribute validation for these elements to avoid false errors. Show "N base skipped" in output for transparency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -76,6 +76,9 @@ if ($parentDir) {
|
|||||||
Write-Host "=== Validation: $formName ==="
|
Write-Host "=== Validation: $formName ==="
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
|
|
||||||
|
# Early BaseForm detection (used in Check 5 to skip base element DataPath validation)
|
||||||
|
$hasBaseForm = ($root.SelectSingleNode("f:BaseForm", $nsMgr) -ne $null)
|
||||||
|
|
||||||
# --- Check 1: Root element and version ---
|
# --- Check 1: Root element and version ---
|
||||||
|
|
||||||
if ($root.LocalName -ne "Form") {
|
if ($root.LocalName -ne "Form") {
|
||||||
@@ -297,6 +300,7 @@ if (-not $stopped) {
|
|||||||
if (-not $stopped) {
|
if (-not $stopped) {
|
||||||
$pathErrors = 0
|
$pathErrors = 0
|
||||||
$pathChecked = 0
|
$pathChecked = 0
|
||||||
|
$pathBaseSkipped = 0
|
||||||
|
|
||||||
foreach ($el in $allElements) {
|
foreach ($el in $allElements) {
|
||||||
if ($stopped) { break }
|
if ($stopped) { break }
|
||||||
@@ -309,6 +313,11 @@ if (-not $stopped) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# In borrowed forms, skip DataPath check for base elements (id < 1000000)
|
||||||
|
if ($hasBaseForm -and $el.Id) {
|
||||||
|
try { if ([int]$el.Id -lt 1000000) { $pathBaseSkipped++; continue } } catch {}
|
||||||
|
}
|
||||||
|
|
||||||
$dpNode = $node.SelectSingleNode("f:DataPath", $nsMgr)
|
$dpNode = $node.SelectSingleNode("f:DataPath", $nsMgr)
|
||||||
if (-not $dpNode) { continue }
|
if (-not $dpNode) { continue }
|
||||||
|
|
||||||
@@ -328,9 +337,15 @@ if (-not $stopped) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($pathErrors -eq 0 -and $pathChecked -gt 0) {
|
$pathMsg = ""
|
||||||
Report-OK "DataPath references: $pathChecked paths checked"
|
if ($pathChecked -gt 0) { $pathMsg = "$pathChecked paths checked" }
|
||||||
} elseif ($pathChecked -eq 0) {
|
if ($pathBaseSkipped -gt 0) {
|
||||||
|
$skipNote = "$pathBaseSkipped base skipped"
|
||||||
|
$pathMsg = if ($pathMsg) { "$pathMsg, $skipNote" } else { $skipNote }
|
||||||
|
}
|
||||||
|
if ($pathErrors -eq 0 -and $pathMsg) {
|
||||||
|
Report-OK "DataPath references: $pathMsg"
|
||||||
|
} elseif ($pathErrors -eq 0) {
|
||||||
Report-OK "DataPath references: none"
|
Report-OK "DataPath references: none"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user