diff --git a/.claude/skills/form-add/scripts/form-add.ps1 b/.claude/skills/form-add/scripts/form-add.ps1 index f95b94c8..c05a579c 100644 --- a/.claude/skills/form-add/scripts/form-add.ps1 +++ b/.claude/skills/form-add/scripts/form-add.ps1 @@ -1,4 +1,4 @@ -# form-add v1.10 — Add managed form to 1C config object +# form-add v1.11 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -484,7 +484,10 @@ if (-not $childObjects) { exit 1 } -# Добавить
$FormName
+# Добавить
$FormName
— идемпотентно (не дублировать уже зарегистрированную) +$alreadyRegistered = [bool]$childObjects.SelectSingleNode("md:Form[text()='$FormName']", $nsMgr) + +if (-not $alreadyRegistered) { $formElem = $xmlDoc.CreateElement("Form", "http://v8.1c.ru/8.3/MDClasses") $formElem.InnerText = $FormName @@ -538,6 +541,7 @@ if ($insertBefore) { } } } +} # --- SetDefault --- @@ -603,7 +607,11 @@ Write-Host " Metadata: $objDirName\$objBaseName\Forms\$FormName.xml" Write-Host " Form: $objDirName\$objBaseName\Forms\$FormName\Ext\Form.xml" Write-Host " Module: $objDirName\$objBaseName\Forms\$FormName\Ext\Form\Module.bsl" Write-Host "" -Write-Host "Registered:
$FormName
in ChildObjects" +if ($alreadyRegistered) { + Write-Host "Already registered:
$FormName
in ChildObjects (skipped duplicate)" +} else { + Write-Host "Registered:
$FormName
in ChildObjects" +} if ($defaultUpdated) { Write-Host "${defaultPropName}: $defaultValue" } diff --git a/.claude/skills/form-add/scripts/form-add.py b/.claude/skills/form-add/scripts/form-add.py index 80cabd8f..872d52e8 100644 --- a/.claude/skills/form-add/scripts/form-add.py +++ b/.claude/skills/form-add/scripts/form-add.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-add v1.10 — Add managed form to 1C config object +# form-add v1.11 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -592,47 +592,50 @@ def main(): print(f"Не найден элемент ChildObjects в {object_path}", file=sys.stderr) sys.exit(1) - # Add
$FormName
- form_elem = etree.Element(f"{{{ns}}}Form") - form_elem.text = form_name + # Add
$FormName
— idempotent (do not duplicate already-registered form) + already_registered = child_objects.find(f"md:Form[.='{form_name}']", NSMAP) is not None - # Find first