From af00aa4711bb14a7e03f12a9dc5ea4255ff5727a Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 12 Aug 2026 20:20:02 +0300 Subject: [PATCH] =?UTF-8?q?fix(form-validate,cfe-borrow):=20=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=BE=D1=87=D0=BD=D1=8B=D0=B5=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=BD=D1=8B=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=85=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Корпусный прогон (УТ/БП/ERP, 21 097 форм) после понижения Command/Action оставлял 8 форм с ошибками. Разобраны все, дефектов оказалось два. 1. Вложенная таблица. Путь Items.<Таблица>.CurrentData.<Поле> разрешался ОДНИМ шагом: если таблица сама привязана через Items.*, корнем оставался литерал «Items», и типовая форма объявлялась битой (НастройкаПравилОбработкиЗаявокСотрудников в БП и ERP). Теперь разрешение идёт цепочкой, со страховкой от кольца ссылок. 2. AutoCommandBar с обычным id вместо -1. Это соглашение, а не требование: 21 094 формы из 21 097 используют -1, но три платформа выгружает с обычным id и грузит их без нареканий. Понижено до предупреждения; ошибка осталась на случай, когда id вообще не число. Оставшиеся три формы — дубли id элементов и команд. Это НЕ ложные срабатывания: измерение по корпусу показало ровно по одному случаю на 21 097 форм, то есть опечатки вендора, а не структурное правило (были бы пулы id раздельными, пересечений были бы тысячи). Плюс кейс duplicate-id прямо требует считать дубль ошибкой. Итого по корпусу: 283 формы с ошибками → 3. Заодно дооформлена фикстура cfe-borrow/container-types (пространство имён веб-сервису, документ журналу и последовательности): verify-snapshots по cfe-borrow теперь 12/12. --- .../form-validate/scripts/form-validate.ps1 | 33 ++- .../form-validate/scripts/form-validate.py | 36 ++- .../cases/cfe-borrow/container-types.json | 94 +++++-- .../container-types/Configuration.xml | 1 + .../DocumentJournals/Складские.xml | 4 +- .../container-types/Documents/Накладная.xml | 82 ++++++ .../Documents/Накладная/Ext/ObjectModule.bsl | 0 .../Sequences/ПартионныйУчет.xml | 4 +- .../WebServices/СервисОбмена.xml | 2 +- .../Catalogs/Источник.xml | 91 +++++++ .../Catalogs/Источник/Ext/ObjectModule.bsl | 1 + .../Configuration.xml | 253 ++++++++++++++++++ .../DataProcessors/Spec.xml | 34 +++ .../DataProcessors/Spec/Ext/ManagerModule.bsl | 1 + .../DataProcessors/Spec/Ext/ObjectModule.bsl | 1 + .../DataProcessors/Spec/Forms/Форма.xml | 22 ++ .../Spec/Forms/Форма/Ext/Form.xml | 64 +++++ .../Spec/Forms/Форма/Ext/Form/Module.bsl | 19 ++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../Languages/Русский.xml | 16 ++ .../nested-table-currentdata.json | 7 + .../Catalogs/Источник.xml | 91 +++++++ .../Catalogs/Источник/Ext/ObjectModule.bsl | 0 .../Configuration.xml | 253 ++++++++++++++++++ .../DataProcessors/Spec.xml | 34 +++ .../DataProcessors/Spec/Ext/ManagerModule.bsl | 0 .../DataProcessors/Spec/Ext/ObjectModule.bsl | 0 .../DataProcessors/Spec/Forms/Форма.xml | 22 ++ .../Spec/Forms/Форма/Ext/Form.xml | 64 +++++ .../Spec/Forms/Форма/Ext/Form/Module.bsl | 19 ++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../Languages/Русский.xml | 16 ++ 32 files changed, 1266 insertions(+), 34 deletions(-) create mode 100644 tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная.xml create mode 100644 tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Configuration.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Languages/Русский.xml create mode 100644 tests/skills/cases/form-validate/nested-table-currentdata.json create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Configuration.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Languages/Русский.xml diff --git a/.claude/skills/form-validate/scripts/form-validate.ps1 b/.claude/skills/form-validate/scripts/form-validate.ps1 index 19d0790a..3e1f3716 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.14 — Validate 1C managed form +# form-validate v1.15 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -201,10 +201,15 @@ if (-not $stopped) { if ($acb) { $acbName = $acb.GetAttribute("name") $acbId = $acb.GetAttribute("id") + # id=-1 — соглашение, а не требование: в корпусе УТ/БП/ERP так у 21 094 форм из 21 097, + # но три формы платформа выгружает с обычным id и грузит их без нареканий. Поэтому + # предупреждение; ошибка — только если id вовсе не число. if ($acbId -eq "-1") { Report-OK "AutoCommandBar: name='$acbName', id=$acbId" + } elseif ($acbId -match '^-?\d+$') { + Report-Warn "AutoCommandBar id='$acbId', usually '-1'" } else { - Report-Error "AutoCommandBar id='$acbId', expected '-1'" + Report-Error "AutoCommandBar id='$acbId' is not a number" } } else { Report-Error "AutoCommandBar element missing" @@ -484,11 +489,19 @@ if (-not $stopped) { $segments = $cleanPath -split '\.' $rootAttr = $segments[0] - # Resolve Items..CurrentData.... — table element, not attribute - if ($rootAttr -eq 'Items') { + # Resolve Items..CurrentData.... — table element, not attribute. + # Разрешаем ЦЕПОЧКОЙ: таблица во вложенной таблице сама привязана через Items.*, и один + # шаг оставлял корнем литерал «Items» — форма платформы объявлялась битой (типовые + # НастройкаПравилОбработкиЗаявокСотрудников в БП и ERP). + $itemsHops = 0 + $itemsBroken = $false + while ($rootAttr -eq 'Items') { + $itemsHops++ + if ($itemsHops -gt 10) { $itemsBroken = $true; break } # страховка от кольца ссылок if ($segments.Count -lt 3 -or $segments[2] -ne 'CurrentData') { Report-Warn "[$tag] '$elName': $bTag='$dataPath' — unknown Items.* shape, expected Items..CurrentData.*" - continue + $itemsBroken = $true + break } $tableName = $segments[1] $tableEl = $null @@ -501,17 +514,21 @@ if (-not $stopped) { if (-not $tableEl) { Report-Error "[$tag] '$elName': $bTag='$dataPath' — table element '$tableName' not found" $pathErrors++ - continue + $itemsBroken = $true + break } $tableDpNode = $tableEl.Node.SelectSingleNode("f:DataPath", $nsMgr) if (-not $tableDpNode -or -not $tableDpNode.InnerText.Trim()) { # Table without DataPath — can't resolve further, accept silently - continue + $itemsBroken = $true + break } $tableDp = $tableDpNode.InnerText.Trim() -replace '\[\d+\]', '' if ($tableDp.StartsWith('~')) { $tableDp = $tableDp.Substring(1) } - $rootAttr = ($tableDp -split '\.')[0] + $segments = $tableDp -split '\.' + $rootAttr = $segments[0] } + if ($itemsBroken) { continue } if (-not $attrMap.ContainsKey($rootAttr)) { Report-Error "[$tag] '$elName': $bTag='$dataPath' — attribute '$rootAttr' not found" diff --git a/.claude/skills/form-validate/scripts/form-validate.py b/.claude/skills/form-validate/scripts/form-validate.py index 4bff2ae2..b046b709 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.14 — Validate 1C managed form +# form-validate v1.15 — Validate 1C managed form # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -256,10 +256,15 @@ def main(): if acb is not None: acb_name = acb.get("name", "") acb_id = acb.get("id", "") + # id=-1 — соглашение, а не требование: в корпусе УТ/БП/ERP так у 21 094 форм из 21 097, + # но три формы платформа выгружает с обычным id и грузит их без нареканий. Поэтому + # предупреждение; ошибка — только если id вовсе не число. if acb_id == "-1": report_ok(f"AutoCommandBar: name='{acb_name}', id={acb_id}") + elif re.match(r'^-?\d+$', acb_id): + report_warn(f"AutoCommandBar id='{acb_id}', usually '-1'") else: - report_error(f"AutoCommandBar id='{acb_id}', expected '-1'") + report_error(f"AutoCommandBar id='{acb_id}' is not a number") else: report_error("AutoCommandBar element missing") @@ -511,11 +516,21 @@ def main(): segments = clean_path.split(".") root_attr = segments[0] - # Resolve Items..CurrentData.... — table element, not attribute - if root_attr == 'Items': + # Resolve Items..CurrentData.... — table element, not attribute. + # Разрешаем ЦЕПОЧКОЙ: таблица во вложенной таблице сама привязана через Items.*, и один + # шаг оставлял корнем литерал «Items» — форма платформы объявлялась битой (типовые + # НастройкаПравилОбработкиЗаявокСотрудников в БП и ERP). + items_hops = 0 + items_broken = False + while root_attr == 'Items': + items_hops += 1 + if items_hops > 10: # страховка от кольца ссылок + items_broken = True + break if len(segments) < 3 or segments[2] != 'CurrentData': report_warn(f"[{tag}] '{el_name}': {b_tag}='{data_path}' — unknown Items.* shape, expected Items.
.CurrentData.*") - continue + items_broken = True + break table_name = segments[1] table_el = None for candidate in all_elements: @@ -525,14 +540,19 @@ def main(): if table_el is None: report_error(f"[{tag}] '{el_name}': {b_tag}='{data_path}' — table element '{table_name}' not found") path_errors += 1 - continue + items_broken = True + break table_dp_node = table_el["Node"].find(f"{{{F_NS}}}DataPath") if table_dp_node is None or not (table_dp_node.text or "").strip(): - continue + items_broken = True + break table_dp = re.sub(r'\[\d+\]', '', (table_dp_node.text or "").strip()) if table_dp.startswith('~'): table_dp = table_dp[1:] - root_attr = table_dp.split(".")[0] + segments = table_dp.split(".") + root_attr = segments[0] + if items_broken: + continue if root_attr not in attr_map: report_error(f"[{tag}] '{el_name}': {b_tag}='{data_path}' — attribute '{root_attr}' not found") diff --git a/tests/skills/cases/cfe-borrow/container-types.json b/tests/skills/cases/cfe-borrow/container-types.json index 72c8761a..6ddd5585 100644 --- a/tests/skills/cases/cfe-borrow/container-types.json +++ b/tests/skills/cases/cfe-borrow/container-types.json @@ -3,42 +3,106 @@ "preRun": [ { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "Report", "name": "ОстаткиТоваров" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "Document", + "name": "Накладная" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "DocumentJournal", "name": "Складские" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "Report", + "name": "ОстаткиТоваров" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "Sequence", "name": "ПартионныйУчет" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "DocumentJournal", + "name": "Складские", + "registeredDocuments": [ + "Document.Накладная" + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "HTTPService", "name": "ОбменДанными" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "Sequence", + "name": "ПартионныйУчет", + "documents": [ + "Document.Накладная" + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "WebService", "name": "СервисОбмена" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "HTTPService", + "name": "ОбменДанными" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "FilterCriterion", "name": "ПоКонтрагенту" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "WebService", + "name": "СервисОбмена", + "namespace": "http://example.org/СервисОбмена" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "SettingsStorage", "name": "ХранилищеОтчетов" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "FilterCriterion", + "name": "ПоКонтрагенту" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "SettingsStorage", + "name": "ХранилищеОтчетов" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "cfe-init/scripts/cfe-init", - "args": { "-Name": "Тест", "-OutputDir": "{workDir}/ext", "-ConfigPath": "{workDir}" } + "args": { + "-Name": "Тест", + "-OutputDir": "{workDir}/ext", + "-ConfigPath": "{workDir}" + } } ], "params": { diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/container-types/Configuration.xml index b65577dd..8fcd0822 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/container-types/Configuration.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/container-types/Configuration.xml @@ -246,6 +246,7 @@ Русский + Накладная ОстаткиТоваров Складские ПартионныйУчет diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/DocumentJournals/Складские.xml b/tests/skills/cases/cfe-borrow/snapshots/container-types/DocumentJournals/Складские.xml index eb5d5a13..c268dc05 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/container-types/DocumentJournals/Складские.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/container-types/DocumentJournals/Складские.xml @@ -27,7 +27,9 @@ true - + + Document.Накладная + false diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная.xml b/tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная.xml new file mode 100644 index 00000000..37617a4d --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная.xml @@ -0,0 +1,82 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Накладная + + + ru + Накладная + + + + true + + String + 11 + Variable + Year + true + true + + + + Document.Накладная.StandardAttribute.Number + + Use + Begin + DontUse + Directly + + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/container-types/Documents/Накладная/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/Sequences/ПартионныйУчет.xml b/tests/skills/cases/cfe-borrow/snapshots/container-types/Sequences/ПартионныйУчет.xml index 2a84be50..6f142575 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/container-types/Sequences/ПартионныйУчет.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/container-types/Sequences/ПартионныйУчет.xml @@ -25,7 +25,9 @@ DontMove - + + Document.Накладная + Managed diff --git a/tests/skills/cases/cfe-borrow/snapshots/container-types/WebServices/СервисОбмена.xml b/tests/skills/cases/cfe-borrow/snapshots/container-types/WebServices/СервисОбмена.xml index f97bd673..61c8c0d1 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/container-types/WebServices/СервисОбмена.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/container-types/WebServices/СервисОбмена.xml @@ -10,7 +10,7 @@ - + http://example.org/СервисОбмена СервисОбмена.1cws DontUse diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник.xml new file mode 100644 index 00000000..aa38aeb5 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник.xml @@ -0,0 +1,91 @@ + + + + + + 826f7c00-14b9-4e95-8f53-f8513a9806b8 + 7e6614b3-32a5-43fa-915a-8da7efc20c89 + + + 00edddfc-03c4-4127-b5cc-0f37a63817dc + 849d4e02-6d3a-4dab-9be7-7a62d5439017 + + + 1a6a4952-30b1-47bc-8ea8-63b93bf2ebed + bf50be1e-5bb2-460b-80e0-7ec7e774a075 + + + 326283b7-bbd1-4bb9-9442-d9ad3ed8e420 + 5978042e-4ecf-483f-82dc-8ab55ebb1c8d + + + 57464ffd-aa33-48b7-8510-fcea5f73e3a6 + 2c8747b5-b4a3-4b7c-8a4f-46da3427416e + + + + Источник + + + 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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Configuration.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Configuration.xml new file mode 100644 index 00000000..c7744b2a --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + e5f431ed-71d8-4426-8974-76c7c7df3666 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 679afcfb-4f5b-412b-aa74-374adab1f84f + + + e3687481-0a87-462c-a166-9f34594f9bba + d7016949-8b12-43fb-992f-661cfd5b7899 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 1322d594-fe5c-4600-8cfa-f457a78df02c + + + 51f2d5d8-ea4d-4064-8892-82951750031e + bc767c19-266c-4e5c-bc3b-9c125884e2ff + + + e68182ea-4237-4383-967f-90c1e3370bc7 + c3133404-830c-4fa8-b152-74f388a4e985 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 25c0ba0e-65b1-4680-ae83-070c9790e4a9 + + + + ТестоваяКонфигурация + + + ru + ТестоваяКонфигурация + + + + + 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 + + + + Русский + Spec + Источник + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec.xml new file mode 100644 index 00000000..4bbe5a21 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec.xml @@ -0,0 +1,34 @@ + + + + + + dbcc25fc-4957-4590-b10f-7121bb3e5f89 + 8789bd0e-8fb9-4566-8b16-2789778255b7 + + + 264539f9-8bbc-4da4-8794-6eea088548e1 + ee49f866-95ec-4e06-a09d-0a573e85056b + + + + Spec + + + ru + Spec + + + + true + DataProcessor.Spec.Form.Форма + + false + + + + +
Форма +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml new file mode 100644 index 00000000..4db5a63f --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + + +
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..84aa345b --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml @@ -0,0 +1,64 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тест</v8:content> + </v8:item> + + + +
+ Список + + + + + + + + Список.Ссылка + + + +
+ Items.Список.CurrentData.Строки + + + Items.Вложенная.CurrentData.Значение + + + + + + + + + + +
+ + + + Items.Список.CurrentData.Ссылка + + + + + ~Список.Ссылка + + + + + + + + cfg:DynamicList + + true + + Catalog.Источник + + + + diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 00000000..4cf92998 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..b3e6b396 --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/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/nested-table-currentdata/Languages/Русский.xml b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Languages/Русский.xml new file mode 100644 index 00000000..09fa24de --- /dev/null +++ b/tests/skills/cases/form-validate/fixtures/nested-table-currentdata/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/nested-table-currentdata.json b/tests/skills/cases/form-validate/nested-table-currentdata.json new file mode 100644 index 00000000..7a18d4a0 --- /dev/null +++ b/tests/skills/cases/form-validate/nested-table-currentdata.json @@ -0,0 +1,7 @@ +{ + "name": "Вложенная таблица: путь Items.* разрешается цепочкой, а не одним шагом", + "setup": "fixture:nested-table-currentdata", + "params": { "formPath": "DataProcessors/Spec/Forms/Форма" }, + "expect": { "stdoutContains": "Validation OK" }, + "skipPlatformVerify": "вложенная таблица собрана вручную под разбор пути; проверяется поведение валидатора, а не загружаемость" +} diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник.xml new file mode 100644 index 00000000..e18bcad3 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/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 + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Catalogs/Источник/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Configuration.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Configuration.xml new file mode 100644 index 00000000..cb053315 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 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 + ТестоваяКонфигурация + + + + + 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 + + + + Русский + Spec + Источник + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec.xml new file mode 100644 index 00000000..136202ad --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec.xml @@ -0,0 +1,34 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + Spec + + + ru + Spec + + + + true + DataProcessor.Spec.Form.Форма + + false + + + + +
Форма
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml new file mode 100644 index 00000000..dffeea01 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма.xml @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..84aa345b --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form.xml @@ -0,0 +1,64 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тест</v8:content> + </v8:item> + + + + + Список + + + + + + + + Список.Ссылка + + + +
+ Items.Список.CurrentData.Строки + + + Items.Вложенная.CurrentData.Значение + + + + + + + + + + +
+
+ + + Items.Список.CurrentData.Ссылка + + + + + ~Список.Ссылка + + + + + + + + cfg:DynamicList + + true + + Catalog.Источник + + + + diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/DataProcessors/Spec/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Languages/Русский.xml b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/form-validate/snapshots/nested-table-currentdata/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file