From 8c915df0d95a362a81530efffa6e4ea4ad72bafa Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 14 Aug 2026 13:31:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(cfe-borrow):=20=D0=BF=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D1=82=20=D0=BF=D0=BE=D1=80=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=20=D1=80=D0=B5=D0=BA=D0=B2=D0=B8=D0=B7=D0=B8=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B2=20=D0=BE=D0=B1=D0=BE=D0=BB=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PS вставлял лишнюю строку с табуляцией перед первым , когда дозаписывал реквизиты в заимствованную оболочку с самозакрытым : элемент раскрывался пробельным узлом в DOM, а последующая текстовая вставка добавляла отступ ещё раз. У Конфигуратора в таких файлах пустых строк нет ни одной, py-порт делал правильно. PS сведён к тому же текстовому раскрытию, что и py. Расхождение портов на Document.ВнутреннееПотребление (-BorrowMainAttribute Form) закрыто: выходы отличаются только свежесгенерированными uuid. Co-Authored-By: Claude Opus 5 (1M context) --- .../skills/cfe-borrow/scripts/cfe-borrow.ps1 | 20 +++++++++---------- .../skills/cfe-borrow/scripts/cfe-borrow.py | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index 9a766a1c..eddd9afa 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,4 +1,4 @@ -# cfe-borrow v1.26 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.27 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][string]$ExtensionPath, @@ -1571,14 +1571,6 @@ function Merge-AttributesIntoObject { $added = 0 foreach ($attr in $attrsToAdd) { if ($existingNames.ContainsKey($attr.Name)) { continue } - $attrXml = Build-AdoptedAttributeXml $attr.Name $attr.Uuid $attr.TypeXml "`t`t`t" - - # Expand self-closing ChildObjects if needed - if (-not $childObjs.HasChildNodes -or $childObjs.IsEmpty) { - $closeWs = $objDoc.CreateWhitespace("`r`n`t`t") - $childObjs.AppendChild($closeWs) | Out-Null - } - $added++ } @@ -1605,8 +1597,14 @@ function Merge-AttributesIntoObject { if ($text3.Length -gt 0 -and $text3[0] -eq [char]0xFEFF) { $text3 = $text3.Substring(1) } $text3 = $text3.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Insert attributes before - $text3 = $text3 -replace '', "${allAttrXml}`r`n`t`t" + # Insert attributes — handle both and .... + # Самозакрытый элемент раскрывается здесь же, а не пробельным узлом в DOM: тот давал + # лишнюю строку с табуляцией перед первым (у Конфигуратора пустых строк нет). + if ($text3 -match '') { + $text3 = [regex]::Replace($text3, '', "${allAttrXml}`r`n`t`t") + } else { + $text3 = $text3.Replace('', "${allAttrXml}`r`n`t`t") + } # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Внутри # CDATA/комментария ` />` может быть содержимым (там `>` не экранируется), diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index 8eaa312f..dc193fcf 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-borrow v1.26 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.27 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse