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