diff --git a/.claude/skills/cf-init/scripts/cf-init.ps1 b/.claude/skills/cf-init/scripts/cf-init.ps1 index 7efe03ac..6cab99d3 100644 --- a/.claude/skills/cf-init/scripts/cf-init.ps1 +++ b/.claude/skills/cf-init/scripts/cf-init.ps1 @@ -1,4 +1,4 @@ -# cf-init v1.6 — Create empty 1C configuration scaffold +# cf-init v1.7 — Create empty 1C configuration scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -77,10 +77,35 @@ if ($Synonym) { $vendorEl = if ($Vendor) { "$([System.Security.SecurityElement]::Escape($Vendor))" } else { "" } $versionEl = if ($Version) { "$([System.Security.SecurityElement]::Escape($Version))" } else { "" } +# --- Свойства и пространство имён формата 2.21 (платформа 8.5) --- +# Значения и ПОЗИЦИИ сняты с выгрузки 8.5.1 (debug/fmt221/dump_v851): те же исходники, +# выгруженные с 8.3.27 и с 8.5.1, различаются ровно этим. Порядок важен — вставки идут +# на своё место, а не в конец. +$is221 = (($FormatVersion -match '^(\d+)\.(\d+)$') -and ([int]$Matches[1] * 100 + [int]$Matches[2]) -ge 221) +$nl = "`r`n" +$f221AuxForms = ""; $f221WindowVariant = ""; $f221OpenVariant = ""; $f221Captions = ""; $f221Migration = "" +$palNs = "" +if ($is221) { + $palNs = ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette"' + # Скобки вокруг -join обязательны: без них `$nl + (массив) -join $nl` разбирается как + # `($nl + массив) -join $nl`, массив склеивается пробелами и все теги уезжают в одну строку. + $f221AuxForms = $nl + ((@( + "", "", "", + "", "", + "", "", + "" + ) | ForEach-Object { "`t`t`t$_" }) -join $nl) + $f221WindowVariant = $nl + "`t`t`tNavigationLeft" + + $nl + "`t`t`tAuto" + $f221OpenVariant = $nl + "`t`t`tOpenDataInDialogs" + $f221Captions = $nl + "`t`t`t" + $nl + "`t`t`t" + $f221Migration = $nl + "`t`t`tDontUse" +} + # --- Configuration.xml --- $cfgXml = @" - + @@ -147,15 +172,15 @@ $cfgXml = @" - + $f221AuxForms $mobileXml - - Normal - + $f221WindowVariant + Normal$f221OpenVariant + $f221Captions Language.Русский @@ -167,7 +192,7 @@ $cfgXml = @" NotAutoFree DontUse DontUse - TaxiEnableVersion8_2 + TaxiEnableVersion8_2$f221Migration DontUse $CompatibilityMode @@ -182,7 +207,7 @@ $cfgXml = @" # --- Languages/Русский.xml --- $langXml = @" - + Русский diff --git a/.claude/skills/cf-init/scripts/cf-init.py b/.claude/skills/cf-init/scripts/cf-init.py index 11ea0d9f..909960df 100644 --- a/.claude/skills/cf-init/scripts/cf-init.py +++ b/.claude/skills/cf-init/scripts/cf-init.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -# cf-init v1.6 — Create empty 1C configuration scaffold +# cf-init v1.7 — Create empty 1C configuration scaffold # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Generates minimal XML source files for a 1C configuration.""" -import sys, os, argparse, uuid +import sys, os, argparse, re, uuid def esc_xml(s): return s.replace('&','&').replace('<','<').replace('>','>').replace('"','"') @@ -105,6 +105,30 @@ def main(): "fb282519-d103-4dd3-bc12-cb271d631dfc", ] + # Свойства и пространство имён формата 2.21 (платформа 8.5). Значения и ПОЗИЦИИ сняты + # с выгрузки 8.5.1 (debug/fmt221/dump_v851): те же исходники, выгруженные с 8.3.27 и + # с 8.5.1, различаются ровно этим. Порядок важен — вставки идут на своё место. + _fm = re.match(r'^(\d+)\.(\d+)$', args.FormatVersion) + is_221 = bool(_fm) and int(_fm.group(1)) * 100 + int(_fm.group(2)) >= 221 + pal_ns = "" + f221_aux_forms = f221_window_variant = f221_open_variant = f221_captions = f221_migration = "" + if is_221: + pal_ns = ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette"' + f221_aux_forms = "\r\n" + "\r\n".join( + f"\t\t\t{t}" for t in ( + "", "", "", + "", "", + "", "", + "")) + f221_window_variant = ("\r\n\t\t\tNavigationLeft" + "" + "\r\n\t\t\tAuto") + f221_open_variant = ("\r\n\t\t\tOpenDataInDialogs" + "") + f221_captions = "\r\n\t\t\t\r\n\t\t\t" + f221_migration = ("\r\n\t\t\tDontUse" + "") + contained_objects = "" for i in range(7): contained_objects += f"""\t\t\t @@ -113,7 +137,7 @@ def main(): \t\t\t\n""" cfg_xml = f''' - + \t \t\t {contained_objects}\t\t @@ -152,15 +176,15 @@ def main(): \t\t\t \t\t\t \t\t\t -\t\t\t +\t\t\t{f221_aux_forms} \t\t\t \t\t\t{mobile_xml} \t\t\t \t\t\t \t\t\t -\t\t\t -\t\t\tNormal -\t\t\t +\t\t\t{f221_window_variant} +\t\t\tNormal{f221_open_variant} +\t\t\t{f221_captions} \t\t\t \t\t\tLanguage.Русский \t\t\t @@ -172,7 +196,7 @@ def main(): \t\t\tNotAutoFree \t\t\tDontUse \t\t\tDontUse -\t\t\tTaxiEnableVersion8_2 +\t\t\tTaxiEnableVersion8_2{f221_migration} \t\t\tDontUse \t\t\t{compat} \t\t\t @@ -185,7 +209,7 @@ def main(): # --- Languages/Русский.xml --- lang_xml = f''' - + \t \t\t \t\t\tРусский diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 32a48a71..3604ef90 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.87 — Compile 1C metadata object from JSON +# meta-compile v1.88 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -2224,6 +2224,11 @@ function Emit-EnumValue { X "$indent`t`t$(Esc-XmlText $parsed.name)" Emit-MLText "$indent`t`t" "Synonym" $parsed.synonym if ($parsed.comment) { X "$indent`t`t$(Esc-XmlText $parsed.comment)" } else { X "$indent`t`t" } + # Цвет значения перечисления — свойство формата 2.21 (8.5), последним в Properties. + if ($script:isFormat221) { + $color = if ($parsed.color) { "$($parsed.color)" } else { "auto" } + X "$indent`t`t$(Esc-XmlText $color)" + } X "$indent`t" X "$indent" } @@ -2890,6 +2895,11 @@ function Emit-CommonFormProperties { } else { X "$i" } + # Использование в режиме совместимости интерфейса — свойство формата 2.21 (8.5), + # между UsePurposes и UseStandardCommands. + if ($script:isFormat221) { + X "$i$(Get-EnumProp 'UseInInterfaceCompatibilityMode' 'useInInterfaceCompatibilityMode' 'Any')" + } $useStdCmds = if (Get-BoolProp "useStandardCommands" $false) { "true" } else { "false" } X "$i$useStdCmds" Emit-MLText $i "ExtendedPresentation" $def.extendedPresentation @@ -3200,6 +3210,8 @@ function Emit-ReportProperties { Emit-VerbatimRef $i "DefaultSettingsForm" $def.defaultSettingsForm Emit-VerbatimRef $i "AuxiliarySettingsForm" $def.auxiliarySettingsForm Emit-VerbatimRef $i "DefaultVariantForm" $def.defaultVariantForm + # Вспомогательная форма варианта отчёта — свойство формата 2.21 (8.5). + if ($script:isFormat221) { Emit-VerbatimRef $i "AuxiliaryVariantForm" $def.auxiliaryVariantForm } Emit-VerbatimRef $i "VariantsStorage" $def.variantsStorage Emit-VerbatimRef $i "SettingsStorage" $def.settingsStorage $inclHelp = if (Get-BoolProp "includeHelpInContents" $false) { "true" } else { "false" } @@ -4239,6 +4251,15 @@ $script:compatMode = Detect-CompatibilityMode $OutputDir # глушил бы TypeReductionMode, который платформа этих версий пишет, и роундтрип бы разъезжался. $script:isFormat218 = (Get-FormatRank $script:formatVersion) -ge 218 $script:isFormat220 = (Get-FormatRank $script:formatVersion) -ge 220 +$script:isFormat221 = (Get-FormatRank $script:formatVersion) -ge 221 +# 2.21 (8.5) добавила в шапку пространство палитры — ради у значений перечисления. +# Вставляем НА МЕСТО (после lf, перед style): платформа держит объявления по алфавиту. +# Только для шапок MetaDataObject и Form — в файлах с корнем extrnprops +# (Ext/ClientApplicationInterface.xml и т.п.) платформа его не пишет. +if ($script:isFormat221) { + $palNs = ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette"' + $script:xmlnsDecl = $script:xmlnsDecl -replace ' xmlns:style=', "$palNs xmlns:style=" +} # Дефолт длины номера строки ТЧ: с режима 8.3.27 платформа заводит новые ТЧ с 9 разрядами. $script:lineNumberLengthDefault = if ((Get-CompatModeRank $script:compatMode) -ge 80327) { 9 } else { 5 } @@ -4953,6 +4974,8 @@ if ($objType -eq "CommonForm") { $cfFormXmlPath = Join-Path $extDir "Form.xml" if (-not (Test-Path $cfFormXmlPath)) { $cfFormNs = 'xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' + # Шапка Form на 2.21 тоже несёт палитру — см. комментарий у $script:xmlnsDecl. + if ($script:isFormat221) { $cfFormNs = $cfFormNs -replace ' xmlns:style=', ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style=' } $cfFormXml = "`r`n
`r`n`t`r`n`t`ttrue`r`n`t`r`n`t`r`n`r`n" Write-XmlFileKeepEol $cfFormXmlPath $cfFormXml $enc $modulesCreated += $cfFormXmlPath diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index 53f612b3..1aa3a715 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.87 — Compile 1C metadata object from JSON +# meta-compile v1.88 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -2296,6 +2296,10 @@ def emit_enum_value(indent, parsed): X(f'{indent}\t\t{esc_xml_text(parsed["comment"])}') else: X(f'{indent}\t\t') + # Цвет значения перечисления — свойство формата 2.21 (8.5), последним в Properties. + if is_format_221: + color = str(parsed['color']) if parsed.get('color') else 'auto' + X(f'{indent}\t\t{esc_xml_text(color)}') X(f'{indent}\t
') X(f'{indent}') @@ -2920,6 +2924,12 @@ def emit_common_form_properties(indent): X(f'{i}') else: X(f'{i}') + # Использование в режиме совместимости интерфейса — свойство формата 2.21 (8.5), + # между UsePurposes и UseStandardCommands. + if is_format_221: + X(f'{i}' + f'{get_enum_prop("UseInInterfaceCompatibilityMode", "useInInterfaceCompatibilityMode", "Any")}' + f'') use_std_cmds = 'true' if get_bool_prop('useStandardCommands', False) else 'false' X(f'{i}{use_std_cmds}') emit_mltext(i, 'ExtendedPresentation', defn.get('extendedPresentation')) @@ -3237,6 +3247,9 @@ def emit_report_properties(indent): emit_verbatim_ref(i, 'DefaultSettingsForm', defn.get('defaultSettingsForm')) emit_verbatim_ref(i, 'AuxiliarySettingsForm', defn.get('auxiliarySettingsForm')) emit_verbatim_ref(i, 'DefaultVariantForm', defn.get('defaultVariantForm')) + # Вспомогательная форма варианта отчёта — свойство формата 2.21 (8.5). + if is_format_221: + emit_verbatim_ref(i, 'AuxiliaryVariantForm', defn.get('auxiliaryVariantForm')) emit_verbatim_ref(i, 'VariantsStorage', defn.get('variantsStorage')) emit_verbatim_ref(i, 'SettingsStorage', defn.get('settingsStorage')) incl_help = 'true' if get_bool_prop('includeHelpInContents', False) else 'false' @@ -4149,6 +4162,15 @@ compat_mode = detect_compatibility_mode(output_dir) # глушил бы TypeReductionMode, который платформа этих версий пишет, и роундтрип бы разъезжался. is_format_218 = format_rank(format_version) >= 218 is_format_220 = format_rank(format_version) >= 220 +is_format_221 = format_rank(format_version) >= 221 +# 2.21 (8.5) добавила в шапку пространство палитры — ради у значений перечисления. +# Вставляем НА МЕСТО (после lf, перед style): платформа держит объявления по алфавиту. +# Только для шапок MetaDataObject и Form — в файлах с корнем extrnprops +# (Ext/ClientApplicationInterface.xml и т.п.) платформа его не пишет. +if is_format_221: + xmlns_decl = xmlns_decl.replace( + ' xmlns:style=', + ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style=') # Дефолт длины номера строки ТЧ: с режима 8.3.27 платформа заводит новые ТЧ с 9 разрядами. line_number_length_default = 9 if compat_mode_rank(compat_mode) >= 80327 else 5 @@ -4622,6 +4644,10 @@ if obj_type == 'CommonForm': 'xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" ' 'xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" ' 'xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + # Шапка Form на 2.21 тоже несёт палитру — см. комментарий у xmlns_decl. + if is_format_221: + cf_ns = cf_ns.replace(' xmlns:style=', + ' xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style=') cf_form_xml = ('\r\n
\r\n' '\t\r\n\t\ttrue\r\n\t\r\n' '\t\r\n\r\n') diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1 index 9996ee7a..4448dac2 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.ps1 +++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1 @@ -1,4 +1,4 @@ -# meta-edit v1.30 — Edit existing 1C metadata object XML +# meta-edit v1.31 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -318,6 +318,12 @@ $root = $script:xmlDoc.DocumentElement # Ищем по объявлениям корня, а не через GetPrefixOfNamespace: ссылочный тип живёт в # ТЕКСТЕ узла, поэтому XML-слой этот префикс не отслеживает. $null = корень URI не # объявляет → эмиттер остаётся на самодостаточной локальной форме. +# Версия формата правимого файла — из его же корня. Нужна эмиттерам: часть свойств +# появилась в поздних версиях (напр. у значения перечисления — в 2.21). +$script:formatVersion = $root.GetAttribute("version") +if (-not $script:formatVersion) { $script:formatVersion = "2.17" } +$script:isFormat221 = ($script:formatVersion -match '^(\d+)\.(\d+)$') -and ([int]$Matches[1] * 100 + [int]$Matches[2]) -ge 221 + $script:cfgUri = 'http://v8.1c.ru/8.1/data/enterprise/current-config' $script:cfgPrefix = $null foreach ($a in $root.Attributes) { @@ -1300,6 +1306,9 @@ function Build-EnumValueFragment { $sb.AppendLine("$indent`t`t$(Esc-XmlText $parsed.name)") | Out-Null $sb.AppendLine($(Build-MLTextXml "$indent`t`t" "Synonym" $parsed.synonym)) | Out-Null $sb.AppendLine("$indent`t`t") | Out-Null + # Цвет значения — свойство формата 2.21 (8.5). Без него добавленное значение + # отличалось бы от соседних, написанных платформой. + if ($script:isFormat221) { $sb.AppendLine("$indent`t`tauto") | Out-Null } $sb.AppendLine("$indent`t") | Out-Null $sb.Append("$indent") | Out-Null return $sb.ToString() diff --git a/.claude/skills/meta-edit/scripts/meta-edit.py b/.claude/skills/meta-edit/scripts/meta-edit.py index 79bc38ee..a62db424 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.py +++ b/.claude/skills/meta-edit/scripts/meta-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-edit v1.30 — Edit existing 1C metadata object XML +# meta-edit v1.31 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -198,6 +198,9 @@ V8_NS = "http://v8.1c.ru/8.1/data/core" XSI_NS = "http://www.w3.org/2001/XMLSchema-instance" XS_NS = "http://www.w3.org/2001/XMLSchema" CFG_NS = "http://v8.1c.ru/8.1/data/enterprise/current-config" +# Версия формата правимого файла — из его же корня. Нужна эмиттерам: часть свойств +# появилась в поздних версиях (напр. у значения перечисления — в 2.21). +is_format_221 = False # Префикс current-config, объявленный в КОРНЕ правимого файла (у платформы — cfg). # None = корень его не объявляет → эмиттер ссылочных типов остаётся на локальной форме. cfg_prefix = None @@ -1266,6 +1269,10 @@ def build_enum_value_fragment(parsed, indent): lines.append(f"{indent}\t\t{esc_xml_text(parsed['name'])}") lines.append(build_mltext_xml(f"{indent}\t\t", "Synonym", parsed["synonym"])) lines.append(f"{indent}\t\t") + # Цвет значения — свойство формата 2.21 (8.5). Без него добавленное значение + # отличалось бы от соседних, написанных платформой. + if is_format_221: + lines.append(f"{indent}\t\tauto") lines.append(f"{indent}\t") lines.append(f"{indent}") return "\r\n".join(lines) @@ -3207,8 +3214,11 @@ def main(): xml_root = xml_tree.getroot() # Префикс current-config берём из объявлений корня — им и пишем ссылочные типы. - global cfg_prefix + global cfg_prefix, is_format_221 cfg_prefix = next((p for p, u in (xml_root.nsmap or {}).items() if u == CFG_NS and p), None) + _fv = xml_root.get("version") or "2.17" + _m = re.match(r'^(\d+)\.(\d+)$', _fv) + is_format_221 = bool(_m) and int(_m.group(1)) * 100 + int(_m.group(2)) >= 221 # --- Detect object type --- if localname(xml_root) != "MetaDataObject": diff --git a/.claude/skills/meta-validate/scripts/meta-validate.ps1 b/.claude/skills/meta-validate/scripts/meta-validate.ps1 index 5f0b1d4d..8d9edf71 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.ps1 +++ b/.claude/skills/meta-validate/scripts/meta-validate.ps1 @@ -1,4 +1,4 @@ -# meta-validate v1.13 — Validate 1C metadata object structure (+корневой : скаляр без структуры = ошибка) +# meta-validate v1.14 — Validate 1C metadata object structure (+корневой : скаляр без структуры = ошибка) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -344,9 +344,10 @@ if ($root.NamespaceURI -ne $expectedNs) { $version = $root.GetAttribute("version") if (-not $version) { Report-Warn "1. Missing version attribute on MetaDataObject" -} elseif ($version -notin @("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 "1. Unusual version '$version' (expected 2.17-2.20)" +} elseif ($version -notin @("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 "1. Unusual version '$version' (expected 2.17-2.21)" } # Detect type element — exactly one child element in md namespace @@ -1502,6 +1503,10 @@ if ($script:configDir) { $versionedProps = @{ "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" # использование общей формы в режиме совместимости интерфейса } # Версия формата как число: "2.20" → 220. Строковое сравнение неверно ("2.9" > "2.17"). function Get-FormatRank([string]$v) { diff --git a/.claude/skills/meta-validate/scripts/meta-validate.py b/.claude/skills/meta-validate/scripts/meta-validate.py index 11ab456c..370b2014 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.py +++ b/.claude/skills/meta-validate/scripts/meta-validate.py @@ -1,4 +1,4 @@ -# meta-validate v1.13 — Validate 1C metadata object structure (Python port) (+корневой : скаляр без структуры = ошибка) +# meta-validate v1.14 — Validate 1C metadata object structure (Python port) (+корневой : скаляр без структуры = ошибка) # 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", # использование общей формы в режиме совместимости интерфейса }