mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-28 13:05:53 +03:00
fix(cfe-borrow): картинка элемента копируется только по голому имени файла
Значение xr:Abs и имя элемента с разделителем пути или «..» пропускаются с предупреждением: иначе чтение и запись уходили за пределы Items, а порты расходились на имени со «/». Источник-каталог больше не принимается за файл картинки в PS-порте (как и в py). Кейсы: предупреждение о картинке, которой нет в источнике; повторное заимствование проверяет и вывод «Preserved existing». Co-Authored-By: AndromanPro <AndromanPro@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
AndromanPro
Claude Opus 5.5
parent
651065093e
commit
69745af336
@@ -1306,6 +1306,12 @@ function Borrow-Form {
|
||||
$picElName = $picOwner.GetAttribute("name")
|
||||
$picFileName = $absNode.InnerText.Trim()
|
||||
if (-not $picElName -or -not $picFileName) { continue }
|
||||
# Платформа пишет сюда голое имя файла. Иное (путь, «..») — не наша выгрузка: мимо Items не ходим.
|
||||
if ($picElName -match '[\\/]' -or $picFileName -match '[\\/]' -or
|
||||
$picElName -match '^\.\.?$' -or $picFileName -match '^\.\.?$') {
|
||||
Warn " Картинка элемента пропущена — не имя файла: $picElName / $picFileName"
|
||||
continue
|
||||
}
|
||||
$rel = "$picElName/$picFileName"
|
||||
if (-not $picRels.Contains($rel)) { $picRels.Add($rel) }
|
||||
}
|
||||
@@ -1321,7 +1327,7 @@ function Borrow-Form {
|
||||
Info " Preserved existing: $dstPic"
|
||||
continue
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath $srcPic)) {
|
||||
if (-not (Test-Path -LiteralPath $srcPic -PathType Leaf)) {
|
||||
Warn " Картинка элемента не найдена в источнике: $srcPic"
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -2224,6 +2224,11 @@ def main():
|
||||
pic_file_name = (abs_node.text or "").strip()
|
||||
if not pic_el_name or not pic_file_name:
|
||||
continue
|
||||
# Платформа пишет сюда голое имя файла. Иное (путь, «..») — не наша выгрузка: мимо Items не ходим.
|
||||
if ("\\" in pic_el_name or "\\" in pic_file_name or "/" in pic_el_name or "/" in pic_file_name
|
||||
or pic_el_name in (".", "..") or pic_file_name in (".", "..")):
|
||||
warn(f" Картинка элемента пропущена — не имя файла: {pic_el_name} / {pic_file_name}")
|
||||
continue
|
||||
rel = f"{pic_el_name}/{pic_file_name}"
|
||||
if rel not in pic_rels:
|
||||
pic_rels.append(rel)
|
||||
|
||||
Reference in New Issue
Block a user