mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-17 00:30:23 +03:00
feat(meta-compile,meta-edit,cf-init,meta-validate): формат выгрузки 2.21 (8.5)
Дельта 2.20 → 2.21 снята синтетическим экспериментом: одна и та же минимальная конфигурация загружена в две пустые базы, 8.3.27.1859 и 8.5.1.1302, и выгружена из каждой (стенд debug/fmt221). Всё, что нашлось раундтрипом по УНФ, воспроизвелось на синтетике — значит это ступень формата, а не особенность конфигурации. Версию формата задаёт ПЛАТФОРМА ВЫГРУЗКИ, а не режим совместимости: CompatibilityMode в обеих выгрузках остался Version8_3_24, но 8.5 всё равно написала 2.21. Поэтому нигде не появляется привязки к режиму совместимости — только к версии из Configuration.xml, как и было устроено. Реализовано: - xmlns:pal (палитра) в шапках MetaDataObject и Form у meta-compile и cf-init. Вставка НА МЕСТО (после lf, перед style) — платформа держит объявления по алфавиту. В файлы с корнем extrnprops (Ext/ClientApplicationInterface.xml) платформа его не пишет, и мы не пишем. - meta-compile: <Color>auto</Color> у значения перечисления, <AuxiliaryVariantForm/> у отчёта, <UseInInterfaceCompatibilityMode>Any</…> у общей формы. Позиции взяты из эталонной выгрузки, а не угаданы. - meta-edit: <Color> при добавлении значения перечисления — навык сам эмитит EnumValue, и без этого добавленное значение отличалось бы от соседних. - cf-init: 14 новых свойств корня при -FormatVersion 2.21. - meta-validate: лестница версий (был единственным валидатором без 2.21) и три строки в реестре versionedProps — механизм для этого и заводился. Проверка: - наш вывод на 2.21 совпал с выгрузкой платформы ПОСТРОЧНО по Enums, Reports и CommonForms; порты идентичны modulo UUID; - на 2.17-2.20 вывод не изменился ни в одном байте; - юнит-тесты 648/648 ps1, 645/648 py. Известное отклонение, НЕ относящееся к 2.21: скелет Ext/Form.xml общей формы отличается от платформенного (dcssch в шапке, форма AutoCommandBar, Attributes) — то же расхождение есть и на 2.20, разбирать отдельно. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7892c9fbfa
commit
34b533a730
@@ -1,4 +1,4 @@
|
||||
# meta-validate v1.13 — Validate 1C metadata object structure (Python port) (+корневой <Type>: скаляр без структуры = ошибка)
|
||||
# meta-validate v1.14 — Validate 1C metadata object structure (Python port) (+корневой <Type>: скаляр без структуры = ошибка)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import os
|
||||
@@ -371,9 +371,10 @@ 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.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)")
|
||||
elif version not in ("2.17", "2.18", "2.19", "2.20", "2.21"):
|
||||
# Лестница версий формата: 2.17 (8.3.20-8.3.24), 2.18 (8.3.25), 2.19 (8.3.26),
|
||||
# 2.20 (8.3.27), 2.21 (8.5). Версию задаёт платформа ВЫГРУЗКИ, а не режим совместимости.
|
||||
report_warn(f"1. Unusual version '{version}' (expected 2.17-2.21)")
|
||||
|
||||
# Detect type element -- exactly one child element in md namespace
|
||||
type_node = None
|
||||
@@ -1404,6 +1405,10 @@ if config_dir:
|
||||
versioned_props = {
|
||||
"TypeReductionMode": "2.18", # режим приведения типов (стандартные реквизиты, измерения РС)
|
||||
"LineNumberLength": "2.20", # длина номера строки ТЧ (5..9)
|
||||
# 2.21 (8.5): подтверждено синтетикой — одни исходники, выгрузка с 8.3.27 и с 8.5.1.
|
||||
"Color": "2.21", # цвет значения перечисления
|
||||
"AuxiliaryVariantForm": "2.21", # вспомогательная форма варианта отчёта
|
||||
"UseInInterfaceCompatibilityMode": "2.21", # использование общей формы в режиме совместимости интерфейса
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user