mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-20 01:59:42 +03:00
feat(epf-init,erf-init,form-add,form-compile,template-add,mxl-compile,help-add): версия формата у автономных EPF/ERF
Детекторы версии искали только Configuration.xml, поэтому внутри автономной внешней обработки или отчёта всегда получалось 2.17 — независимо от version в корне самого объекта. Теперь версия наследуется от корня EPF/ERF: подъём по дереву проверяет и <каталог>.xml с корнем ExternalDataProcessor/ExternalReport, а form-add и template-add читают её прямо из файла объекта, с которым работают. Только после этого у epf-init/erf-init появился параметр -FormatVersion (2.17…2.21, дефолт 2.17 — прежнее поведение). Без наследования он дал бы обработку 2.21, внутри которой формы и макеты остаются 2.17. Проверено сквозным прогоном: epf-init -FormatVersion 2.21 → form-add → template-add → mxl-compile, все файлы 2.21 с xmlns:pal, порты идентичны. Снэпшоты role-info/role-validate/cf-edit обновлены — их фикстуры строит role-compile, дрейф только от смены его формата на платформенный. 648/648 ps1, 645/648 py. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
5bcf6d08cd
commit
3ef9e76f03
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.184 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.185 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -6061,6 +6061,16 @@ def emit_properties(lines, props, indent):
|
||||
|
||||
def detect_format_version(d):
|
||||
while d:
|
||||
# Автономная внешняя обработка/отчёт: своего Configuration.xml у неё нет, версию несёт
|
||||
# корень самой обработки. Без этого форма и макет внутри обработки 2.21 писались бы 2.17.
|
||||
ext_path = d + ".xml"
|
||||
if os.path.isfile(ext_path):
|
||||
with open(ext_path, "r", encoding="utf-8-sig") as f:
|
||||
ext_head = f.read(2000)
|
||||
if re.search(r'<(ExternalDataProcessor|ExternalReport)[ >]', ext_head):
|
||||
m = re.search(r'<MetaDataObject[^>]+version="(\d+\.\d+)"', ext_head)
|
||||
if m:
|
||||
return m.group(1)
|
||||
cfg_path = os.path.join(d, "Configuration.xml")
|
||||
if os.path.isfile(cfg_path):
|
||||
with open(cfg_path, "r", encoding="utf-8-sig") as f:
|
||||
|
||||
Reference in New Issue
Block a user