diff --git a/.claude/skills/cf-init/scripts/cf-init.ps1 b/.claude/skills/cf-init/scripts/cf-init.ps1
index 732e30cb..fb7f0293 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.3 — Create empty 1C configuration scaffold
+# cf-init v1.4 — Create empty 1C configuration scaffold
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -9,9 +9,9 @@ param(
[string]$Vendor,
[string]$CompatibilityMode = "Version8_3_24",
# Версия формата выгрузки (MDClasses). Её задаёт ПЛАТФОРМА, которой выгружают, и от режима
- # совместимости она не зависит: 8.3.24 пишет 2.17, 8.3.27 — 2.20. Дефолт консервативный —
- # 2.17 читается всеми поддерживаемыми платформами.
- [ValidateSet("2.17", "2.20", "2.21")]
+ # совместимости она не зависит: 8.3.20-8.3.24 пишут 2.17, 8.3.25 — 2.18, 8.3.26 — 2.19,
+ # 8.3.27 — 2.20. Дефолт консервативный: 2.17 читается всеми поддерживаемыми платформами.
+ [ValidateSet("2.17", "2.18", "2.19", "2.20", "2.21")]
[string]$FormatVersion = "2.17"
)
diff --git a/.claude/skills/cf-init/scripts/cf-init.py b/.claude/skills/cf-init/scripts/cf-init.py
index 214d334a..150081ee 100644
--- a/.claude/skills/cf-init/scripts/cf-init.py
+++ b/.claude/skills/cf-init/scripts/cf-init.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# cf-init v1.3 — Create empty 1C configuration scaffold
+# cf-init v1.4 — 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
@@ -25,8 +25,10 @@ def main():
parser.add_argument('-Vendor', dest='Vendor', default='')
parser.add_argument('-CompatibilityMode', dest='CompatibilityMode', default='Version8_3_24')
# Версия формата выгрузки (MDClasses) — её задаёт ПЛАТФОРМА, а не режим совместимости:
- # 8.3.24 пишет 2.17, 8.3.27 — 2.20. Дефолт консервативный: 2.17 читается всеми платформами.
- parser.add_argument('-FormatVersion', dest='FormatVersion', default='2.17', choices=['2.17', '2.20', '2.21'])
+ # 8.3.20-8.3.24 пишут 2.17, 8.3.25 — 2.18, 8.3.26 — 2.19, 8.3.27 — 2.20.
+ # Дефолт консервативный: 2.17 читается всеми платформами.
+ parser.add_argument('-FormatVersion', dest='FormatVersion', default='2.17',
+ choices=['2.17', '2.18', '2.19', '2.20', '2.21'])
args = parser.parse_args()
name = args.Name
diff --git a/.claude/skills/cf-validate/scripts/cf-validate.ps1 b/.claude/skills/cf-validate/scripts/cf-validate.ps1
index e59ff3c6..83c0bd9f 100644
--- a/.claude/skills/cf-validate/scripts/cf-validate.ps1
+++ b/.claude/skills/cf-validate/scripts/cf-validate.ps1
@@ -1,4 +1,4 @@
-# cf-validate v1.4 — Validate 1C configuration root structure
+# cf-validate v1.5 — Validate 1C configuration root structure
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -205,8 +205,9 @@ if ($root.NamespaceURI -ne $expectedNs) {
$version = $root.GetAttribute("version")
if (-not $version) {
Report-Warn "1. Missing version attribute on MetaDataObject"
-} elseif ($version -ne "2.17" -and $version -ne "2.20" -and $version -ne "2.21") {
- Report-Warn "1. Unusual version '$version' (expected 2.17, 2.20 or 2.21)"
+} 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).
+ Report-Warn "1. Unusual version '$version' (expected 2.17-2.20 or 2.21)"
}
# Must have Configuration child
diff --git a/.claude/skills/cf-validate/scripts/cf-validate.py b/.claude/skills/cf-validate/scripts/cf-validate.py
index 9b3ba9b6..b16e1e2c 100644
--- a/.claude/skills/cf-validate/scripts/cf-validate.py
+++ b/.claude/skills/cf-validate/scripts/cf-validate.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# cf-validate v1.4 — Validate 1C configuration XML structure
+# cf-validate v1.5 — Validate 1C configuration XML structure
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
"""Validates Configuration.xml: root structure, InternalInfo, properties, ChildObjects, languages."""
import sys, os, argparse, re
@@ -232,8 +232,9 @@ def main():
version = root.get('version', '')
if not version:
r.warn('1. Missing version attribute on MetaDataObject')
- elif version not in ('2.17', '2.20', '2.21'):
- r.warn(f"1. Unusual version '{version}' (expected 2.17, 2.20 or 2.21)")
+ 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).
+ r.warn(f"1. Unusual version '{version}' (expected 2.17-2.20 or 2.21)")
# Must have Configuration child
cfg_node = None
diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1
index 39e9ff9c..1afbb7dd 100644
--- a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1
+++ b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1
@@ -1,4 +1,4 @@
-# cfe-validate v1.4 — Validate 1C configuration extension structure (CFE)
+# cfe-validate v1.5 — Validate 1C configuration extension structure (CFE)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -197,8 +197,9 @@ if ($root.NamespaceURI -ne $expectedNs) {
$version = $root.GetAttribute("version")
if (-not $version) {
Report-Warn "1. Missing version attribute on MetaDataObject"
-} elseif ($version -ne "2.17" -and $version -ne "2.20" -and $version -ne "2.21") {
- Report-Warn "1. Unusual version '$version' (expected 2.17, 2.20 or 2.21)"
+} 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).
+ Report-Warn "1. Unusual version '$version' (expected 2.17-2.20 or 2.21)"
}
# Must have Configuration child
diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.py b/.claude/skills/cfe-validate/scripts/cfe-validate.py
index 51902c34..ab66c258 100644
--- a/.claude/skills/cfe-validate/scripts/cfe-validate.py
+++ b/.claude/skills/cfe-validate/scripts/cfe-validate.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# cfe-validate v1.4 — Validate 1C configuration extension XML structure (CFE)
+# cfe-validate v1.5 — Validate 1C configuration extension XML structure (CFE)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
"""Validates extension Configuration.xml: root, InternalInfo, extension properties, ChildObjects, borrowed objects."""
import sys, os, argparse, re
@@ -216,8 +216,9 @@ def main():
version = root.get('version', '')
if not version:
r.warn('1. Missing version attribute on MetaDataObject')
- elif version not in ('2.17', '2.20', '2.21'):
- r.warn(f"1. Unusual version '{version}' (expected 2.17, 2.20 or 2.21)")
+ 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).
+ r.warn(f"1. Unusual version '{version}' (expected 2.17-2.20 or 2.21)")
# Must have Configuration child
cfg_node = None
diff --git a/.claude/skills/epf-validate/scripts/epf-validate.ps1 b/.claude/skills/epf-validate/scripts/epf-validate.ps1
index 62d928e4..a63273b4 100644
--- a/.claude/skills/epf-validate/scripts/epf-validate.ps1
+++ b/.claude/skills/epf-validate/scripts/epf-validate.ps1
@@ -1,4 +1,4 @@
-# epf-validate v1.2 — Validate 1C external data processor / report structure
+# epf-validate v1.3 — Validate 1C external data processor / report structure
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# Works for both EPF (ExternalDataProcessor) and ERF (ExternalReport) — auto-detects
param(
@@ -185,8 +185,9 @@ if ($root.NamespaceURI -ne $expectedNs) {
$version = $root.GetAttribute("version")
if (-not $version) {
Report-Warn "1. Missing version attribute on MetaDataObject"
-} elseif ($version -ne "2.17" -and $version -ne "2.20" -and $version -ne "2.21") {
- Report-Warn "1. Unusual version '$version' (expected 2.17, 2.20 or 2.21)"
+} 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).
+ Report-Warn "1. Unusual version '$version' (expected 2.17-2.20 or 2.21)"
}
# Detect type: ExternalDataProcessor or ExternalReport
diff --git a/.claude/skills/epf-validate/scripts/epf-validate.py b/.claude/skills/epf-validate/scripts/epf-validate.py
index 4c854768..841c283e 100644
--- a/.claude/skills/epf-validate/scripts/epf-validate.py
+++ b/.claude/skills/epf-validate/scripts/epf-validate.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# epf-validate v1.2 — Validate 1C external data processor / report structure
+# epf-validate v1.3 — Validate 1C external data processor / report structure
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# Works for both EPF (ExternalDataProcessor) and ERF (ExternalReport) — auto-detects
@@ -165,8 +165,9 @@ def main():
version = root.get("version", "")
if not version:
report_warn("1. Missing version attribute on MetaDataObject")
- elif version not in ("2.17", "2.20", "2.21"):
- report_warn(f"1. Unusual version '{version}' (expected 2.17, 2.20 or 2.21)")
+ 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).
+ report_warn(f"1. Unusual version '{version}' (expected 2.17-2.20 or 2.21)")
# Detect type
child_elements = []
diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1
index bc147841..8f231547 100644
--- a/.claude/skills/form-validate/scripts/form-validate.ps1
+++ b/.claude/skills/form-validate/scripts/form-validate.ps1
@@ -1,4 +1,4 @@
-# form-validate v1.8 — Validate 1C managed form
+# form-validate v1.9 — Validate 1C managed form
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -127,10 +127,11 @@ if ($root.LocalName -ne "Form") {
Report-Error "Root element is '$($root.LocalName)', expected 'Form'"
} else {
$version = $root.GetAttribute("version")
- if ($version -eq "2.17" -or $version -eq "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).
+ if ($version -in @("2.17", "2.18", "2.19", "2.20")) {
Report-OK "Root element: Form version=$version"
} elseif ($version) {
- Report-Warn "Form version='$version' (expected 2.17 or 2.20)"
+ Report-Warn "Form version='$version' (expected 2.17-2.20)"
} else {
Report-Warn "Form version attribute missing"
}
diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py
index 3c1ec3b7..43adcf71 100644
--- a/.claude/skills/form-validate/scripts/form-validate.py
+++ b/.claude/skills/form-validate/scripts/form-validate.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# form-validate v1.8 — Validate 1C managed form
+# form-validate v1.9 — Validate 1C managed form
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -161,10 +161,11 @@ def main():
report_error(f"Root element is '{localname(root)}', expected 'Form'")
else:
version = root.get("version", "")
- if version in ("2.17", "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).
+ if version in ("2.17", "2.18", "2.19", "2.20"):
report_ok(f"Root element: Form version={version}")
elif version:
- report_warn(f"Form version='{version}' (expected 2.17 or 2.20)")
+ report_warn(f"Form version='{version}' (expected 2.17-2.20)")
else:
report_warn("Form version attribute missing")
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index f9ae61be..14ed75dd 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.68 — Compile 1C metadata object from JSON
+# meta-compile v1.69 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -1321,9 +1321,9 @@ function Emit-StandardAttribute {
X "$indent`tfalse"
X "$indent`t$ffv"
X "$indent`tAuto"
- # Формат 2.20 (8.3.27): режим приведения типов. Платформа пишет его КАЖДОМУ стандартному
+ # Формат 2.18 (8.3.25): режим приведения типов. Платформа пишет его КАЖДОМУ стандартному
# реквизиту; значение всегда TransformValues, кроме владельца (Owner) — там Deny.
- if ($script:isFormat220) {
+ if ($script:isFormat218) {
$trm = OvOr 'TypeReductionMode' $(if ($attrName -ceq 'Owner') { 'Deny' } else { 'TransformValues' })
X "$indent`t$trm"
}
@@ -1955,9 +1955,9 @@ function Emit-Attribute {
X "$indent`t`t$dh"
}
}
- # Формат 2.20 (8.3.27): режим приведения типов — последним в Properties и ТОЛЬКО у измерений
+ # Формат 2.18 (8.3.25): режим приведения типов — последним в Properties и ТОЛЬКО у измерений
# регистра сведений (у реквизитов/ресурсов и у прочих семейств регистров платформа его не пишет).
- if ($script:isFormat220 -and $elemTag -eq "Dimension" -and $context -eq "register-info") {
+ if ($script:isFormat218 -and $elemTag -eq "Dimension" -and $context -eq "register-info") {
$trm = if ($parsed.typeReductionMode) { "$($parsed.typeReductionMode)" } else { "TransformValues" }
X "$indent`t`t$trm"
}
@@ -4043,7 +4043,10 @@ function Get-FormatRank([string]$ver) {
$script:formatVersion = Detect-FormatVersion $OutputDir
$script:compatMode = Detect-CompatibilityMode $OutputDir
-# Формат 2.20+ (платформа 8.3.27) — только тогда эмитим новые свойства.
+# У каждого свойства свой порог: появился в формате 2.18 (платформа 8.3.25),
+# — в 2.20 (8.3.27). Один общий флаг здесь неверен: на проекте 2.18/2.19 он
+# глушил бы TypeReductionMode, который платформа этих версий пишет, и роундтрип бы разъезжался.
+$script:isFormat218 = (Get-FormatRank $script:formatVersion) -ge 218
$script:isFormat220 = (Get-FormatRank $script:formatVersion) -ge 220
# Дефолт длины номера строки ТЧ: с режима 8.3.27 платформа заводит новые ТЧ с 9 разрядами.
$script:lineNumberLengthDefault = if ((Get-CompatModeRank $script:compatMode) -ge 80327) { 9 } else { 5 }
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index a25106ef..076f5c3f 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.68 — Compile 1C metadata object from JSON
+# meta-compile v1.69 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -1340,9 +1340,9 @@ def emit_standard_attribute(indent, attr_name, ov=None):
X(f'{indent}\tfalse')
X(f'{indent}\t{ffv}')
X(f'{indent}\tAuto')
- # Формат 2.20 (8.3.27): режим приведения типов. Платформа пишет его КАЖДОМУ стандартному
+ # Формат 2.18 (8.3.25): режим приведения типов. Платформа пишет его КАЖДОМУ стандартному
# реквизиту; значение всегда TransformValues, кроме владельца (Owner) — там Deny.
- if is_format_220:
+ if is_format_218:
trm = ov.get('TypeReductionMode', 'Deny' if attr_name == 'Owner' else 'TransformValues')
X(f'{indent}\t{trm}')
X(f'{indent}\t')
@@ -2017,9 +2017,9 @@ def emit_attribute(indent, parsed, context, elem_tag='Attribute'):
# DataHistory — not for Chart* types and non-InformationRegister register family
if context not in ('chart', 'register-other', 'register-accum', 'register-calc', 'register-account'):
X(f'{indent}\t\t{parsed.get("dataHistory") or "Use"}')
- # Формат 2.20 (8.3.27): режим приведения типов — последним в Properties и ТОЛЬКО у измерений
+ # Формат 2.18 (8.3.25): режим приведения типов — последним в Properties и ТОЛЬКО у измерений
# регистра сведений (у реквизитов/ресурсов и у прочих семейств регистров платформа его не пишет).
- if is_format_220 and elem_tag == 'Dimension' and context == 'register-info':
+ if is_format_218 and elem_tag == 'Dimension' and context == 'register-info':
X(f'{indent}\t\t{parsed.get("typeReductionMode") or "TransformValues"}')
X(f'{indent}\t')
X(f'{indent}{elem_tag}>')
@@ -3935,7 +3935,10 @@ def format_rank(ver):
format_version = detect_format_version(output_dir)
compat_mode = detect_compatibility_mode(output_dir)
-# Формат 2.20+ (платформа 8.3.27) — только тогда эмитим новые свойства.
+# У каждого свойства свой порог: появился в формате 2.18 (платформа 8.3.25),
+# — в 2.20 (8.3.27). Один общий флаг здесь неверен: на проекте 2.18/2.19 он
+# глушил бы TypeReductionMode, который платформа этих версий пишет, и роундтрип бы разъезжался.
+is_format_218 = format_rank(format_version) >= 218
is_format_220 = format_rank(format_version) >= 220
# Дефолт длины номера строки ТЧ: с режима 8.3.27 платформа заводит новые ТЧ с 9 разрядами.
line_number_length_default = 9 if compat_mode_rank(compat_mode) >= 80327 else 5
diff --git a/.claude/skills/meta-validate/scripts/meta-validate.ps1 b/.claude/skills/meta-validate/scripts/meta-validate.ps1
index d2005e7b..5f0b1d4d 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.12 — Validate 1C metadata object structure (+корневой : скаляр без структуры = ошибка)
+# meta-validate v1.13 — Validate 1C metadata object structure (+корневой : скаляр без структуры = ошибка)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -344,8 +344,9 @@ if ($root.NamespaceURI -ne $expectedNs) {
$version = $root.GetAttribute("version")
if (-not $version) {
Report-Warn "1. Missing version attribute on MetaDataObject"
-} elseif ($version -ne "2.17" -and $version -ne "2.20") {
- Report-Warn "1. Unusual version '$version' (expected 2.17 or 2.20)"
+} 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)"
}
# Detect type element — exactly one child element in md namespace
@@ -1499,7 +1500,7 @@ if ($script:configDir) {
# рапортует успех, а свойство теряется); (2) подсказать, что конструкция требует более нового
# формата. Расширяется одной строкой на свойство — задел под 2.21 (8.5) и последующие.
$versionedProps = @{
- "TypeReductionMode" = "2.20" # режим приведения типов (стандартные реквизиты, измерения РС)
+ "TypeReductionMode" = "2.18" # режим приведения типов (стандартные реквизиты, измерения РС)
"LineNumberLength" = "2.20" # длина номера строки ТЧ (5..9)
}
# Версия формата как число: "2.20" → 220. Строковое сравнение неверно ("2.9" > "2.17").
diff --git a/.claude/skills/meta-validate/scripts/meta-validate.py b/.claude/skills/meta-validate/scripts/meta-validate.py
index 110eac41..11ab456c 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.12 — Validate 1C metadata object structure (Python port) (+корневой : скаляр без структуры = ошибка)
+# meta-validate v1.13 — Validate 1C metadata object structure (Python port) (+корневой : скаляр без структуры = ошибка)
# 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)
}
diff --git a/tests/skills/cases/meta-compile/format-218-props.json b/tests/skills/cases/meta-compile/format-218-props.json
new file mode 100644
index 00000000..9c2d0dd3
--- /dev/null
+++ b/tests/skills/cases/meta-compile/format-218-props.json
@@ -0,0 +1,31 @@
+{
+ "name": "Формат 2.18 (8.3.25): TypeReductionMode есть, LineNumberLength ещё нет",
+ "setup": "empty-config-218",
+ "preRun": [
+ {
+ "script": "meta-compile/scripts/meta-compile",
+ "input": { "type": "Catalog", "name": "Валюты" },
+ "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
+ }
+ ],
+ "input": [
+ {
+ "type": "Catalog",
+ "name": "Договоры",
+ "owners": ["Catalog.Валюты"],
+ "standardAttributes": { "Description": { "fillChecking": "ShowError" } },
+ "tabularSections": { "Условия": ["Условие: String(100)"] }
+ },
+ {
+ "type": "InformationRegister",
+ "name": "КурсыВалют",
+ "periodicity": "Day",
+ "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter"],
+ "resources": ["Курс: Number(15,4)"]
+ }
+ ],
+ "validatePath": "Catalogs/Договоры",
+ "expect": {
+ "files": ["Catalogs/Договоры.xml", "InformationRegisters/КурсыВалют.xml"]
+ }
+}
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Валюты.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Валюты.xml
new file mode 100644
index 00000000..7d657b8b
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Валюты.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+
+ Валюты
+
+
+ ru
+ Валюты
+
+
+
+ false
+ HierarchyFoldersAndItems
+ false
+ 2
+ true
+ true
+
+ ToItems
+ 9
+ 25
+ String
+ Variable
+ WholeCatalog
+ false
+ true
+ AsDescription
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ Catalog.Валюты.StandardAttribute.Description
+ Catalog.Валюты.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ Managed
+ Use
+
+
+
+
+
+ Use
+ Auto
+ DontUse
+ false
+ false
+
+
+
+
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Валюты/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Валюты/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Договоры.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Договоры.xml
new file mode 100644
index 00000000..736b68c3
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Договоры.xml
@@ -0,0 +1,436 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+
+ Договоры
+
+
+ ru
+ Договоры
+
+
+
+ false
+ HierarchyFoldersAndItems
+ false
+ 2
+ true
+ true
+
+ Catalog.Валюты
+
+ ToItems
+ 9
+ 25
+ String
+ Variable
+ WholeCatalog
+ false
+ true
+ AsDescription
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ true
+ Auto
+ Deny
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ true
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ Catalog.Договоры.StandardAttribute.Description
+ Catalog.Договоры.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ Managed
+ Use
+
+
+
+
+
+ Use
+ Auto
+ DontUse
+ false
+ false
+
+
+
+
+
+ UUID-013
+ UUID-014
+
+
+ UUID-015
+ UUID-016
+
+
+
+ Условия
+
+
+ ru
+ Условия
+
+
+
+
+ DontCheck
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+
+
+
+
+ Условие
+
+
+ ru
+ Условие
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Договоры/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/format-218-props/Catalogs/Договоры/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/Configuration.xml
new file mode 100644
index 00000000..4684d6fc
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/Configuration.xml
@@ -0,0 +1,254 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ Валюты
+ Договоры
+ КурсыВалют
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/InformationRegisters/КурсыВалют.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/InformationRegisters/КурсыВалют.xml
new file mode 100644
index 00000000..8d8e50fd
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/InformationRegisters/КурсыВалют.xml
@@ -0,0 +1,266 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ КурсыВалют
+
+
+ ru
+ Курсы валют
+
+
+
+ true
+ InDialog
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+ Day
+ Independent
+ false
+ false
+ Managed
+ Use
+ false
+ false
+
+
+
+
+
+ DontUse
+ false
+ false
+
+
+
+
+ Курс
+
+
+ ru
+ Курс
+
+
+
+
+ xs:decimal
+
+ 15
+ 4
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+ 0
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+ Валюта
+
+
+ ru
+ Валюта
+
+
+
+
+ d5p1:CatalogRef.Валюты
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ true
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ true
+ true
+ false
+ DontIndex
+ Use
+ Use
+ TransformValues
+
+
+
+
+
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/InformationRegisters/КурсыВалют/Ext/RecordSetModule.bsl b/tests/skills/cases/meta-compile/snapshots/format-218-props/InformationRegisters/КурсыВалют/Ext/RecordSetModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/format-218-props/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/format-218-props/Languages/Русский.xml
new file mode 100644
index 00000000..28d781ed
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/format-218-props/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-validate/error-220-props-in-217.json b/tests/skills/cases/meta-validate/error-220-props-in-217.json
index 521c9eec..04dd4fa5 100644
--- a/tests/skills/cases/meta-validate/error-220-props-in-217.json
+++ b/tests/skills/cases/meta-validate/error-220-props-in-217.json
@@ -1,9 +1,12 @@
{
- "name": "Валидатор находит ошибку: свойства формата 2.20 в файле со штампом 2.17",
+ "name": "Валидатор находит ошибку: свойства формата 2.18 и 2.20 в файле со штампом 2.17",
"setup": "fixture:catalog-220-props-in-217",
"params": { "objectPath": "Catalogs/Договоры.xml" },
"expectError": true,
"expect": {
- "stdoutContains": "появился в формате 2.20, а файл объявлен как 2.17"
+ "stdoutContains": [
+ " появился в формате 2.20, а файл объявлен как 2.17",
+ " появился в формате 2.18, а файл объявлен как 2.17"
+ ]
}
}
diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-218-trm/Catalogs/Договоры.xml b/tests/skills/cases/meta-validate/fixtures/catalog-218-trm/Catalogs/Договоры.xml
new file mode 100644
index 00000000..651fd605
--- /dev/null
+++ b/tests/skills/cases/meta-validate/fixtures/catalog-218-trm/Catalogs/Договоры.xml
@@ -0,0 +1,436 @@
+
+
+
+
+
+ 90475793-7f2d-4304-bab7-16809d2812b3
+ 392ed078-9828-4325-b7d9-2113acf8602d
+
+
+ 87310fbf-3c05-4451-9ca2-3735afb4375a
+ cac80127-3728-41e4-a288-d569b0a9066e
+
+
+ 5ae4225d-61d5-4642-b834-9701eb2b4d7f
+ 1bde218c-5ff8-4174-8220-3681d70e646d
+
+
+ ffcfea35-91c0-4ad1-b76e-2af5c16e3f31
+ 990952eb-8923-4857-8669-1d0f1ed62ce0
+
+
+ 2a2f6f30-ef6f-4b2b-8344-1c4a910fcd03
+ 8bc0a66d-e4d8-4b3d-b78a-766ea4f331a7
+
+
+
+ Договоры
+
+
+ ru
+ Договоры
+
+
+
+ false
+ HierarchyFoldersAndItems
+ false
+ 2
+ true
+ true
+
+ Catalog.Валюты
+
+ ToItems
+ 9
+ 25
+ String
+ Variable
+ WholeCatalog
+ false
+ true
+ AsDescription
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ true
+ Auto
+ Deny
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ true
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ Catalog.Договоры.StandardAttribute.Description
+ Catalog.Договоры.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ Managed
+ Use
+
+
+
+
+
+ Use
+ Auto
+ DontUse
+ false
+ false
+
+
+
+
+
+ e5e53441-4538-43f1-ac6c-c545838f7191
+ c6804634-97d4-47b7-84cd-cb42c0faa828
+
+
+ ca4e3837-ef21-4cb6-beb0-2b45d2fbc1c2
+ 146b9c9c-27bc-4b4e-bb1b-5ef825414f3f
+
+
+
+ Условия
+
+
+ ru
+ Условия
+
+
+
+
+ DontCheck
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+
+
+
+
+ Условие
+
+
+ ru
+ Условие
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-219-trm/Catalogs/Договоры.xml b/tests/skills/cases/meta-validate/fixtures/catalog-219-trm/Catalogs/Договоры.xml
new file mode 100644
index 00000000..5ff53d6f
--- /dev/null
+++ b/tests/skills/cases/meta-validate/fixtures/catalog-219-trm/Catalogs/Договоры.xml
@@ -0,0 +1,436 @@
+
+
+
+
+
+ 90475793-7f2d-4304-bab7-16809d2812b3
+ 392ed078-9828-4325-b7d9-2113acf8602d
+
+
+ 87310fbf-3c05-4451-9ca2-3735afb4375a
+ cac80127-3728-41e4-a288-d569b0a9066e
+
+
+ 5ae4225d-61d5-4642-b834-9701eb2b4d7f
+ 1bde218c-5ff8-4174-8220-3681d70e646d
+
+
+ ffcfea35-91c0-4ad1-b76e-2af5c16e3f31
+ 990952eb-8923-4857-8669-1d0f1ed62ce0
+
+
+ 2a2f6f30-ef6f-4b2b-8344-1c4a910fcd03
+ 8bc0a66d-e4d8-4b3d-b78a-766ea4f331a7
+
+
+
+ Договоры
+
+
+ ru
+ Договоры
+
+
+
+ false
+ HierarchyFoldersAndItems
+ false
+ 2
+ true
+ true
+
+ Catalog.Валюты
+
+ ToItems
+ 9
+ 25
+ String
+ Variable
+ WholeCatalog
+ false
+ true
+ AsDescription
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ true
+ Auto
+ Deny
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ true
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ Catalog.Договоры.StandardAttribute.Description
+ Catalog.Договоры.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ Managed
+ Use
+
+
+
+
+
+ Use
+ Auto
+ DontUse
+ false
+ false
+
+
+
+
+
+ e5e53441-4538-43f1-ac6c-c545838f7191
+ c6804634-97d4-47b7-84cd-cb42c0faa828
+
+
+ ca4e3837-ef21-4cb6-beb0-2b45d2fbc1c2
+ 146b9c9c-27bc-4b4e-bb1b-5ef825414f3f
+
+
+
+ Условия
+
+
+ ru
+ Условия
+
+
+
+
+ DontCheck
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+ TransformValues
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+
+
+
+
+ Условие
+
+
+ ru
+ Условие
+
+
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/meta-validate/valid-218-typereductionmode.json b/tests/skills/cases/meta-validate/valid-218-typereductionmode.json
new file mode 100644
index 00000000..848b7453
--- /dev/null
+++ b/tests/skills/cases/meta-validate/valid-218-typereductionmode.json
@@ -0,0 +1,9 @@
+{
+ "name": "Файл формата 2.18 с TypeReductionMode валиден (тег появился именно в 2.18)",
+ "setup": "fixture:catalog-218-trm",
+ "params": { "objectPath": "Catalogs/Договоры.xml" },
+ "noSnapshot": "meta-validate только читает и печатает — эталон зафиксировал бы фикстуру, а не выход проверяемого навыка; проверяется stdout",
+ "expect": {
+ "stdoutNotContains": ["появился в формате", "Unusual version"]
+ }
+}
diff --git a/tests/skills/cases/meta-validate/valid-219-version-accepted.json b/tests/skills/cases/meta-validate/valid-219-version-accepted.json
new file mode 100644
index 00000000..6ffb651e
--- /dev/null
+++ b/tests/skills/cases/meta-validate/valid-219-version-accepted.json
@@ -0,0 +1,9 @@
+{
+ "name": "Штамп 2.19 (8.3.26) — законная версия формата, не «Unusual version»",
+ "setup": "fixture:catalog-219-trm",
+ "params": { "objectPath": "Catalogs/Договоры.xml" },
+ "noSnapshot": "meta-validate только читает и печатает — эталон зафиксировал бы фикстуру, а не выход проверяемого навыка; проверяется stdout",
+ "expect": {
+ "stdoutNotContains": ["Unusual version", "появился в формате"]
+ }
+}
diff --git a/tests/skills/runner.mjs b/tests/skills/runner.mjs
index 6996634f..0e2b614e 100644
--- a/tests/skills/runner.mjs
+++ b/tests/skills/runner.mjs
@@ -125,8 +125,11 @@ function ensureSetup(setupName, runtime, skillCasesDir) {
// Пустые конфигурации-фикстуры. Версия формата и режим совместимости — независимые оси:
// формат задаёт платформа выгрузки, а режим влияет на дефолт у ТЧ
// (<=8_3_26 → 5, >=8_3_27 → 9). Отсюда две 2.20-фикстуры с разными режимами.
+ // Фикстура 2.18 (8.3.25) держит границу между свойствами: TypeReductionMode там уже есть,
+ // а LineNumberLength ещё нет — он появился только в 2.20.
const EMPTY_CONFIGS = {
'empty-config': [],
+ 'empty-config-218': ['-FormatVersion', '2.18', '-CompatibilityMode', 'Version8_3_24'],
'empty-config-220': ['-FormatVersion', '2.20', '-CompatibilityMode', 'Version8_3_27'],
'empty-config-220-compat24': ['-FormatVersion', '2.20', '-CompatibilityMode', 'Version8_3_24'],
};