fix(help-add): ObjectName с завершающей косой чертой — версия справки не терялась

Resolve-Path сохраняет завершающий разделитель: для «Обработка/» дескриптор искался как
«…\Обработка\.xml», не находился, и справка обработки 2.20 снова выходила 2.17. py-порт
(os.path.abspath) разделитель отбрасывал, так что порты расходились. Путь объекта нормализуется.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-27 13:49:12 +03:00
co-authored by Claude Opus 5.5
parent 0791b0cfe1
commit 97e92e084b
7 changed files with 75 additions and 4 deletions
+5 -3
View File
@@ -1,4 +1,4 @@
# help-add v1.23 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
# help-add v1.24 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -187,13 +187,15 @@ if (-not (Test-Path $extDir)) {
# мержа веток), и только без него — подъёмом от каталога объекта. Не от SrcDir: у внешней обработки
# корень <Имя>.xml лежит В SrcDir, подъём его не видел, и справка обработки 2.20 писалась 2.17.
$formatVersion = $null
$ownerXml = "$((Resolve-Path $objectDir).Path).xml"
# Resolve-Path сохраняет завершающий разделитель («Обр/» → «…\Обр\»): без обрезки искался бы «…\Обр\.xml».
$objectFull = (Resolve-Path $objectDir).Path.TrimEnd('\', '/')
$ownerXml = "$objectFull.xml"
if (Test-Path $ownerXml) {
$ownerHead = [System.IO.File]::ReadAllText($ownerXml, [System.Text.Encoding]::UTF8)
$ownerHead = $ownerHead.Substring(0, [Math]::Min(2000, $ownerHead.Length))
if ($ownerHead -match '<MetaDataObject[^>]+version="(\d+\.\d+)"') { $formatVersion = $Matches[1] }
}
if (-not $formatVersion) { $formatVersion = Detect-FormatVersion (Resolve-Path $objectDir).Path }
if (-not $formatVersion) { $formatVersion = Detect-FormatVersion $objectFull }
# Код языка идёт и в текст XML, и в имя файла страницы, поэтому проверяем его до записи:
# пустое значение дало бы файл «.html» и пустой <Page></Page>, разделитель пути — запись мимо
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# help-add v1.23 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
# help-add v1.24 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -0,0 +1,15 @@
{
"name": "Справка к обработке 2.20 при ObjectName с косой чертой на конце — версия корня обработки",
"preRun": [
{
"script": "epf-init/scripts/init",
"args": { "-Name": "Обработка220", "-SrcDir": "{workDir}", "-FormatVersion": "2.20" }
}
],
"params": { "objectName": "Обработка220/" },
"expect": {
"fileContains": [
{ "file": "Обработка220/Ext/Help.xml", "text": "version=\"2.20\"" }
]
}
}
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<ExternalDataProcessor uuid="UUID-001">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>UUID-002</xr:ClassId>
<xr:ObjectId>UUID-003</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.Обработка220" category="Object">
<xr:TypeId>UUID-004</xr:TypeId>
<xr:ValueId>UUID-005</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>Обработка220</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Обработка220</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm/>
<AuxiliaryForm/>
</Properties>
<ChildObjects/>
</ExternalDataProcessor>
</MetaDataObject>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<Help xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
<Page>ru</Page>
</Help>
@@ -0,0 +1,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link>
</head>
<body>
<h1>Обработка220/</h1>
<p>Описание.</p>
</body>
</html>
@@ -0,0 +1,11 @@
#Область ОписаниеПеременных
#КонецОбласти
#Область ПрограммныйИнтерфейс
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти