mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-03 10:10:21 +03:00
fix(meta-compile,meta-validate,cf-init,*-validate): промежуточные версии формата 2.18/2.19
Версия формата выгрузки идёт лестницей, а не скачком 2.17 -> 2.20: 8.3.20-8.3.24 -> 2.17, 8.3.25 -> 2.18, 8.3.26 -> 2.19, 8.3.27 -> 2.20. Прежняя дельта мерилась через две ступени и приписала версии 2.20 всё, что появилось по дороге. Замер на одной и той же конфигурации, выгруженной четырьмя платформами: - 2.18: TypeReductionMode (4793 файла), TextToSpeech, 3 редких свойства форм; - 2.19: новых тегов нет, роли перешли на omit-on-default; - 2.20: только LineNumberLength. meta-compile: единый гейт isFormat220 управлял обоими свойствами, поэтому на проекте 2.18/2.19 TypeReductionMode не эмитился, хотя платформа этих версий его пишет — роундтрип разъезжался. Порог расщеплён: >=2.18 для TypeReductionMode, >=2.20 для LineNumberLength. meta-validate: реестр versionedProps объявлял TypeReductionMode свойством 2.20, из-за чего проверка 18 давала ложную ошибку на корректном файле 2.18/2.19. Исправлено на 2.18. Валидаторы (meta/form/cf/cfe/epf) считали 2.18 и 2.19 неизвестными версиями и предупреждали «Unusual version»; cf-init не давал отскаффолдить конфигурацию под 8.3.25/8.3.26. Обе версии впущены. Тесты: фикстура empty-config-218, кейс meta-compile на границу свойств (TypeReductionMode есть, LineNumberLength нет), два кейса meta-validate на законность штампов 2.18/2.19; кейс error-220-props-in-217 теперь проверяет оба сообщения с разными порогами. Кейс 2.18 проверен загрузкой в живую 8.3.25 через verify-snapshots. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ecd289fe11
commit
2e5289a88f
@@ -1,4 +1,4 @@
|
||||
# meta-validate v1.12 — Validate 1C metadata object structure (Python port) (+корневой <Type>: скаляр без структуры = ошибка)
|
||||
# meta-validate v1.13 — Validate 1C metadata object structure (Python port) (+корневой <Type>: скаляр без структуры = ошибка)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import os
|
||||
@@ -371,8 +371,9 @@ if root_ns != expected_ns:
|
||||
version = root.get("version", "")
|
||||
if not version:
|
||||
report_warn("1. Missing version attribute on MetaDataObject")
|
||||
elif version not in ("2.17", "2.20"):
|
||||
report_warn(f"1. Unusual version '{version}' (expected 2.17 or 2.20)")
|
||||
elif version not in ("2.17", "2.18", "2.19", "2.20"):
|
||||
# Лестница версий формата: 2.17 (8.3.20-8.3.24), 2.18 (8.3.25), 2.19 (8.3.26), 2.20 (8.3.27).
|
||||
report_warn(f"1. Unusual version '{version}' (expected 2.17-2.20)")
|
||||
|
||||
# Detect type element -- exactly one child element in md namespace
|
||||
type_node = None
|
||||
@@ -1401,7 +1402,7 @@ if config_dir:
|
||||
# рапортует успех, а свойство теряется); (2) подсказать, что конструкция требует более нового
|
||||
# формата. Расширяется одной строкой на свойство — задел под 2.21 (8.5) и последующие.
|
||||
versioned_props = {
|
||||
"TypeReductionMode": "2.20", # режим приведения типов (стандартные реквизиты, измерения РС)
|
||||
"TypeReductionMode": "2.18", # режим приведения типов (стандартные реквизиты, измерения РС)
|
||||
"LineNumberLength": "2.20", # длина номера строки ТЧ (5..9)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user