From bb56a7e89842654a2e87b6a4eb1556641b154663 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 5 Sep 2026 21:17:36 +0300 Subject: [PATCH] =?UTF-8?q?feat(meta-info):=20=D1=87=D1=82=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D1=85=20?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit На источнике и его таблице навык печатал только заголовок и строку поддержки: вида он не знал, а универсальный блок «Реквизиты» ищет , тогда как у таблицы поля — . Источник показывает режим блокировки, список таблиц и функции с выражением и типом результата. Таблица — вид (таблица/выражение), имя или выражение в источнике, объектность, признак «только чтение», ссылки на поля (ключ, представление, родитель, версия данных, ввод по строке) короткими именами, и список полей. У поля отмечается имя колонки в источнике, если оно отличается от имени поля, а также «только чтение» и допустимость NULL. Заодно два типа перестали печататься сырыми: xs:base64Binary → ДвоичныеДанные (касается всех объектов, не только внешних источников) и ExternalDataSourceTableRef → русское имя, как у прочих ссылочных типов. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi --- .../skills/meta-info/scripts/meta-info.ps1 | 79 ++++- .claude/skills/meta-info/scripts/meta-info.py | 85 ++++- .../meta-info/external-data-source-table.json | 47 +++ .../cases/meta-info/external-data-source.json | 29 ++ .../Configuration.xml | 252 +++++++++++++++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../ExternalDataSources/PG.xml | 33 ++ .../PG/Tables/products.xml | 293 ++++++++++++++++++ .../Languages/Русский.xml | 16 + .../external-data-source/Configuration.xml | 252 +++++++++++++++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../ExternalDataSources/PG.xml | 50 +++ .../PG/Tables/products.xml | 214 +++++++++++++ .../Languages/Русский.xml | 16 + 14 files changed, 1400 insertions(+), 2 deletions(-) create mode 100644 tests/skills/cases/meta-info/external-data-source-table.json create mode 100644 tests/skills/cases/meta-info/external-data-source.json create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source-table/Configuration.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source-table/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG/Tables/products.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source-table/Languages/Русский.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source/Configuration.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG/Tables/products.xml create mode 100644 tests/skills/cases/meta-info/snapshots/external-data-source/Languages/Русский.xml diff --git a/.claude/skills/meta-info/scripts/meta-info.ps1 b/.claude/skills/meta-info/scripts/meta-info.ps1 index 567a07a08..a1c3c657f 100644 --- a/.claude/skills/meta-info/scripts/meta-info.ps1 +++ b/.claude/skills/meta-info/scripts/meta-info.ps1 @@ -1,4 +1,4 @@ -# meta-info v1.11 — Compact summary of 1C metadata object +# meta-info v1.12 — Compact summary of 1C metadata object # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -104,6 +104,7 @@ $typeNameMap = @{ "DefinedType"="Определяемый тип"; "CommonModule"="Общий модуль" "ScheduledJob"="Регламентное задание"; "EventSubscription"="Подписка на событие" "HTTPService"="HTTP-сервис"; "WebService"="Веб-сервис" + "ExternalDataSource"="Внешний источник данных"; "Table"="Таблица внешнего источника" } $refTypeMap = @{ @@ -112,6 +113,7 @@ $refTypeMap = @{ "ChartOfCharacteristicTypesRef"="ПВХСсылка"; "ChartOfCalculationTypesRef"="ПВРСсылка" "ExchangePlanRef"="ПланОбменаСсылка"; "BusinessProcessRef"="БизнесПроцессСсылка" "TaskRef"="ЗадачаСсылка" + "ExternalDataSourceTableRef"="ВнешнийИсточникДанныхТаблицаСсылка" } $regTypeMap = @{ @@ -231,6 +233,7 @@ function Format-SingleType([string]$raw, $parentNode) { } "v8:ValueStorage" { return "ХранилищеЗначения" } "v8:UUID" { return "УникальныйИдентификатор" } + "xs:base64Binary" { return "ДвоичныеДанные" } "v8:Null" { return "Null" } default { # Normalize d5p1:/dNpN: -> cfg: @@ -1347,6 +1350,80 @@ if (-not $drillDone) { } } + # --- Внешний источник данных: таблицы и функции --- + if ($mdType -eq "ExternalDataSource") { + $dlcm = $props.SelectSingleNode("md:DataLockControlMode", $ns) + if ($dlcm) { Out "Блокировка данных: $($dlcm.InnerText)" } + if ($childObjs) { + $tables = @(Get-SimpleChildren $childObjs "Table") + if ($tables.Count -gt 0) { + Out "" + Out "Таблицы ($($tables.Count)): $($tables -join ', ')" + } + $fns = @($childObjs.SelectNodes("md:Function", $ns)) + if ($fns.Count -gt 0) { + Out "" + Out "Функции ($($fns.Count)):" + foreach ($fn in $fns) { + $fp = $fn.SelectSingleNode("md:Properties", $ns) + $fnName = $fp.SelectSingleNode("md:Name", $ns).InnerText + $fnExpr = $fp.SelectSingleNode("md:ExpressionInDataSource", $ns) + $fnType = Format-Type $fp.SelectSingleNode("md:Type", $ns) + $retNode = $fp.SelectSingleNode("md:ReturnValue", $ns) + $ret = if ($retNode -and $retNode.InnerText -eq "false") { "процедура" } else { $fnType } + Out " $fnName → $(if ($fnExpr) { $fnExpr.InnerText })$(if ($ret) { " : $ret" })" + } + } + } + } + + # --- Таблица внешнего источника: свойства и поля --- + if ($mdType -eq "Table") { + $g = { param($tag) $n = $props.SelectSingleNode("md:$tag", $ns); if ($n) { $n.InnerText } else { "" } } + $short = { param($ref) if ($ref) { ($ref -split '\.')[-1] } else { "" } } + + $head = @() + $tableType = & $g "TableType" + $head += "Вид: $(if ($tableType -eq 'Expression') { 'выражение' } else { 'таблица' })" + $src = if ($tableType -eq "Expression") { & $g "ExpressionInDataSource" } else { & $g "NameInDataSource" } + if ($src) { $head += "в источнике: $src" } + $head += "данные: $(if ((& $g 'TableDataType') -eq 'ObjectData') { 'объектные' } else { 'необъектные' })" + if ((& $g "ReadOnly") -eq "true") { $head += "только чтение" } + Out ($head -join " | ") + + $keys = @($props.SelectNodes("md:KeyFields/xr:Field", $ns) | ForEach-Object { & $short $_.InnerText }) + $refs = @() + if ($keys.Count -gt 0) { $refs += "ключ: $($keys -join ', ')" } + foreach ($pair in @(@("PresentationField","представление"), @("ParentField","родитель"), @("DataVersionField","версия данных"))) { + $v = & $short (& $g $pair[0]) + if ($v) { $refs += "$($pair[1]): $v" } + } + $ibs = @($props.SelectNodes("md:InputByString/xr:Field", $ns) | ForEach-Object { & $short $_.InnerText }) + if ($ibs.Count -gt 0) { $refs += "ввод по строке: $($ibs -join ', ')" } + if ($refs.Count -gt 0) { Out ($refs -join " | ") } + + if ($childObjs) { + $fields = @(Get-Attributes $childObjs "Field") + if ($fields.Count -gt 0) { + Out "" + Out "Поля ($($fields.Count)):" + $ml = Get-MaxNameLen $fields + foreach ($f in $fields) { + $fp = $f.Props + $marks = @() + $nids = $fp.SelectSingleNode("md:NameInDataSource", $ns) + if ($nids -and $nids.InnerText -and $nids.InnerText -ne $f.Name) { $marks += "→ $($nids.InnerText)" } + $ro = $fp.SelectSingleNode("md:ReadOnly", $ns) + if ($ro -and $ro.InnerText -eq "true") { $marks += "только чтение" } + $an = $fp.SelectSingleNode("md:AllowNull", $ns) + if ($an -and $an.InnerText -eq "true") { $marks += "NULL" } + $tail = if ($marks.Count -gt 0) { " [$($marks -join ', ')]" } else { "" } + Out (" $($f.Name.PadRight($ml)) $($f.Type)$tail") + } + } + } + } + # --- Attributes --- if ($childObjs -and $mdType -ne "Enum") { $attrs = @(Get-Attributes $childObjs) diff --git a/.claude/skills/meta-info/scripts/meta-info.py b/.claude/skills/meta-info/scripts/meta-info.py index cf76bbd0f..cc3ad9e20 100644 --- a/.claude/skills/meta-info/scripts/meta-info.py +++ b/.claude/skills/meta-info/scripts/meta-info.py @@ -1,4 +1,4 @@ -# meta-info v1.11 — Compact summary of 1C metadata object (Python port) +# meta-info v1.12 — Compact summary of 1C metadata object (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import os @@ -177,6 +177,7 @@ type_name_map = { "DefinedType": "Определяемый тип", "CommonModule": "Общий модуль", "ScheduledJob": "Регламентное задание", "EventSubscription": "Подписка на событие", "HTTPService": "HTTP-сервис", "WebService": "Веб-сервис", + "ExternalDataSource": "Внешний источник данных", "Table": "Таблица внешнего источника", } ref_type_map = { @@ -185,6 +186,7 @@ ref_type_map = { "ChartOfCharacteristicTypesRef": "ПВХСсылка", "ChartOfCalculationTypesRef": "ПВРСсылка", "ExchangePlanRef": "ПланОбменаСсылка", "BusinessProcessRef": "БизнесПроцессСсылка", "TaskRef": "ЗадачаСсылка", + "ExternalDataSourceTableRef": "ВнешнийИсточникДанныхТаблицаСсылка", } reg_type_map = { @@ -317,6 +319,8 @@ def format_single_type(raw, parent_node): return "ХранилищеЗначения" if raw == "v8:UUID": return "УникальныйИдентификатор" + if raw == "xs:base64Binary": + return "ДвоичныеДанные" if raw == "v8:Null": return "Null" # Normalize d5p1:/dNpN: → cfg: (both map to same namespace) @@ -1363,6 +1367,85 @@ if not drill_done: for r in res: out(format_attr_line(r, ml)) + # Внешний источник данных: таблицы и функции + if md_type == "ExternalDataSource": + dlcm = props.find("md:DataLockControlMode", NS) + if dlcm is not None: + out(f"Блокировка данных: {dlcm.text or ''}") + if child_objs is not None: + tables = get_simple_children(child_objs, "Table") + if tables: + out("") + out(f"Таблицы ({len(tables)}): {', '.join(tables)}") + fns = child_objs.findall("md:Function", NS) + if fns: + out("") + out(f"Функции ({len(fns)}):") + for fn in fns: + fp = fn.find("md:Properties", NS) + fn_name = fp.find("md:Name", NS).text or "" + fn_expr = fp.find("md:ExpressionInDataSource", NS) + fn_type = format_type(fp.find("md:Type", NS)) + ret_node = fp.find("md:ReturnValue", NS) + ret = "процедура" if (ret_node is not None and ret_node.text == "false") else fn_type + expr = (fn_expr.text or "") if fn_expr is not None else "" + out(f" {fn_name} → {expr}" + (f" : {ret}" if ret else "")) + + # Таблица внешнего источника: свойства и поля + if md_type == "Table": + def _g(tag): + n = props.find(f"md:{tag}", NS) + return (n.text or "") if n is not None else "" + + def _short(ref): + return ref.split(".")[-1] if ref else "" + + table_type = _g("TableType") + head = ["Вид: " + ("выражение" if table_type == "Expression" else "таблица")] + src = _g("ExpressionInDataSource") if table_type == "Expression" else _g("NameInDataSource") + if src: + head.append(f"в источнике: {src}") + head.append("данные: " + ("объектные" if _g("TableDataType") == "ObjectData" else "необъектные")) + if _g("ReadOnly") == "true": + head.append("только чтение") + out(" | ".join(head)) + + keys = [_short(f.text) for f in props.findall("md:KeyFields/xr:Field", NS)] + refs = [] + if keys: + refs.append(f"ключ: {', '.join(keys)}") + for tag, label in (("PresentationField", "представление"), ("ParentField", "родитель"), + ("DataVersionField", "версия данных")): + v = _short(_g(tag)) + if v: + refs.append(f"{label}: {v}") + ibs = [_short(f.text) for f in props.findall("md:InputByString/xr:Field", NS)] + if ibs: + refs.append(f"ввод по строке: {', '.join(ibs)}") + if refs: + out(" | ".join(refs)) + + if child_objs is not None: + fields = get_attributes(child_objs, "Field") + if fields: + out("") + out(f"Поля ({len(fields)}):") + ml = get_max_name_len(fields) + for f in fields: + fp = f["Props"] + marks = [] + nids = fp.find("md:NameInDataSource", NS) + if nids is not None and nids.text and nids.text != f["Name"]: + marks.append(f"→ {nids.text}") + ro = fp.find("md:ReadOnly", NS) + if ro is not None and ro.text == "true": + marks.append("только чтение") + an = fp.find("md:AllowNull", NS) + if an is not None and an.text == "true": + marks.append("NULL") + tail = f" [{', '.join(marks)}]" if marks else "" + out(f" {f['Name'].ljust(ml)} {f['Type']}{tail}") + # Attributes if child_objs is not None and md_type != "Enum": attrs = get_attributes(child_objs) diff --git a/tests/skills/cases/meta-info/external-data-source-table.json b/tests/skills/cases/meta-info/external-data-source-table.json new file mode 100644 index 000000000..d1ecb2aa8 --- /dev/null +++ b/tests/skills/cases/meta-info/external-data-source-table.json @@ -0,0 +1,47 @@ +{ + "name": "Таблица внешнего источника: свойства и поля", + "setup": "empty-config", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "tables": { + "products": { + "nameInDataSource": "eds.public.products", + "tableDataType": "ObjectData", + "keyFields": ["id"], + "presentationField": "name", + "parentField": "parent_id", + "dataVersionField": "row_ver", + "fields": [ + "id: Number(10,0)", + "name: String(150)", + "article: String(50) | nullable", + "parent_id: ExternalDataSourceTableRef.PG.products | nullable", + { "name": "row_ver", "type": "Number(19,0)", "nameInDataSource": "xmin", "readOnly": true } + ] + } + } + }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { "objectPath": "ExternalDataSources/PG/Tables/products.xml" }, + "expect": { + "stdoutContains": [ + "Таблица внешнего источника: products", + "в источнике: eds.public.products", + "данные: объектные", + "ключ: id", + "представление: name", + "родитель: parent_id", + "версия данных: row_ver", + "Поля (5)", + "ВнешнийИсточникДанныхТаблицаСсылка.PG.products", + "→ xmin", + "только чтение" + ] + } +} diff --git a/tests/skills/cases/meta-info/external-data-source.json b/tests/skills/cases/meta-info/external-data-source.json new file mode 100644 index 000000000..9fd58ff37 --- /dev/null +++ b/tests/skills/cases/meta-info/external-data-source.json @@ -0,0 +1,29 @@ +{ + "name": "Внешний источник данных: таблицы и функции", + "setup": "empty-config", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "dataLockControlMode": "AutomaticAndManaged", + "tables": { + "products": { + "nameInDataSource": "eds.public.products", + "tableDataType": "ObjectData", + "keyFields": ["id"], + "presentationField": "name", + "fields": ["id: Number(10,0)", "name: String(150)", "article: String(50) | nullable"] + } + }, + "functions": { "total": { "expression": "public.f_total(&1, &2)", "returns": "Number(15,2)" } } + }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { "objectPath": "ExternalDataSources/PG.xml" }, + "expect": { + "stdoutContains": ["Внешний источник данных: PG", "Таблицы (1): products", "public.f_total(&1, &2)"] + } +} diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source-table/Configuration.xml b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Configuration.xml new file mode 100644 index 000000000..da0e784ee --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + 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 + + + + Русский + PG + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source-table/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG.xml b/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG.xml new file mode 100644 index 000000000..a1b89619b --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG.xml @@ -0,0 +1,33 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + PG + + + ru + PG + + + + Automatic + + + products
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG/Tables/products.xml b/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG/Tables/products.xml new file mode 100644 index 000000000..4c22f11e3 --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source-table/ExternalDataSources/PG/Tables/products.xml @@ -0,0 +1,293 @@ + + + + + + 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 + + + UUID-016 + UUID-017 + + + + products + + + ru + products + + + + Table + eds.public.products + + ObjectData + + ExternalDataSource.PG.Table.products.Field.id + + ExternalDataSource.PG.Table.products.Field.name + ExternalDataSource.PG.Table.products.Field.parent_id + + + true + false + + ExternalDataSource.PG.Table.products.Field.name + + Auto + Begin + Directly + Auto + + + + + + + + + + + + false + false + Auto + ExternalDataSource.PG.Table.products.Field.row_ver + InDialog + + + Automatic + + + + + id + + + ru + id + + + + + xs:decimal + + 10 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + id + false + false + + + + + name + + + ru + name + + + + + xs:string + + 150 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + name + false + false + + + + + article + + + ru + article + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + article + false + true + + + + + parent_id + + + ru + parent_id + + + + + cfg:ExternalDataSourceTableRef.PG.products + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + parent_id + false + true + + + + + row_ver + + + ru + row_ver + + + + + xs:decimal + + 19 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + xmin + true + false + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source-table/Languages/Русский.xml b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source-table/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source/Configuration.xml b/tests/skills/cases/meta-info/snapshots/external-data-source/Configuration.xml new file mode 100644 index 000000000..da0e784ee --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + 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 + + + + Русский + PG + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-info/snapshots/external-data-source/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG.xml b/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG.xml new file mode 100644 index 000000000..a80b5dfbb --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG.xml @@ -0,0 +1,50 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + PG + + + ru + PG + + + + AutomaticAndManaged + + + products
+ + + total + + + true + + xs:decimal + + 15 + 2 + Any + + + public.f_total(&1, &2) + + +
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG/Tables/products.xml b/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG/Tables/products.xml new file mode 100644 index 000000000..c93be494c --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source/ExternalDataSources/PG/Tables/products.xml @@ -0,0 +1,214 @@ + + + + + + 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 + + + UUID-016 + UUID-017 + + + + products + + + ru + products + + + + Table + eds.public.products + + ObjectData + + ExternalDataSource.PG.Table.products.Field.id + + ExternalDataSource.PG.Table.products.Field.name + + + + true + false + + ExternalDataSource.PG.Table.products.Field.name + + Auto + Begin + Directly + Auto + + + + + + + + + + + + false + false + Auto + + InDialog + + + Automatic + + + + + id + + + ru + id + + + + + xs:decimal + + 10 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + id + false + false + + + + + name + + + ru + name + + + + + xs:string + + 150 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + name + false + false + + + + + article + + + ru + article + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + article + false + true + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-info/snapshots/external-data-source/Languages/Русский.xml b/tests/skills/cases/meta-info/snapshots/external-data-source/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/meta-info/snapshots/external-data-source/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file