mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-28 04:55:53 +03:00
fix(help-add): версия формата справки — прежде всего из дескриптора объекта
Справка — тело объекта, а тело и дескриптор платформа загружает только в одной версии формата. Версия выгрузки тут не годится: после мержа веток объект бывает старше выгрузки (2.18 в 2.20), и справка по версии выгрузки вышла бы 2.20 — платформа отвергла бы объект. Версия теперь берётся из дескриптора <объект>.xml, как это уже делает template-add, и только без него — подъёмом от каталога объекта. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b5bdd39689
commit
14d010f4c2
@@ -182,10 +182,18 @@ if (-not (Test-Path $extDir)) {
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Версию ищем от каталога объекта, а не от SrcDir: у внешней обработки корень <Имя>.xml лежит В SrcDir,
|
||||
# и подъём от SrcDir его не видит — справка писалась 2.17 при обработке 2.20, и платформа отказывала
|
||||
# в сборке (тело и дескриптор объекта обязаны быть в одной версии формата).
|
||||
$formatVersion = Detect-FormatVersion (Resolve-Path $objectDir).Path
|
||||
# Справка — тело объекта, а тело и дескриптор платформа загружает только в одной версии формата.
|
||||
# Поэтому версию берём прежде всего из дескриптора <объект>.xml (объект может быть старше выгрузки после
|
||||
# мержа веток), и только без него — подъёмом от каталога объекта. Не от SrcDir: у внешней обработки
|
||||
# корень <Имя>.xml лежит В SrcDir, подъём его не видел, и справка обработки 2.20 писалась 2.17.
|
||||
$formatVersion = $null
|
||||
$ownerXml = "$((Resolve-Path $objectDir).Path).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 }
|
||||
|
||||
# Код языка идёт и в текст XML, и в имя файла страницы, поэтому проверяем его до записи:
|
||||
# пустое значение дало бы файл «.html» и пустой <Page></Page>, разделитель пути — запись мимо
|
||||
|
||||
@@ -347,10 +347,20 @@ def main():
|
||||
print(f"Каталог объекта не найден: {ext_dir}. Проверьте путь ObjectName (например Catalogs/МойСправочник).", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Версию ищем от каталога объекта, а не от SrcDir: у внешней обработки корень <Имя>.xml лежит В SrcDir,
|
||||
# и подъём от SrcDir его не видит — справка писалась 2.17 при обработке 2.20, и платформа отказывала
|
||||
# в сборке (тело и дескриптор объекта обязаны быть в одной версии формата).
|
||||
format_version = detect_format_version(os.path.abspath(object_dir))
|
||||
# Справка — тело объекта, а тело и дескриптор платформа загружает только в одной версии формата.
|
||||
# Поэтому версию берём прежде всего из дескриптора <объект>.xml (объект может быть старше выгрузки после
|
||||
# мержа веток), и только без него — подъёмом от каталога объекта. Не от SrcDir: у внешней обработки
|
||||
# корень <Имя>.xml лежит В SrcDir, подъём его не видел, и справка обработки 2.20 писалась 2.17.
|
||||
format_version = None
|
||||
owner_xml = os.path.abspath(object_dir) + ".xml"
|
||||
if os.path.isfile(owner_xml):
|
||||
with open(owner_xml, "r", encoding="utf-8-sig") as f:
|
||||
owner_head = f.read(2000)
|
||||
m = re.search(r'<MetaDataObject[^>]+version="(\d+\.\d+)"', owner_head)
|
||||
if m:
|
||||
format_version = m.group(1)
|
||||
if not format_version:
|
||||
format_version = detect_format_version(os.path.abspath(object_dir))
|
||||
|
||||
if not is_valid_lang(lang):
|
||||
print(f"Недопустимый код языка: '{lang}'", file=sys.stderr)
|
||||
|
||||
Reference in New Issue
Block a user