diff --git a/.claude/skills/cf-edit/scripts/cf-edit.ps1 b/.claude/skills/cf-edit/scripts/cf-edit.ps1 index 6d854bcb..49bfa74e 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.ps1 +++ b/.claude/skills/cf-edit/scripts/cf-edit.ps1 @@ -1,4 +1,4 @@ -# cf-edit v1.14 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.15 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][Alias('Path')][string]$ConfigPath, @@ -697,7 +697,8 @@ $bodyBlock$declarations $caiPath = Join-Path $extDir "ClientApplicationInterface.xml" $utf8Bom = New-Object System.Text.UTF8Encoding($true) # Файл создаём мы — канон: CRLF в разделителях, без перевода строки в конце. - [System.IO.File]::WriteAllText($caiPath, (($caiXml -replace "`r`n", "`n") -replace "`n", "`r`n").TrimEnd("`r", "`n"), $utf8Bom) + $caiXml = ($caiXml -replace "`r`n", "`n") -replace "`n", "`r`n" + [System.IO.File]::WriteAllText($caiPath, $caiXml.TrimEnd("`r", "`n"), $utf8Bom) $script:modifyCount++ Info "Wrote panel layout: $caiPath" } @@ -887,7 +888,8 @@ $rightXml $hpPath = Join-Path $extDir "HomePageWorkArea.xml" $utf8Bom = New-Object System.Text.UTF8Encoding($true) # Файл создаём мы — канон: CRLF в разделителях, без перевода строки в конце. - [System.IO.File]::WriteAllText($hpPath, (($hpXml -replace "`r`n", "`n") -replace "`n", "`r`n").TrimEnd("`r", "`n"), $utf8Bom) + $hpXml = ($hpXml -replace "`r`n", "`n") -replace "`n", "`r`n" + [System.IO.File]::WriteAllText($hpPath, $hpXml.TrimEnd("`r", "`n"), $utf8Bom) $script:modifyCount++ Info "Wrote home page layout: $hpPath" } @@ -989,8 +991,9 @@ $memStream.Close() $text = [System.Text.Encoding]::UTF8.GetString($bytes) if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: -# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($text -notmatch '', '/>') } # Возвращаем EOL исходного файла: вставки собраны с CRLF, а сам документ мог быть LF. $text = ($text -replace "`r`n", "`n") -replace "`n", $script:srcEol diff --git a/.claude/skills/cf-edit/scripts/cf-edit.py b/.claude/skills/cf-edit/scripts/cf-edit.py index 6f3aff77..9dc3439f 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.py +++ b/.claude/skills/cf-edit/scripts/cf-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-edit v1.14 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.15 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index ccf7e83e..799740d9 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.13 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.14 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][string]$ExtensionPath, @@ -917,9 +917,10 @@ function Borrow-Form { New-Item -ItemType Directory -Path $formXmlDir -Force | Out-Null } $formXmlFile = Join-Path $formXmlDir "Form.xml" - # Куски формы берутся из OuterXml исходного документа, а он — как и XmlWriter — - # отдаёт ``; Конфигуратор пишет ``. Гард на CDATA/комментарии: только там - # `>` не экранируется, и ` />` может быть содержимым, а не концом тега. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. + # Здесь источник не XmlWriter, а OuterXml исходного документа — спацовывает так же. $formXmlText = $formXmlSb.ToString() if ($formXmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($formXmlFile, $formXmlText, $enc) @@ -1028,8 +1029,9 @@ function Register-FormInObject { $text2 = [System.Text.Encoding]::UTF8.GetString($bytes2) if ($text2.Length -gt 0 -and $text2[0] -eq [char]0xFEFF) { $text2 = $text2.Substring(1) } $text2 = $text2.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: - # только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($text2 -notmatch '', '/>') } $utf8Bom2 = New-Object System.Text.UTF8Encoding($true) @@ -1421,8 +1423,10 @@ function Merge-AttributesIntoObject { # Insert attributes before $text3 = $text3 -replace '', "${allAttrXml}`r`n`t`t" - # Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. После вставки реквизитов, - # чтобы накрыть и их. Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. + # Стоит ПОСЛЕ вставки реквизитов, чтобы накрыть и их. if ($text3 -notmatch '', '/>') } $utf8Bom3 = New-Object System.Text.UTF8Encoding($true) @@ -1889,8 +1893,9 @@ $memStream.Close() $text = [System.Text.Encoding]::UTF8.GetString($bytes) if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: -# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($text -notmatch '', '/>') } $utf8Bom = New-Object System.Text.UTF8Encoding($true) diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index bd94c3fd..b6b1612b 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.13 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.14 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1017,7 +1017,7 @@ def main(): return # newline="" => без трансляции: иначе CRLF молча схлопнется в LF при чтении - # и файл будет переписан в LF (#44/#46/#47). + # и файл будет переписан в LF. with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh: obj_content = fh.read() @@ -1078,7 +1078,7 @@ def main(): # Read existing object XML (needed for dedup + enrichment) # newline="" => без трансляции: иначе CRLF молча схлопнется в LF при чтении - # и файл будет переписан в LF (#44/#46/#47). + # и файл будет переписан в LF. with open(obj_file, "r", encoding="utf-8-sig", newline="") as fh: obj_content = fh.read() diff --git a/.claude/skills/form-add/scripts/form-add.ps1 b/.claude/skills/form-add/scripts/form-add.ps1 index 042bd162..e396eb76 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.17 — Add managed form to 1C config object +# form-add v1.18 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -602,8 +602,7 @@ $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false -# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — XmlWriter -# отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. +# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $xmlDoc.Save($writer) @@ -613,7 +612,9 @@ $xmlText = [System.Text.Encoding]::UTF8.GetString($memStream.ToArray()) $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Гард на CDATA/комментарии: только там `>` не экранируется, и ` />` может быть содержимым. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($objectXmlFull.Path, $xmlText, $encBom) diff --git a/.claude/skills/form-add/scripts/form-add.py b/.claude/skills/form-add/scripts/form-add.py index a02b3f68..0b0dce0c 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.17 — Add managed form to 1C config object +# form-add v1.18 — Add managed form to 1C config object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 77643cba..8d4adb51 100644 --- a/.claude/skills/form-compile/scripts/form-compile.ps1 +++ b/.claude/skills/form-compile/scripts/form-compile.ps1 @@ -1,4 +1,4 @@ -# form-compile v1.180 — Compile 1C managed form from JSON or object metadata +# form-compile v1.181 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -6677,8 +6677,7 @@ if ($formsLeaf -eq 'Forms') { $regSettings = New-Object System.Xml.XmlWriterSettings $regSettings.Encoding = $regEnc $regSettings.Indent = $false - # Через MemoryStream: нужен шаг пост-обработки строки — XmlWriter отдаёт - # `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $regMem = New-Object System.IO.MemoryStream $regWriter = [System.Xml.XmlWriter]::Create($regMem, $regSettings) $objDoc.Save($regWriter) @@ -6688,7 +6687,9 @@ if ($formsLeaf -eq 'Forms') { $regMem.Close() if ($regText.Length -gt 0 -and $regText[0] -eq [char]0xFEFF) { $regText = $regText.Substring(1) } $regText = $regText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($regText -notmatch '', '/>') } [System.IO.File]::WriteAllText($objectXmlPath, $regText, $regEnc) diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index fde819af..7bfa6139 100644 --- a/.claude/skills/form-compile/scripts/form-compile.py +++ b/.claude/skills/form-compile/scripts/form-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-compile v1.180 — Compile 1C managed form from JSON or object metadata +# form-compile v1.181 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy diff --git a/.claude/skills/form-edit/scripts/form-edit.ps1 b/.claude/skills/form-edit/scripts/form-edit.ps1 index 09e71fda..b5e3c064 100644 --- a/.claude/skills/form-edit/scripts/form-edit.ps1 +++ b/.claude/skills/form-edit/scripts/form-edit.ps1 @@ -1,4 +1,4 @@ -# form-edit v1.7 — Edit 1C managed form elements +# form-edit v1.8 — Edit 1C managed form elements # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1387,8 +1387,9 @@ if ($def.elementEvents -and $def.elementEvents.Count -gt 0) { $content = $xmlDoc.OuterXml # Ensure encoding declaration is uppercase UTF-8 $content = $content -replace '^<\?xml version="1.0" encoding="utf-8"\?>', '' -# Пустой элемент: OuterXml (как и XmlWriter) пишет ``, Конфигуратор — ``. -# Гард на CDATA/комментарии: только там ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($content -notmatch '', '/>') } $enc = New-Object System.Text.UTF8Encoding($true) diff --git a/.claude/skills/form-edit/scripts/form-edit.py b/.claude/skills/form-edit/scripts/form-edit.py index 1d0c6daa..c6aa3123 100644 --- a/.claude/skills/form-edit/scripts/form-edit.py +++ b/.claude/skills/form-edit/scripts/form-edit.py @@ -1,4 +1,4 @@ -# form-edit v1.7 — Edit 1C managed form elements (Python port) +# form-edit v1.8 — Edit 1C managed form elements (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json diff --git a/.claude/skills/form-remove/scripts/remove-form.ps1 b/.claude/skills/form-remove/scripts/remove-form.ps1 index 72e8c24d..9183acf2 100644 --- a/.claude/skills/form-remove/scripts/remove-form.ps1 +++ b/.claude/skills/form-remove/scripts/remove-form.ps1 @@ -1,4 +1,4 @@ -# form-remove v1.5 — Remove form from 1C object +# form-remove v1.6 — Remove form from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -84,8 +84,7 @@ $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false -# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — XmlWriter -# отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. +# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $xmlDoc.Save($writer) @@ -95,7 +94,9 @@ $xmlText = [System.Text.Encoding]::UTF8.GetString($memStream.ToArray()) $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Гард на CDATA/комментарии: только там `>` не экранируется, и ` />` может быть содержимым. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($rootXmlFull.Path, $xmlText, $encBom) diff --git a/.claude/skills/form-remove/scripts/remove-form.py b/.claude/skills/form-remove/scripts/remove-form.py index 90a01c09..0c4d21d4 100644 --- a/.claude/skills/form-remove/scripts/remove-form.py +++ b/.claude/skills/form-remove/scripts/remove-form.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-remove v1.5 — Remove form from 1C object +# form-remove v1.6 — Remove form from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/help-add/scripts/add-help.ps1 b/.claude/skills/help-add/scripts/add-help.ps1 index 15a60f38..23447523 100644 --- a/.claude/skills/help-add/scripts/add-help.ps1 +++ b/.claude/skills/help-add/scripts/add-help.ps1 @@ -1,4 +1,4 @@ -# help-add v1.13 — Add built-in help to 1C object +# help-add v1.14 — Add built-in help to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -266,8 +266,7 @@ if (Test-Path $formsDir) { $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false - # Через MemoryStream: нужен шаг пост-обработки строки — XmlWriter отдаёт - # `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $xmlDoc.Save($writer) @@ -277,7 +276,9 @@ if (Test-Path $formsDir) { $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($formMeta.FullName, $xmlText, $encBom) diff --git a/.claude/skills/help-add/scripts/add-help.py b/.claude/skills/help-add/scripts/add-help.py index 4384fab5..f28844f8 100644 --- a/.claude/skills/help-add/scripts/add-help.py +++ b/.claude/skills/help-add/scripts/add-help.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# help-add v1.13 — Add built-in help to 1C object +# help-add v1.14 — Add built-in help to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/interface-edit/scripts/interface-edit.ps1 b/.claude/skills/interface-edit/scripts/interface-edit.ps1 index 18a02d2a..e27aa13d 100644 --- a/.claude/skills/interface-edit/scripts/interface-edit.ps1 +++ b/.claude/skills/interface-edit/scripts/interface-edit.ps1 @@ -1,4 +1,4 @@ -# interface-edit v1.11 — Edit 1C CommandInterface.xml +# interface-edit v1.12 — Edit 1C CommandInterface.xml # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][Alias('Path')][string]$CIPath, @@ -679,8 +679,9 @@ $memStream.Close() $text = [System.Text.Encoding]::UTF8.GetString($bytes) if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: -# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($text -notmatch '', '/>') } $utf8Bom = New-Object System.Text.UTF8Encoding($true) diff --git a/.claude/skills/interface-edit/scripts/interface-edit.py b/.claude/skills/interface-edit/scripts/interface-edit.py index 1bcdd521..f3328c0d 100644 --- a/.claude/skills/interface-edit/scripts/interface-edit.py +++ b/.claude/skills/interface-edit/scripts/interface-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# interface-edit v1.11 — Edit 1C CommandInterface.xml +# interface-edit v1.12 — Edit 1C CommandInterface.xml # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -442,7 +442,7 @@ def main(): # существующего файла, наоборот, наследует его стиль — это делает # save_xml_bom через _detect_xml_style.) newline="" обязателен: без него # текстовый режим дал бы CRLF на Windows и LF на macOS. - empty_ci = empty_ci.replace("\r\n", "\n").replace("\n", "\r\n") + empty_ci = empty_ci.replace("\r\n", "\n").replace("\n", "\r\n").rstrip("\r\n") with open(ci_path, "w", encoding="utf-8-sig", newline="") as fh: fh.write(empty_ci) print(f"[INFO] Created new CommandInterface.xml: {ci_path}") diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 8f266894..1b43f173 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.81 — Compile 1C metadata object from JSON +# meta-compile v1.82 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -5024,8 +5024,9 @@ if (Test-Path $configXmlPath) { $memStream.Close() if ($cfgText.Length -gt 0 -and $cfgText[0] -eq [char]0xFEFF) { $cfgText = $cfgText.Substring(1) } $cfgText = $cfgText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там `>` не экранируется, и ` />` может - # быть содержимым, а не концом тега. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($cfgText -notmatch '', '/>') } [System.IO.File]::WriteAllText($configXmlPath, $cfgText, (New-Object System.Text.UTF8Encoding($true))) diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index 2dbcce3a..cd44b08c 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.81 — Compile 1C metadata object from JSON +# meta-compile v1.82 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1 index 5cf448b4..2fd4f94b 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.ps1 +++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1 @@ -1,4 +1,4 @@ -# meta-edit v1.27 — Edit existing 1C metadata object XML +# meta-edit v1.28 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -3209,8 +3209,9 @@ if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: -# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($text -notmatch '', '/>') } # Write with BOM diff --git a/.claude/skills/meta-edit/scripts/meta-edit.py b/.claude/skills/meta-edit/scripts/meta-edit.py index de20f404..9933adae 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.py +++ b/.claude/skills/meta-edit/scripts/meta-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-edit v1.27 — Edit existing 1C metadata object XML +# meta-edit v1.28 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/meta-remove/scripts/meta-remove.ps1 b/.claude/skills/meta-remove/scripts/meta-remove.ps1 index efece15a..ca23349d 100644 --- a/.claude/skills/meta-remove/scripts/meta-remove.ps1 +++ b/.claude/skills/meta-remove/scripts/meta-remove.ps1 @@ -1,4 +1,4 @@ -# meta-remove v1.6 — Remove metadata object from 1C configuration dump +# meta-remove v1.7 — Remove metadata object from 1C configuration dump # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -493,9 +493,7 @@ if (-not $cfgNode) { # Save Configuration.xml if ($actions -gt 0 -and -not $DryRun) { $enc = New-Object System.Text.UTF8Encoding $true - # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — - # XmlWriter отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет - # `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $enc $settings.Indent = $false @@ -508,7 +506,9 @@ if (-not $cfgNode) { $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($configXml, $xmlText, $enc) Write-Host "[OK] Configuration.xml saved" @@ -574,8 +574,7 @@ function Remove-FromSubsystems { if ($modified -and -not $DryRun) { $enc = New-Object System.Text.UTF8Encoding $true - # Через MemoryStream: нужен шаг пост-обработки строки — XmlWriter отдаёт - # `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $enc $settings.Indent = $false @@ -588,7 +587,9 @@ function Remove-FromSubsystems { $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($xmlFile.FullName, $xmlText, $enc) } diff --git a/.claude/skills/meta-remove/scripts/meta-remove.py b/.claude/skills/meta-remove/scripts/meta-remove.py index f939af0b..1da00b7b 100644 --- a/.claude/skills/meta-remove/scripts/meta-remove.py +++ b/.claude/skills/meta-remove/scripts/meta-remove.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-remove v1.6 — Remove metadata object from 1C configuration dump +# meta-remove v1.7 — Remove metadata object from 1C configuration dump # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/role-compile/scripts/role-compile.ps1 b/.claude/skills/role-compile/scripts/role-compile.ps1 index c9fb0006..e83674ce 100644 --- a/.claude/skills/role-compile/scripts/role-compile.ps1 +++ b/.claude/skills/role-compile/scripts/role-compile.ps1 @@ -1,4 +1,4 @@ -# role-compile v1.14 — Compile 1C role from JSON +# role-compile v1.15 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -856,9 +856,7 @@ if (Test-Path $configXmlPath) { $cfgSettings = New-Object System.Xml.XmlWriterSettings $cfgSettings.Encoding = New-Object System.Text.UTF8Encoding($true) $cfgSettings.Indent = $false - # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — - # XmlWriter отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет - # `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $cfgSettings) $configDoc.Save($writer) @@ -868,7 +866,9 @@ if (Test-Path $configXmlPath) { $memStream.Close() if ($cfgText.Length -gt 0 -and $cfgText[0] -eq [char]0xFEFF) { $cfgText = $cfgText.Substring(1) } $cfgText = $cfgText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($cfgText -notmatch '', '/>') } [System.IO.File]::WriteAllText($configXmlPath, $cfgText, (New-Object System.Text.UTF8Encoding($true))) diff --git a/.claude/skills/role-compile/scripts/role-compile.py b/.claude/skills/role-compile/scripts/role-compile.py index 9f8235c6..73763fcf 100644 --- a/.claude/skills/role-compile/scripts/role-compile.py +++ b/.claude/skills/role-compile/scripts/role-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# role-compile v1.14 — Compile 1C role from JSON +# role-compile v1.15 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -798,7 +798,7 @@ def main(): if os.path.exists(config_xml_path): # newline='' => без трансляции переводов строк: иначе CRLF молча схлопнется - # в LF при чтении и файл будет переписан в LF (#44/#46/#47). + # в LF при чтении и файл будет переписан в LF. with open(config_xml_path, 'r', encoding='utf-8-sig', newline='') as f: raw_text = f.read() diff --git a/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 b/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 index 3f2d0285..34b70235 100644 --- a/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 +++ b/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 @@ -1,4 +1,4 @@ -# subsystem-compile v1.15 — Create 1C subsystem from JSON definition +# subsystem-compile v1.16 — Create 1C subsystem from JSON definition # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -657,8 +657,9 @@ if ($parentXmlPath -and (Test-Path $parentXmlPath)) { $text = [System.Text.Encoding]::UTF8.GetString($bytes) if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: - # только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($text -notmatch '', '/>') } [System.IO.File]::WriteAllText($parentXmlPath, $text, $utf8Bom) diff --git a/.claude/skills/subsystem-compile/scripts/subsystem-compile.py b/.claude/skills/subsystem-compile/scripts/subsystem-compile.py index e1c6ddef..873762b7 100644 --- a/.claude/skills/subsystem-compile/scripts/subsystem-compile.py +++ b/.claude/skills/subsystem-compile/scripts/subsystem-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# subsystem-compile v1.15 — Create 1C subsystem from JSON definition +# subsystem-compile v1.16 — Create 1C subsystem from JSON definition # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -562,7 +562,7 @@ def main(): if parent_xml_path and os.path.exists(parent_xml_path): # newline='' => без трансляции переводов строк: иначе CRLF молча схлопнется - # в LF при чтении и файл будет переписан в LF (#44/#46/#47). + # в LF при чтении и файл будет переписан в LF. with open(parent_xml_path, 'r', encoding='utf-8-sig', newline='') as f: raw_text = f.read() diff --git a/.claude/skills/subsystem-edit/scripts/subsystem-edit.ps1 b/.claude/skills/subsystem-edit/scripts/subsystem-edit.ps1 index b2d4e770..cb77e17b 100644 --- a/.claude/skills/subsystem-edit/scripts/subsystem-edit.ps1 +++ b/.claude/skills/subsystem-edit/scripts/subsystem-edit.ps1 @@ -1,4 +1,4 @@ -# subsystem-edit v1.11 — Edit existing 1C subsystem XML +# subsystem-edit v1.12 — Edit existing 1C subsystem XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][Alias('Path')][string]$SubsystemPath, @@ -655,8 +655,9 @@ $memStream.Close() $text = [System.Text.Encoding]::UTF8.GetString($bytes) if ($text.Length -gt 0 -and $text[0] -eq [char]0xFEFF) { $text = $text.Substring(1) } $text = $text.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Пустой элемент: XmlWriter пишет ``, Конфигуратор — ``. Гард на CDATA/комментарии: -# только там `>` не экранируется, и ` />` может быть содержимым, а не концом тега. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($text -notmatch '', '/>') } $utf8Bom = New-Object System.Text.UTF8Encoding($true) diff --git a/.claude/skills/subsystem-edit/scripts/subsystem-edit.py b/.claude/skills/subsystem-edit/scripts/subsystem-edit.py index 7bd0da1f..b4011370 100644 --- a/.claude/skills/subsystem-edit/scripts/subsystem-edit.py +++ b/.claude/skills/subsystem-edit/scripts/subsystem-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# subsystem-edit v1.11 — Edit existing 1C subsystem XML +# subsystem-edit v1.12 — Edit existing 1C subsystem XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/template-add/scripts/add-template.ps1 b/.claude/skills/template-add/scripts/add-template.ps1 index b0229cf7..b6b35fa0 100644 --- a/.claude/skills/template-add/scripts/add-template.ps1 +++ b/.claude/skills/template-add/scripts/add-template.ps1 @@ -1,4 +1,4 @@ -# template-add v1.15 — Add template to 1C object +# template-add v1.16 — Add template to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -403,8 +403,7 @@ $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false -# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — XmlWriter -# отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. +# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $xmlDoc.Save($writer) @@ -414,7 +413,9 @@ $xmlText = [System.Text.Encoding]::UTF8.GetString($memStream.ToArray()) $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Гард на CDATA/комментарии: только там `>` не экранируется, и ` />` может быть содержимым. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($rootXmlFull.Path, $xmlText, $encBom) diff --git a/.claude/skills/template-add/scripts/add-template.py b/.claude/skills/template-add/scripts/add-template.py index fe51006f..f2d46ef4 100644 --- a/.claude/skills/template-add/scripts/add-template.py +++ b/.claude/skills/template-add/scripts/add-template.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# template-add v1.15 — Add template to 1C object +# template-add v1.16 — Add template to 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/template-remove/scripts/remove-template.ps1 b/.claude/skills/template-remove/scripts/remove-template.ps1 index 3be48b15..fea617c0 100644 --- a/.claude/skills/template-remove/scripts/remove-template.ps1 +++ b/.claude/skills/template-remove/scripts/remove-template.ps1 @@ -1,4 +1,4 @@ -# template-remove v1.4 — Remove template from 1C object +# template-remove v1.5 — Remove template from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -81,8 +81,7 @@ $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false -# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — XmlWriter -# отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. +# Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $xmlDoc.Save($writer) @@ -92,7 +91,9 @@ $xmlText = [System.Text.Encoding]::UTF8.GetString($memStream.ToArray()) $memStream.Close() if ($xmlText.Length -gt 0 -and $xmlText[0] -eq [char]0xFEFF) { $xmlText = $xmlText.Substring(1) } $xmlText = $xmlText.Replace('encoding="utf-8"', 'encoding="UTF-8"') -# Гард на CDATA/комментарии: только там `>` не экранируется, и ` />` может быть содержимым. +# Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на +# CDATA/комментарии: только там `>` не экранируется, и ` />` может быть +# содержимым, а не концом тега. if ($xmlText -notmatch '', '/>') } [System.IO.File]::WriteAllText($rootXmlFull.Path, $xmlText, $encBom) diff --git a/.claude/skills/template-remove/scripts/remove-template.py b/.claude/skills/template-remove/scripts/remove-template.py index cad5c611..069c925b 100644 --- a/.claude/skills/template-remove/scripts/remove-template.py +++ b/.claude/skills/template-remove/scripts/remove-template.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# template-remove v1.4 — Remove template from 1C object +# template-remove v1.5 — Remove template from 1C object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse diff --git a/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 b/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 index 2475cec6..e592952a 100644 --- a/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 +++ b/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 @@ -1,4 +1,4 @@ -# xdto-compile v1.4 — Build a 1C XDTO package from an XML Schema (XSD) +# xdto-compile v1.5 — Build a 1C XDTO package from an XML Schema (XSD) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory=$true, ParameterSetName='File')] @@ -948,9 +948,7 @@ if (Test-Path $configXmlPath) { $cfgSettings = New-Object System.Xml.XmlWriterSettings $cfgSettings.Encoding = New-Object System.Text.UTF8Encoding($true) $cfgSettings.Indent = $false - # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — - # XmlWriter отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет - # `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $cfgSettings) $configDoc.Save($writer) @@ -960,7 +958,9 @@ if (Test-Path $configXmlPath) { $memStream.Close() if ($cfgText.Length -gt 0 -and $cfgText[0] -eq [char]0xFEFF) { $cfgText = $cfgText.Substring(1) } $cfgText = $cfgText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($cfgText -notmatch '', '/>') } [System.IO.File]::WriteAllText($configXmlPath, $cfgText, (New-Object System.Text.UTF8Encoding($true))) $regResult = "added" diff --git a/.claude/skills/xdto-compile/scripts/xdto-compile.py b/.claude/skills/xdto-compile/scripts/xdto-compile.py index ad4286c1..e75a7192 100644 --- a/.claude/skills/xdto-compile/scripts/xdto-compile.py +++ b/.claude/skills/xdto-compile/scripts/xdto-compile.py @@ -1,4 +1,4 @@ -# xdto-compile v1.4 — Build a 1C XDTO package from an XML Schema (XSD) (Python port) +# xdto-compile v1.5 — Build a 1C XDTO package from an XML Schema (XSD) (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json diff --git a/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 b/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 index 4537ec21..11534cb7 100644 --- a/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 +++ b/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 @@ -1,4 +1,4 @@ -# xdto-edit v1.2 — Point edits of a 1C XDTO package +# xdto-edit v1.3 — Point edits of a 1C XDTO package # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory=$true)] @@ -221,9 +221,7 @@ function Edit-Metadata([string]$field, [string]$newValue) { $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = $encBom $settings.Indent = $false - # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки — - # XmlWriter отдаёт `encoding="utf-8"` и ``, Конфигуратор пишет - # `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $memStream = New-Object System.IO.MemoryStream $writer = [System.Xml.XmlWriter]::Create($memStream, $settings) $doc.Save($writer) @@ -233,7 +231,9 @@ function Edit-Metadata([string]$field, [string]$newValue) { $memStream.Close() if ($mdText.Length -gt 0 -and $mdText[0] -eq [char]0xFEFF) { $mdText = $mdText.Substring(1) } $mdText = $mdText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($mdText -notmatch '', '/>') } [System.IO.File]::WriteAllText($mdFile, $mdText, $encBom) } @@ -263,8 +263,7 @@ function Rename-Package([string]$newName) { if ($found) { $s = New-Object System.Xml.XmlWriterSettings $s.Encoding = $encBom; $s.Indent = $false - # Через MemoryStream: нужен шаг пост-обработки строки — XmlWriter отдаёт - # `encoding="utf-8"` и ``, Конфигуратор пишет `encoding="UTF-8"` и ``. + # Через MemoryStream, а не прямо в файл: нужен шаг пост-обработки строки. $mem = New-Object System.IO.MemoryStream $w = [System.Xml.XmlWriter]::Create($mem, $s) $cfg.Save($w); $w.Flush(); $w.Close() @@ -272,7 +271,9 @@ function Rename-Package([string]$newName) { $mem.Close() if ($cfgText.Length -gt 0 -and $cfgText[0] -eq [char]0xFEFF) { $cfgText = $cfgText.Substring(1) } $cfgText = $cfgText.Replace('encoding="utf-8"', 'encoding="UTF-8"') - # Гард на CDATA/комментарии: только там ` />` может быть содержимым. + # Пустой элемент: XmlWriter отдаёт ``, Конфигуратор пишет ``. Гард на + # CDATA/комментарии: только там `>` не экранируется, и ` />` может быть + # содержимым, а не концом тега. if ($cfgText -notmatch '', '/>') } [System.IO.File]::WriteAllText($configXml, $cfgText, $encBom) Write-Host " Configuration.xml: переименован в $newName" diff --git a/.claude/skills/xdto-edit/scripts/xdto-edit.py b/.claude/skills/xdto-edit/scripts/xdto-edit.py index 58bd010f..6c1507ad 100644 --- a/.claude/skills/xdto-edit/scripts/xdto-edit.py +++ b/.claude/skills/xdto-edit/scripts/xdto-edit.py @@ -1,4 +1,4 @@ -# xdto-edit v1.2 — Point edits of a 1C XDTO package (Python port) +# xdto-edit v1.3 — Point edits of a 1C XDTO package (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json