mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-08 03:00:52 +03:00
fix(meta-edit): проверка «ребёнок уже есть» не видела узлов без Properties
Get-AllChildNames собирал имена только из Properties/Name и пропускал детей, которые регистрируются голым текстом: <Table>Имя</Table>, <Form>Имя</Form>, <Template>Имя</Template>. Из-за этого проверка на дубликат была мёртвой: после удаления файла таблицы повторное добавление отвечало «Added: 1» и клало в ChildObjects второй такой же <Table>. Теперь имя берётся из текста узла, если у ребёнка нет Properties. Кейс воспроизводит исходный сценарий: добавить таблицу, удалить её файл, добавить снова — второй записи быть не должно. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AtG4qGvZocJSWLAsbHpBCQ
This commit is contained in:
co-authored by
Claude Opus 5
parent
8d1670468a
commit
0dac85946f
@@ -1,4 +1,4 @@
|
||||
# meta-edit v1.46 — Edit existing 1C metadata object XML
|
||||
# meta-edit v1.47 — Edit existing 1C metadata object XML
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
param(
|
||||
@@ -1505,7 +1505,14 @@ function Get-AllChildNames {
|
||||
$propsEl = $gc; break
|
||||
}
|
||||
}
|
||||
if (-not $propsEl) { continue }
|
||||
# Часть детей регистрируется голым текстом, без <Properties>: <Table>Имя</Table>,
|
||||
# <Form>Имя</Form>, <Template>Имя</Template>. Пропуская их, проверка «уже существует»
|
||||
# становилась мёртвой — повторное добавление давало второй такой же узел.
|
||||
if (-not $propsEl) {
|
||||
$n = $child.InnerText.Trim()
|
||||
if ($n) { $names[$n] = $child.LocalName }
|
||||
continue
|
||||
}
|
||||
foreach ($gc in $propsEl.ChildNodes) {
|
||||
if ($gc.NodeType -eq 'Element' -and $gc.LocalName -eq "Name") {
|
||||
$n = $gc.InnerText.Trim()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-edit v1.46 — Edit existing 1C metadata object XML
|
||||
# meta-edit v1.47 — Edit existing 1C metadata object XML
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -1522,7 +1522,13 @@ def get_all_child_names():
|
||||
if localname(gc) == "Properties":
|
||||
props_el = gc
|
||||
break
|
||||
# Часть детей регистрируется голым текстом, без <Properties>: <Table>Имя</Table>,
|
||||
# <Form>Имя</Form>, <Template>Имя</Template>. Пропуская их, проверка «уже существует»
|
||||
# становилась мёртвой — повторное добавление давало второй такой же узел.
|
||||
if props_el is None:
|
||||
n = (child.text or "").strip()
|
||||
if n:
|
||||
names[n] = localname(child)
|
||||
continue
|
||||
for gc in props_el:
|
||||
if localname(gc) == "Name":
|
||||
|
||||
Reference in New Issue
Block a user