diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1 index dc2ae3b7a..1a1c0571d 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.19 — Validate 1C managed form +# form-validate v1.20 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -74,63 +74,56 @@ function Test-ExternalObjectRoot([string]$xmlPath) { return $false } -# --- Detect context: config vs EPF/ERF --- -# Walk up from FormPath looking for Configuration.xml → config context -# No Configuration.xml → external data processor / report (EPF/ERF) -$script:isConfigContext = $false -$walkDir = Split-Path (Resolve-Path $FormPath) -Parent -for ($i = 0; $i -lt 15; $i++) { - if (-not $walkDir -or $walkDir -eq (Split-Path $walkDir)) { break } - # Порядок проверок тот же, что у Detect-FormatVersion: сначала корень автономной обработки, - # потом Configuration.xml — иначе форма внутри EPF, лежащей в дереве конфигурации, взяла бы - # версию конфигурации. - $extRoot = "$walkDir.xml" - if (-not $script:versionAnchor) { - if (Test-ExternalObjectRoot $extRoot) { - # Ближайший якорь побеждает: автономная обработка остаётся автономной, даже если её - # исходники лежат внутри дерева с Configuration.xml (типовая раскладка проекта: - # src/cf рядом с src/epf). Иначе её собственные External*-типы считались бы ошибкой. - $script:versionAnchor = $extRoot - break - } - } - if (Test-Path (Join-Path $walkDir "Configuration.xml")) { - $script:isConfigContext = $true - $script:configXmlPath = Join-Path $walkDir "Configuration.xml" - if (-not $script:versionAnchor) { $script:versionAnchor = $script:configXmlPath } - break - } - $walkDir = Split-Path $walkDir +# Штамп версии формата — атрибут version КОРНЕВОГО элемента файла. Копия общего эталона (семья +# root_version, авторитет — meta-validate). +function Get-RootVersion([string]$xmlPath) { + if (-not (Test-Path -LiteralPath $xmlPath -PathType Leaf)) { return $null } + $buf = New-Object byte[] 4096 + $fs = [System.IO.File]::OpenRead($xmlPath) + try { $len = $fs.Read($buf, 0, $buf.Length) } finally { $fs.Dispose() } + $head = [System.Text.Encoding]::UTF8.GetString($buf, 0, $len) + $m = [regex]::Match($head, '<[A-Za-z_][\w.:-]*(\s[^>]*)?/?>') + if (-not $m.Success) { return $null } + $v = [regex]::Match($m.Groups[1].Value, '(?:^|\s)version="([^"]*)"') + if ($v.Success) { return $v.Groups[1].Value } + return $null } -# Версия формата выгрузки. Копия общего эталона (семья detect_format_version, авторитет — -# form-compile): та же ветка для автономной EPF/ERF, где версию несёт корень обработки. -function Detect-FormatVersion([string]$dir) { - $d = $dir - while ($d) { - # Автономная внешняя обработка/отчёт: своего Configuration.xml у неё нет, версию несёт - # корень самой обработки. Без этого форма и макет внутри обработки 2.21 писались бы 2.17. - $extPath = "$d.xml" - if (Test-Path $extPath) { - $extText = [System.IO.File]::ReadAllText($extPath, [System.Text.Encoding]::UTF8) - $extHead = $extText.Substring(0, [Math]::Min(2000, $extText.Length)) - if ($extHead -match '<(ExternalDataProcessor|ExternalReport)[ >]' -and $extHead -match ']+version="(\d+\.\d+)"') { return $Matches[1] } - } - $cfgPath = Join-Path $d "Configuration.xml" - if (Test-Path $cfgPath) { - $cfgText = [System.IO.File]::ReadAllText($cfgPath, [System.Text.Encoding]::UTF8) - # Длину среза берём по СТРОКЕ, а не по размеру файла: размер в БАЙТАХ, Substring считает - # СИМВОЛЫ, и на кириллице байт больше — короткий Configuration.xml ронял навык исключением. - $head = $cfgText.Substring(0, [Math]::Min(2000, $cfgText.Length)) - if ($head -match ']+version="(\d+\.\d+)"') { return $Matches[1] } - } - $parent = Split-Path $d -Parent - if ($parent -eq $d) { break } +# Якорь выгрузки: корень автономной EPF/ERF либо Configuration.xml, ближайший вверх. Копия общего +# эталона (семья find_dump_anchor, авторитет — meta-validate). +function Find-DumpAnchor([string]$startDir) { + $d = $startDir + for ($i = 0; $i -lt 15 -and $d; $i++) { + if (Test-ExternalObjectRoot "$d.xml") { return "$d.xml" } + $cfg = Join-Path $d "Configuration.xml" + if (Test-Path $cfg) { return $cfg } + $parent = [System.IO.Path]::GetDirectoryName($d) + if (-not $parent -or $parent -eq $d) { break } $d = $parent } - return "2.17" + return $null } +# Владелец тела X/Ext/<файл>.xml — дескриптор X.xml рядом с каталогом X. У тел конфигурации (и +# расширения) соседа-дескриптора нет, владелец — Configuration.xml внутри X. Иначе — не определён. +function Get-ExtBodyOwner([string]$bodyPath) { + $extDir = [System.IO.Path]::GetDirectoryName($bodyPath) + if ([System.IO.Path]::GetFileName($extDir) -cne "Ext") { return $null } + $objDir = [System.IO.Path]::GetDirectoryName($extDir) + if (Test-Path -LiteralPath "$objDir.xml" -PathType Leaf) { return "$objDir.xml" } + $cfg = Join-Path $objDir "Configuration.xml" + if (Test-Path -LiteralPath $cfg -PathType Leaf) { return $cfg } + return $null +} + +# --- Detect context: config vs EPF/ERF --- +# Ближайший якорь выгрузки вверх от формы. Configuration.xml → конфигурация; корень EPF/ERF → внешняя +# обработка/отчёт. Ближайший побеждает: автономная обработка остаётся автономной, даже если её +# исходники лежат внутри дерева с Configuration.xml (типовая раскладка проекта: src/cf рядом с +# src/epf). Иначе её собственные External*-типы считались бы ошибкой. +$script:dumpAnchor = Find-DumpAnchor (Split-Path (Resolve-Path $FormPath) -Parent) +$script:isConfigContext = [bool]($script:dumpAnchor -and [System.IO.Path]::GetFileName($script:dumpAnchor) -eq "Configuration.xml") + # --- Counters --- $errors = 0 @@ -1024,22 +1017,27 @@ if (-not $stopped) { } } -# --- Check 14: версия формата формы совпадает с версией выгрузки --- -# Версию задаёт платформа, которой выгружали, и в пределах одной выгрузки она едина. Форма из -# другой версии — «Неизвестная версия формата N загружаемого файла»: платформа не читает файл, -# который новее её самой. Источник версии ищем общим helper-ом: он же покрывает автономную -# внешнюю обработку/отчёт, где Configuration.xml нет и версию несёт корень самой обработки. +# --- Check 14: версия формата формы — как у её дескриптора; сверка с выгрузкой --- +# Тело формы и дескриптор Forms/<Имя>.xml (у общей формы — CommonForms/<Имя>.xml) платформа загружает +# только в одной версии: «Версия формата загружаемого файла … отличается от версии формата ранее +# загруженных файлов». С остальной выгрузкой форма может расходиться — платформа такое грузит, это +# лишь неоднородность выгрузки (типично после мержа веток, выгруженных разными платформами). -if (-not $stopped -and $script:versionAnchor) { +if (-not $stopped) { $formVer = $root.GetAttribute("version") - $dumpVer = Detect-FormatVersion (Split-Path (Resolve-Path $FormPath) -Parent) + $formFull = (Resolve-Path $FormPath).Path + $ownerPath = Get-ExtBodyOwner $formFull + $ownerVer = if ($ownerPath) { Get-RootVersion $ownerPath } else { $null } + $dumpVer = if ($script:dumpAnchor) { Get-RootVersion $script:dumpAnchor } else { $null } if (-not $formVer) { Report-OK "14. Format version: not comparable" - } elseif ($formVer -ne $dumpVer) { - Report-Error "14. Format version $formVer differs from the dump ($dumpVer) — a dump carries one version, the platform refuses a file it cannot read" - } else { - Report-OK "14. Format version: $formVer, matches the dump" + } elseif ($ownerVer -and $formVer -ne $ownerVer) { + Report-Error "14. Format version $formVer differs from the form descriptor $([System.IO.Path]::GetFileName($ownerPath)) ($ownerVer) — the platform refuses to load parts of one object in different formats" + } elseif ($dumpVer -and $formVer -ne $dumpVer) { + Report-Warn "14. Format version $formVer differs from the dump ($dumpVer) — the platform loads it, but the dump is no longer uniform (typical after merging branches dumped by different platforms)" + } elseif ($ownerVer -or $dumpVer) { + Report-OK "14. Format version: $formVer, matches the descriptor and the dump" } } diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py index d3d577f07..d96853c1a 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.19 — Validate 1C managed form +# form-validate v1.20 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -88,32 +88,54 @@ def _sg_is_external_root(xml_path): return False -# Версия формата выгрузки. Копия общего эталона (семья detect_format_version, авторитет — -# form-compile): та же ветка для автономной EPF/ERF, где версию несёт корень обработки. -def detect_format_version(d): - while d: - # Автономная внешняя обработка/отчёт: своего Configuration.xml у неё нет, версию несёт - # корень самой обработки. Без этого форма и макет внутри обработки 2.21 писались бы 2.17. - ext_path = d + ".xml" - if os.path.isfile(ext_path): - with open(ext_path, "r", encoding="utf-8-sig") as f: - ext_head = f.read(2000) - if re.search(r'<(ExternalDataProcessor|ExternalReport)[ >]', ext_head): - m = re.search(r']+version="(\d+\.\d+)"', ext_head) - if m: - return m.group(1) - cfg_path = os.path.join(d, "Configuration.xml") - if os.path.isfile(cfg_path): - with open(cfg_path, "r", encoding="utf-8-sig") as f: - head = f.read(2000) - m = re.search(r']+version="(\d+\.\d+)"', head) - if m: - return m.group(1) +# Штамп версии формата — атрибут version КОРНЕВОГО элемента файла. Копия общего эталона (семья +# root_version, авторитет — meta-validate). +def root_version(xml_path): + if not os.path.isfile(xml_path): + return None + with open(xml_path, "rb") as f: + head = f.read(4096).decode("utf-8", errors="ignore") + m = re.search(r'<[A-Za-z_][\w.:-]*(\s[^>]*)?/?>', head) + if not m: + return None + v = re.search(r'(?:^|\s)version="([^"]*)"', m.group(1) or "") + if v: + return v.group(1) + return None + + +# Якорь выгрузки: корень автономной EPF/ERF либо Configuration.xml, ближайший вверх. Копия общего +# эталона (семья find_dump_anchor, авторитет — meta-validate). +def find_dump_anchor(start_dir): + d = start_dir + for _ in range(15): + if not d: + break + if _sg_is_external_root(d + ".xml"): + return d + ".xml" + cfg = os.path.join(d, "Configuration.xml") + if os.path.exists(cfg): + return cfg parent = os.path.dirname(d) - if parent == d: + if not parent or parent == d: break d = parent - return "2.17" + return None + + +# Владелец тела X/Ext/<файл>.xml — дескриптор X.xml рядом с каталогом X. У тел конфигурации (и +# расширения) соседа-дескриптора нет, владелец — Configuration.xml внутри X. Иначе — не определён. +def ext_body_owner(body_path): + ext_dir = os.path.dirname(body_path) + if os.path.basename(ext_dir) != "Ext": + return None + obj_dir = os.path.dirname(ext_dir) + if os.path.isfile(obj_dir + ".xml"): + return obj_dir + ".xml" + cfg = os.path.join(obj_dir, "Configuration.xml") + if os.path.isfile(cfg): + return cfg + return None # ── Format version ─────────────────────────────────────────── @@ -187,32 +209,12 @@ def main(): root = tree.getroot() # Detect context: config vs EPF/ERF - is_config_context = False - config_xml_path = '' - version_anchor = '' - walk_dir = os.path.dirname(os.path.abspath(form_path)) - for _ in range(15): - parent = os.path.dirname(walk_dir) - if parent == walk_dir: - break - # Порядок проверок тот же, что у detect_format_version: сначала корень автономной обработки, - # потом Configuration.xml — иначе форма внутри EPF, лежащей в дереве конфигурации, взяла бы - # версию конфигурации. - ext_root = walk_dir + '.xml' - if not version_anchor: - if _sg_is_external_root(ext_root): - # Ближайший якорь побеждает: автономная обработка остаётся автономной, даже если её - # исходники лежат внутри дерева с Configuration.xml (типовая раскладка проекта: - # src/cf рядом с src/epf). Иначе её собственные External*-типы считались бы ошибкой. - version_anchor = ext_root - break - if os.path.isfile(os.path.join(walk_dir, 'Configuration.xml')): - is_config_context = True - config_xml_path = os.path.join(walk_dir, 'Configuration.xml') - if not version_anchor: - version_anchor = config_xml_path - break - walk_dir = parent + # Ближайший якорь выгрузки вверх от формы. Configuration.xml → конфигурация; корень EPF/ERF → внешняя + # обработка/отчёт. Ближайший побеждает: автономная обработка остаётся автономной, даже если её + # исходники лежат внутри дерева с Configuration.xml (типовая раскладка проекта: src/cf рядом с + # src/epf). Иначе её собственные External*-типы считались бы ошибкой. + dump_anchor = find_dump_anchor(os.path.dirname(os.path.abspath(form_path))) + is_config_context = bool(dump_anchor) and os.path.basename(dump_anchor) == 'Configuration.xml' errors = 0 warnings = 0 @@ -957,22 +959,28 @@ def main(): elif prefix_errors == 0: report_ok(f'13. Namespace prefixes: {prefix_checked} values, all declared') - # --- Check 14: версия формата формы совпадает с версией выгрузки --- - # Версию задаёт платформа, которой выгружали, и в пределах одной выгрузки она едина. Форма из - # другой версии — «Неизвестная версия формата N загружаемого файла»: платформа не читает файл, - # который новее её самой. Источник версии ищем общим helper-ом: он же покрывает автономную - # внешнюю обработку/отчёт, где Configuration.xml нет и версию несёт корень самой обработки. - if not stopped and version_anchor: + # --- Check 14: версия формата формы — как у её дескриптора; сверка с выгрузкой --- + # Тело формы и дескриптор Forms/<Имя>.xml (у общей формы — CommonForms/<Имя>.xml) платформа загружает + # только в одной версии: «Версия формата загружаемого файла … отличается от версии формата ранее + # загруженных файлов». С остальной выгрузкой форма может расходиться — платформа такое грузит, это + # лишь неоднородность выгрузки (типично после мержа веток, выгруженных разными платформами). + if not stopped: form_ver = root.get('version', '') - dump_ver = detect_format_version(os.path.dirname(os.path.abspath(form_path))) + owner_path = ext_body_owner(os.path.abspath(form_path)) + owner_ver = root_version(owner_path) if owner_path else None + dump_ver = root_version(dump_anchor) if dump_anchor else None if not form_ver: report_ok('14. Format version: not comparable') - elif form_ver != dump_ver: - report_error(f'14. Format version {form_ver} differs from the dump ({dump_ver}) ' - '— a dump carries one version, the platform refuses a file it cannot read') - else: - report_ok(f'14. Format version: {form_ver}, matches the dump') + elif owner_ver and form_ver != owner_ver: + report_error(f'14. Format version {form_ver} differs from the form descriptor ' + f'{os.path.basename(owner_path)} ({owner_ver}) ' + '— the platform refuses to load parts of one object in different formats') + elif dump_ver and form_ver != dump_ver: + report_warn(f'14. Format version {form_ver} differs from the dump ({dump_ver}) — the platform loads it, ' + 'but the dump is no longer uniform (typical after merging branches dumped by different platforms)') + elif owner_ver or dump_ver: + report_ok(f'14. Format version: {form_ver}, matches the descriptor and the dump') # --- Finalize --- checks = ok_count + errors + warnings diff --git a/tests/skills/cases/form-validate/error-version-differs-from-descriptor.json b/tests/skills/cases/form-validate/error-version-differs-from-descriptor.json new file mode 100644 index 000000000..f45e9fb49 --- /dev/null +++ b/tests/skills/cases/form-validate/error-version-differs-from-descriptor.json @@ -0,0 +1,9 @@ +{ + "name": "Тело формы 2.18 при дескрипторе 2.20 — ошибка: платформа такую пару не загрузит", + "setup": "fixture:version-parts-form-body", + "params": { "formPath": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml" }, + "expectError": true, + "noSnapshot": "form-validate только читает и печатает — эталон зафиксировал бы фикстуру, а не выход проверяемого навыка; проверяется stdout", + "expect": { "stdoutContains": ["14. Format version 2.18 differs from the form descriptor ФормаЭлемента.xml (2.20)"] }, + "skipPlatformVerify": "фикстура намеренно не загружается: тело формы и дескриптор в разных версиях формата" +} diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары.xml new file mode 100644 index 000000000..8d6b7a623 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары.xml @@ -0,0 +1,94 @@ + + + + + + 04cfef5a-d82d-4ce3-a4b2-61dcd7d63017 + 213110e1-e3eb-4e92-8a8c-062de0de7b5e + + + 5ad7b3d3-ea08-4041-b12b-c68aa1b87259 + cbbb4d87-25b8-4900-8804-ee7f4189a170 + + + 3f871bd5-0857-4e28-ad6b-4829e7adc05d + d42ac012-7ed7-4f68-85b3-a8542567ccc3 + + + 89b71b77-0695-412c-87b3-bf83a602d253 + ea354adc-650e-4ba8-a4da-604eace12a18 + + + f40d5653-27fb-4948-a00b-97bc732452e6 + cd900e1d-375e-43d5-88fd-5b4d48493b32 + + + + Товары + + + 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 + Catalog.Товары.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + +
ФормаЭлемента
+ +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help.xml new file mode 100644 index 000000000..ba3d59e46 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help/ru.html b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help/ru.html new file mode 100644 index 000000000..cacd16d9f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Help/ru.html @@ -0,0 +1,11 @@ + + + + + + + +

Catalogs/Товары

+

Описание.

+ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Predefined.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Predefined.xml new file mode 100644 index 000000000..bb92ad61c --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Ext/Predefined.xml @@ -0,0 +1,9 @@ + + + + Основной + + Основной + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента.xml new file mode 100644 index 000000000..019fa729e --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаЭлемента + + + ru + ФормаЭлемента + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml new file mode 100644 index 000000000..3ebf28477 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml @@ -0,0 +1,16 @@ + +
+ + true + + + + + + cfg:CatalogObject.Товары + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl new file mode 100644 index 000000000..4cf929983 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание.xml new file mode 100644 index 000000000..57ac68b7a --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template.xml new file mode 100644 index 000000000..ba3d59e46 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html new file mode 100644 index 000000000..46690e416 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая.xml new file mode 100644 index 000000000..e0481f4aa --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая.xml @@ -0,0 +1,17 @@ + + + + + Пустая + + + ru + Пустая + + + + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture.xml new file mode 100644 index 000000000..1bdfdfbe5 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture.xml @@ -0,0 +1,7 @@ + + + + Picture.png + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture/Picture.png b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture/Picture.png new file mode 100644 index 000000000..96729e159 Binary files /dev/null and b/tests/skills/cases/form-validate/fixtures/version-object-older/CommonPictures/Пустая/Ext/Picture/Picture.png differ diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Configuration.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Configuration.xml new file mode 100644 index 000000000..61fc637f4 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Configuration.xml @@ -0,0 +1,257 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 6a1d4c14-d008-4a76-adf7-2cd068816303 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 1db67a73-798b-4f46-95ab-a48dbc77df97 + + + e3687481-0a87-462c-a166-9f34594f9bba + e82637c1-18d7-4f62-8e56-2ea8c4047458 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 49c1f996-3202-46cd-8850-9029e818f18d + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 8e7835c9-3e32-4c89-9fbd-913f499e04bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 8e30c1da-e593-4418-8c69-772c67bcafc4 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + dd95720c-ad5c-441e-8c87-7ada01b89110 + + + + ПроверкаВерсий + + + ru + ПроверкаВерсий + + + + + Version8_3_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + Пустая + Товары + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..91ea580cb --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + cbab57f2-a0f3-4f0a-89ea-4cb19570ab75 + + + + + b553047f-c9aa-4157-978d-448ecad24248 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-object-older/Languages/Русский.xml b/tests/skills/cases/form-validate/fixtures/version-object-older/Languages/Русский.xml new file mode 100644 index 000000000..1f634b2d9 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-object-older/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары.xml new file mode 100644 index 000000000..c25e3c8d2 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары.xml @@ -0,0 +1,94 @@ + + + + + + 04cfef5a-d82d-4ce3-a4b2-61dcd7d63017 + 213110e1-e3eb-4e92-8a8c-062de0de7b5e + + + 5ad7b3d3-ea08-4041-b12b-c68aa1b87259 + cbbb4d87-25b8-4900-8804-ee7f4189a170 + + + 3f871bd5-0857-4e28-ad6b-4829e7adc05d + d42ac012-7ed7-4f68-85b3-a8542567ccc3 + + + 89b71b77-0695-412c-87b3-bf83a602d253 + ea354adc-650e-4ba8-a4da-604eace12a18 + + + f40d5653-27fb-4948-a00b-97bc732452e6 + cd900e1d-375e-43d5-88fd-5b4d48493b32 + + + + Товары + + + 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 + Catalog.Товары.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + +
ФормаЭлемента
+ +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help.xml new file mode 100644 index 000000000..237bf77a7 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help/ru.html b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help/ru.html new file mode 100644 index 000000000..cacd16d9f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Help/ru.html @@ -0,0 +1,11 @@ + + + + + + + +

Catalogs/Товары

+

Описание.

+ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Predefined.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Predefined.xml new file mode 100644 index 000000000..44dec0a3f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Ext/Predefined.xml @@ -0,0 +1,9 @@ + + + + Основной + + Основной + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента.xml new file mode 100644 index 000000000..16e4d32e9 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаЭлемента + + + ru + ФормаЭлемента + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml new file mode 100644 index 000000000..3ebf28477 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml @@ -0,0 +1,16 @@ + +
+ + true + + + + + + cfg:CatalogObject.Товары + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl new file mode 100644 index 000000000..4cf929983 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание.xml new file mode 100644 index 000000000..e50618222 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template.xml new file mode 100644 index 000000000..237bf77a7 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html new file mode 100644 index 000000000..46690e416 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая.xml new file mode 100644 index 000000000..e0481f4aa --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая.xml @@ -0,0 +1,17 @@ + + + + + Пустая + + + ru + Пустая + + + + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture.xml new file mode 100644 index 000000000..1bdfdfbe5 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture.xml @@ -0,0 +1,7 @@ + + + + Picture.png + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture/Picture.png b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture/Picture.png new file mode 100644 index 000000000..96729e159 Binary files /dev/null and b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/CommonPictures/Пустая/Ext/Picture/Picture.png differ diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Configuration.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Configuration.xml new file mode 100644 index 000000000..61fc637f4 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Configuration.xml @@ -0,0 +1,257 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 6a1d4c14-d008-4a76-adf7-2cd068816303 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 1db67a73-798b-4f46-95ab-a48dbc77df97 + + + e3687481-0a87-462c-a166-9f34594f9bba + e82637c1-18d7-4f62-8e56-2ea8c4047458 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 49c1f996-3202-46cd-8850-9029e818f18d + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 8e7835c9-3e32-4c89-9fbd-913f499e04bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 8e30c1da-e593-4418-8c69-772c67bcafc4 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + dd95720c-ad5c-441e-8c87-7ada01b89110 + + + + ПроверкаВерсий + + + ru + ПроверкаВерсий + + + + + Version8_3_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + Пустая + Товары + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..91ea580cb --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + cbab57f2-a0f3-4f0a-89ea-4cb19570ab75 + + + + + b553047f-c9aa-4157-978d-448ecad24248 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Languages/Русский.xml b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Languages/Русский.xml new file mode 100644 index 000000000..1f634b2d9 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts-form-body/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары.xml new file mode 100644 index 000000000..c25e3c8d2 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары.xml @@ -0,0 +1,94 @@ + + + + + + 04cfef5a-d82d-4ce3-a4b2-61dcd7d63017 + 213110e1-e3eb-4e92-8a8c-062de0de7b5e + + + 5ad7b3d3-ea08-4041-b12b-c68aa1b87259 + cbbb4d87-25b8-4900-8804-ee7f4189a170 + + + 3f871bd5-0857-4e28-ad6b-4829e7adc05d + d42ac012-7ed7-4f68-85b3-a8542567ccc3 + + + 89b71b77-0695-412c-87b3-bf83a602d253 + ea354adc-650e-4ba8-a4da-604eace12a18 + + + f40d5653-27fb-4948-a00b-97bc732452e6 + cd900e1d-375e-43d5-88fd-5b4d48493b32 + + + + Товары + + + 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 + Catalog.Товары.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + +
ФормаЭлемента
+ +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help.xml new file mode 100644 index 000000000..237bf77a7 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help/ru.html b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help/ru.html new file mode 100644 index 000000000..cacd16d9f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Help/ru.html @@ -0,0 +1,11 @@ + + + + + + + +

Catalogs/Товары

+

Описание.

+ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/ObjectModule.bsl new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Predefined.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Predefined.xml new file mode 100644 index 000000000..44dec0a3f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Ext/Predefined.xml @@ -0,0 +1,9 @@ + + + + Основной + + Основной + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента.xml new file mode 100644 index 000000000..16e4d32e9 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента.xml @@ -0,0 +1,21 @@ + + +
+ + ФормаЭлемента + + + ru + ФормаЭлемента + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml new file mode 100644 index 000000000..1a83222ab --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml @@ -0,0 +1,16 @@ + +
+ + true + + + + + + cfg:CatalogObject.Товары + + true + true + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl new file mode 100644 index 000000000..4cf929983 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание.xml new file mode 100644 index 000000000..e50618222 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template.xml new file mode 100644 index 000000000..237bf77a7 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template.xml @@ -0,0 +1,4 @@ + + + ru + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html new file mode 100644 index 000000000..46690e416 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Catalogs/Товары/Templates/Описание/Ext/Template/ru.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая.xml b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая.xml new file mode 100644 index 000000000..e0481f4aa --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая.xml @@ -0,0 +1,17 @@ + + + + + Пустая + + + ru + Пустая + + + + false + false + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture.xml b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture.xml new file mode 100644 index 000000000..1bdfdfbe5 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture.xml @@ -0,0 +1,7 @@ + + + + Picture.png + false + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture/Picture.png b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture/Picture.png new file mode 100644 index 000000000..96729e159 Binary files /dev/null and b/tests/skills/cases/form-validate/fixtures/version-parts/CommonPictures/Пустая/Ext/Picture/Picture.png differ diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Configuration.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Configuration.xml new file mode 100644 index 000000000..61fc637f4 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Configuration.xml @@ -0,0 +1,257 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 6a1d4c14-d008-4a76-adf7-2cd068816303 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 1db67a73-798b-4f46-95ab-a48dbc77df97 + + + e3687481-0a87-462c-a166-9f34594f9bba + e82637c1-18d7-4f62-8e56-2ea8c4047458 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 49c1f996-3202-46cd-8850-9029e818f18d + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 8e7835c9-3e32-4c89-9fbd-913f499e04bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 8e30c1da-e593-4418-8c69-772c67bcafc4 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + dd95720c-ad5c-441e-8c87-7ada01b89110 + + + + ПроверкаВерсий + + + ru + ПроверкаВерсий + + + + + Version8_3_27 + 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 + + + TextToSpeech + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_27 + + + + Русский + Пустая + Товары + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..91ea580cb --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + cbab57f2-a0f3-4f0a-89ea-4cb19570ab75 + + + + + b553047f-c9aa-4157-978d-448ecad24248 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/version-parts/Languages/Русский.xml b/tests/skills/cases/form-validate/fixtures/version-parts/Languages/Русский.xml new file mode 100644 index 000000000..1f634b2d9 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/version-parts/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/valid-version-matches-descriptor.json b/tests/skills/cases/form-validate/valid-version-matches-descriptor.json new file mode 100644 index 000000000..3882ee305 --- /dev/null +++ b/tests/skills/cases/form-validate/valid-version-matches-descriptor.json @@ -0,0 +1,7 @@ +{ + "name": "Форма в версии своего дескриптора и выгрузки — проверка 14 чисто", + "setup": "fixture:version-parts", + "params": { "formPath": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml" }, + "noSnapshot": "form-validate только читает и печатает — эталон зафиксировал бы фикстуру, а не выход проверяемого навыка; проверяется stdout", + "expect": { "stdoutContains": ["=== Validation OK: Form."] } +} diff --git a/tests/skills/cases/form-validate/warn-version-pair-differs-from-dump.json b/tests/skills/cases/form-validate/warn-version-pair-differs-from-dump.json new file mode 100644 index 000000000..643c76030 --- /dev/null +++ b/tests/skills/cases/form-validate/warn-version-pair-differs-from-dump.json @@ -0,0 +1,10 @@ +{ + "name": "Форма с дескриптором в 2.18 в выгрузке 2.20 (мерж веток) — только предупреждение: платформа такое грузит", + "setup": "fixture:version-object-older", + "params": { "formPath": "Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml" }, + "noSnapshot": "form-validate только читает и печатает — эталон зафиксировал бы фикстуру, а не выход проверяемого навыка; проверяется stdout", + "expect": { + "stdoutContains": ["14. Format version 2.18 differs from the dump (2.20) — the platform loads it"], + "stdoutNotContains": ["[ERROR]"] + } +} diff --git a/tests/skills/check-inline-drift.mjs b/tests/skills/check-inline-drift.mjs index 5e0d6341a..43c9eedad 100644 --- a/tests/skills/check-inline-drift.mjs +++ b/tests/skills/check-inline-drift.mjs @@ -120,7 +120,7 @@ const FAMILIES = [ // если <каталог>.xml — корень ExternalDataProcessor/ExternalReport, чего в дереве // конфигурации не бывает. Поэтому вариант один на всех, переключателя не нужно. { id: 'base', authority: 'form-compile', - consumers: ['cfe-borrow', 'cfe-patch-method', 'form-add', 'form-validate', 'help-add', 'interface-edit', + consumers: ['cfe-borrow', 'cfe-patch-method', 'form-add', 'help-add', 'interface-edit', 'meta-compile', 'mxl-compile', 'role-compile', 'role-edit', 'subsystem-compile', 'template-add', 'xdto-compile'] }, ], }, @@ -130,13 +130,19 @@ const FAMILIES = [ { name: 'root_version', py: 'root_version', ps1: 'Get-RootVersion', variants: [ - { id: 'base', authority: 'meta-validate', consumers: [] }, + { id: 'base', authority: 'meta-validate', consumers: ['form-validate'] }, ], }, { name: 'find_dump_anchor', py: 'find_dump_anchor', ps1: 'Find-DumpAnchor', variants: [ - { id: 'base', authority: 'meta-validate', consumers: [] }, + { id: 'base', authority: 'meta-validate', consumers: ['form-validate'] }, + ], + }, + { + name: 'ext_body_owner', py: 'ext_body_owner', ps1: 'Get-ExtBodyOwner', + variants: [ + { id: 'base', authority: 'form-validate', consumers: [] }, ], }, {