fix(help-add): справка внешней обработки — в версии формата корня обработки

Версия формата искалась подъёмом от 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) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-26 22:21:09 +03:00
co-authored by Claude Opus 5.5
parent 6978318fa1
commit b5bdd39689
7 changed files with 87 additions and 6 deletions
+6 -3
View File
@@ -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)