From b5bdd39689acae9d2d4bb8b413ea67cc2fdcb63a Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 26 Sep 2026 22:21:09 +0300 Subject: [PATCH] =?UTF-8?q?fix(help-add):=20=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20?= =?UTF-8?q?=E2=80=94=20=D0=B2=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B0=20=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D1=8F=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Версия формата искалась подъёмом от SrcDir, а корень внешней обработки <Имя>.xml лежит в самом SrcDir — подъём его не видел и отдавал дефолт 2.17. Справка к обработке 2.20 выходила со штампом 2.17, и платформа отказывала в сборке: тело объекта и его дескриптор обязаны быть в одной версии формата («Версия формата загружаемого файла … отличается от версии формата ранее загруженных файлов»). Версия теперь ищется от каталога объекта. Кейсы на обработке шли на дефолтной 2.17, где дефолт совпадал с правдой, — добавлен кейс на 2.20; сборка подтверждена на 8.3.27.1859. Co-Authored-By: Claude Opus 5.5 (1M context) --- .claude/skills/help-add/scripts/add-help.ps1 | 9 ++++-- .claude/skills/help-add/scripts/add-help.py | 9 ++++-- .../cases/help-add/help-to-epf-220.json | 21 ++++++++++++++ .../help-to-epf-220/Обработка220.xml | 28 +++++++++++++++++++ .../help-to-epf-220/Обработка220/Ext/Help.xml | 4 +++ .../Обработка220/Ext/Help/ru.html | 11 ++++++++ .../Обработка220/Ext/ObjectModule.bsl | 11 ++++++++ 7 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 tests/skills/cases/help-add/help-to-epf-220.json create mode 100644 tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220.xml create mode 100644 tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help.xml create mode 100644 tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help/ru.html create mode 100644 tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/ObjectModule.bsl diff --git a/.claude/skills/help-add/scripts/add-help.ps1 b/.claude/skills/help-add/scripts/add-help.ps1 index 98936e7ac..397b59efc 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.22 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи) +# help-add v1.23 — 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)] @@ -172,8 +172,6 @@ function Detect-FormatVersion([string]$dir) { return "2.17" } -$formatVersion = Detect-FormatVersion (Resolve-Path $SrcDir).Path - # --- Проверки --- $objectDir = Join-Path $SrcDir $ObjectName @@ -184,6 +182,11 @@ if (-not (Test-Path $extDir)) { exit 1 } +# Версию ищем от каталога объекта, а не от SrcDir: у внешней обработки корень <Имя>.xml лежит В SrcDir, +# и подъём от SrcDir его не видит — справка писалась 2.17 при обработке 2.20, и платформа отказывала +# в сборке (тело и дескриптор объекта обязаны быть в одной версии формата). +$formatVersion = Detect-FormatVersion (Resolve-Path $objectDir).Path + # Код языка идёт и в текст XML, и в имя файла страницы, поэтому проверяем его до записи: # пустое значение дало бы файл «.html» и пустой , разделитель пути — запись мимо # каталога страниц, а зарезервированное имя устройства (nul, con, prn, aux, com1…, lpt1…) на diff --git a/.claude/skills/help-add/scripts/add-help.py b/.claude/skills/help-add/scripts/add-help.py index 2dc17decf..3728cfd34 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.22 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи) +# help-add v1.23 — Add built-in help to 1C object (+write_xml_file/write_utf8_bom: общий эталон записи) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -338,8 +338,6 @@ def main(): lang = args.Lang src_dir = args.SrcDir - format_version = detect_format_version(os.path.abspath(src_dir)) - # --- Checks --- object_dir = os.path.join(src_dir, object_name) @@ -349,6 +347,11 @@ 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)) + if not is_valid_lang(lang): print(f"Недопустимый код языка: '{lang}'", file=sys.stderr) print("Ожидается код вида ru, en (буквы, цифры, дефис, подчёркивание; имена устройств Windows недопустимы)", file=sys.stderr) diff --git a/tests/skills/cases/help-add/help-to-epf-220.json b/tests/skills/cases/help-add/help-to-epf-220.json new file mode 100644 index 000000000..3a383c433 --- /dev/null +++ b/tests/skills/cases/help-add/help-to-epf-220.json @@ -0,0 +1,21 @@ +{ + "name": "Справка к обработке 2.20 — в версии корня обработки, а не дефолтной 2.17", + "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\"" } + ] + } +} diff --git a/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220.xml b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220.xml new file mode 100644 index 000000000..7f51edfd8 --- /dev/null +++ b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220.xml @@ -0,0 +1,28 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Обработка220 + + + ru + Обработка220 + + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help.xml b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help.xml new file mode 100644 index 000000000..9d108f93c --- /dev/null +++ b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help/ru.html b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help/ru.html new file mode 100644 index 000000000..d96697d85 --- /dev/null +++ b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/Help/ru.html @@ -0,0 +1,11 @@ + + + + + + + +

Обработка220

+

Описание.

+ + \ No newline at end of file diff --git a/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/ObjectModule.bsl b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/ObjectModule.bsl new file mode 100644 index 000000000..15543d277 --- /dev/null +++ b/tests/skills/cases/help-add/snapshots/help-to-epf-220/Обработка220/Ext/ObjectModule.bsl @@ -0,0 +1,11 @@ +#Область ОписаниеПеременных + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file