mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-18 17:20:22 +03:00
fix(*-validate,*-init): проверенный диапазон версий формата 2.17–2.21
Валидаторы объявляли «ожидаемым» литеральный список версий и ругались на всё остальное как на подозрительное. Но 2.13–2.16 не подозрительны — они просто не проверялись, а form-validate вдобавок отстал на 2.21 и предупреждал о форме, которую сам же создаёт цепочкой epf-init 2.21 → form-add (issue #63). Теперь сравнение числовое, через общий Get-FormatRank, и исходов три: ниже 2.17 и выше 2.21 — предупреждение «not verified on it», нечисловое значение — ошибка. Раньше мусор вида «abc» и реальная версия 2.16 давали одно и то же предупреждение. В *-init ValidateSet/choices сняты: версия вне диапазона больше не запрет, а предупреждение в stderr — скаффолд выпускается. Опечатка (2,17) остаётся ошибкой. Предупреждение печатается напрямую в stderr и после настройки кодировки консоли: Write-Warning в PS 5.1 уходит в stdout, получает локализованный префикс и перенос по 80 символов, а до [Console]::OutputEncoding em-dash уезжал в вопросы — оба расхождения ломали паритет с py-портом. Отдельно в cf-init исправлен гейт TextToSpeech: свойство приезжает форматом 2.18 (8.3.25), а не 2.21. Замер: выгрузки пустой ИБ шести платформ — 37 записей UsedMobileApplicationFunctionalities на 2.13/2.17 и 38 на 2.18–2.21. Ролики загрузки показали, что это настоящее новое свойство, а не смена дефолта эмиссии: на 2.17 тег роняет загрузку XDTO-ошибкой (8.3.24), значение значимо (true переживает роундтрип), а пропуск на 2.18+ разводит роундтрип — платформа допишет тег сама. Снапшоты трёх кейсов meta-compile обновлены: их фикстуры строятся cf-init, дельта — только вставка тега. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
35c8618813
commit
de76fde275
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# erf-init v1.7 — Init 1C external report scaffold (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# erf-init v1.8 — Init 1C external report scaffold (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
"""Generates minimal XML source files for a 1C external report."""
|
||||
import sys, os, re, argparse, uuid
|
||||
@@ -56,6 +56,10 @@ def format_rank(ver):
|
||||
return int(m.group(1)) * 100 + int(m.group(2)) if m else 0
|
||||
|
||||
|
||||
FORMAT_VERIFIED_MIN = "2.17"
|
||||
FORMAT_VERIFIED_MAX = "2.21"
|
||||
|
||||
|
||||
def main():
|
||||
sys.stdout.reconfigure(encoding="utf-8")
|
||||
sys.stderr.reconfigure(encoding="utf-8")
|
||||
@@ -66,11 +70,23 @@ def main():
|
||||
# Версия формата выгрузки. Своей конфигурации у автономного объекта нет, наследовать
|
||||
# версию неоткуда — поэтому её задают явно. Формы, макеты и справку внутри объекта
|
||||
# навыки берут уже отсюда: их детектор читает version из корня этого файла.
|
||||
parser.add_argument('-FormatVersion', dest='FormatVersion', default='2.17',
|
||||
choices=['2.17', '2.18', '2.19', '2.20', '2.21'])
|
||||
parser.add_argument('-FormatVersion', dest='FormatVersion', default='2.17')
|
||||
parser.add_argument('-WithSKD', dest='WithSKD', action='store_true')
|
||||
args = ci_parse_args(parser)
|
||||
|
||||
# Проверенный диапазон: 2.17 (8.3.24) … 2.21 (8.5). Полная лестница —
|
||||
# docs/1c-configuration-spec.md, «Лестница версий». Версии ниже 2.17 (платформы 8.3.23 и
|
||||
# старше) реальны, поэтому запретом их не закрываем: за пределами диапазона —
|
||||
# ПРЕДУПРЕЖДЕНИЕ, скаффолд всё равно выпускается. Ошибка — только на нечисловое значение.
|
||||
format_rank_value = format_rank(args.FormatVersion)
|
||||
if format_rank_value == 0:
|
||||
print(f"Malformed -FormatVersion '{args.FormatVersion}' (expected N.N, e.g. 2.17)", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
if not (format_rank(FORMAT_VERIFIED_MIN) <= format_rank_value <= format_rank(FORMAT_VERIFIED_MAX)):
|
||||
print(f"WARNING: Format version '{args.FormatVersion}' is outside the tested range "
|
||||
f"{FORMAT_VERIFIED_MIN}-{FORMAT_VERIFIED_MAX} — the scaffold is emitted as requested "
|
||||
f"but was not verified on that platform", file=sys.stderr)
|
||||
|
||||
name = args.Name
|
||||
synonym = args.Synonym if args.Synonym else name
|
||||
src_dir = args.SrcDir
|
||||
|
||||
Reference in New Issue
Block a user