diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 8af82a2d1..e3c4ed2e5 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.109 — Compile 1C metadata object from JSON +# meta-compile v1.110 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -612,6 +612,23 @@ $script:typeSynonyms["хранилищезначений"] = "ValueStorage" $script:typeSynonyms["хранилищезначения"] = "ValueStorage" $script:typeSynonyms["uuid"] = "UUID" $script:typeSynonyms["уникальныйидентификатор"] = "UUID" +# Типы СУБД — прощающий ввод: модель, проектирующая внешний источник по схеме БД, пишет типы +# так, как они названы в information_schema. Соответствие замерено на стенде PostgreSQL: то же +# самое даёт Конфигуратор при импорте структуры таблицы. Только однозначные: boolean НЕ включён +# (в DSL это уже Булево, а psqlODBC при импорте отдаёт Строка(5) — два разных смысла), как и +# text/real/money/json — для них замера нет. +$script:typeSynonyms["integer"] = "Number(10,0)" +$script:typeSynonyms["int"] = "Number(10,0)" +$script:typeSynonyms["int4"] = "Number(10,0)" +$script:typeSynonyms["bigint"] = "Number(19,0)" +$script:typeSynonyms["int8"] = "Number(19,0)" +$script:typeSynonyms["smallint"] = "Number(5,0)" +$script:typeSynonyms["int2"] = "Number(5,0)" +$script:typeSynonyms["varchar"] = "String" +$script:typeSynonyms["character varying"] = "String" +$script:typeSynonyms["numeric"] = "Number" +$script:typeSynonyms["timestamp"] = "DateTime" +$script:typeSynonyms["bytea"] = "BinaryData" # Платформенные типы, требующие префикса v8: (коллекции/периоды, частые в реквизитах обработок/отчётов). $script:v8PlatformTypes = @("ValueTable","ValueTree","ValueList","ValueListType","StandardPeriod", "StandardBeginningDate","PointInTime","TypeDescription","FixedArray","FixedMap","FixedStructure") diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index fe798c2a5..78dc0f0b4 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.109 — Compile 1C metadata object from JSON +# meta-compile v1.110 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -743,6 +743,23 @@ type_synonyms = { 'хранилищезначения': 'ValueStorage', 'uuid': 'UUID', 'уникальныйидентификатор': 'UUID', + # Типы СУБД — прощающий ввод: модель, проектирующая внешний источник по схеме БД, пишет типы + # так, как они названы в information_schema. Соответствие замерено на стенде PostgreSQL: то же + # самое даёт Конфигуратор при импорте структуры таблицы. Только однозначные: boolean НЕ включён + # (в DSL это уже Булево, а psqlODBC при импорте отдаёт Строка(5) — два разных смысла), как и + # text/real/money/json — для них замера нет. + 'integer': 'Number(10,0)', + 'int': 'Number(10,0)', + 'int4': 'Number(10,0)', + 'bigint': 'Number(19,0)', + 'int8': 'Number(19,0)', + 'smallint': 'Number(5,0)', + 'int2': 'Number(5,0)', + 'varchar': 'String', + 'character varying': 'String', + 'numeric': 'Number', + 'timestamp': 'DateTime', + 'bytea': 'BinaryData', # Reference synonyms (Russian, lowercase) 'справочникссылка': 'CatalogRef', 'документссылка': 'DocumentRef', diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1 index e8c465039..7f9484bcd 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.ps1 +++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1 @@ -1,4 +1,4 @@ -# meta-edit v1.50 — Edit existing 1C metadata object XML +# meta-edit v1.51 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -502,6 +502,38 @@ $script:typeSynonyms["catalogref"] = "CatalogRef" $script:typeSynonyms["documentref"] = "DocumentRef" $script:typeSynonyms["enumref"] = "EnumRef" +# Платформенные типы, требующие префикса v8: (коллекции/периоды, частые в реквизитах +# обработок и отчётов, где набор типов шире, чем у хранимых объектов). Копия реестра meta-compile. +$script:v8PlatformTypes = @("ValueTable","ValueTree","ValueList","ValueListType","StandardPeriod", + "StandardBeginningDate","PointInTime","TypeDescription","FixedArray","FixedMap","FixedStructure") +# Ниже — записи, которых в этом навыке не было: словарь дополнен до набора meta-compile, +# который является авторитетом. Расхождение держит tests/skills/check-type-synonyms.mjs. +$script:typeSynonyms["время"] = "Time" +$script:typeSynonyms["time"] = "Time" +$script:typeSynonyms["base64binary"] = "ValueStorage" +$script:typeSynonyms["binarydata"] = "BinaryData" +$script:typeSynonyms["двоичныеданные"] = "BinaryData" +$script:typeSynonyms["хранилищезначений"] = "ValueStorage" +$script:typeSynonyms["uuid"] = "UUID" +$script:typeSynonyms["уникальныйидентификатор"] = "UUID" +$script:typeSynonyms["integer"] = "Number(10,0)" +$script:typeSynonyms["int"] = "Number(10,0)" +$script:typeSynonyms["int4"] = "Number(10,0)" +$script:typeSynonyms["bigint"] = "Number(19,0)" +$script:typeSynonyms["int8"] = "Number(19,0)" +$script:typeSynonyms["smallint"] = "Number(5,0)" +$script:typeSynonyms["int2"] = "Number(5,0)" +$script:typeSynonyms["varchar"] = "String" +$script:typeSynonyms["character varying"] = "String" +$script:typeSynonyms["numeric"] = "Number" +$script:typeSynonyms["timestamp"] = "DateTime" +$script:typeSynonyms["bytea"] = "BinaryData" +$script:typeSynonyms["таблицазначений"] = "ValueTable" +$script:typeSynonyms["деревозначений"] = "ValueTree" +$script:typeSynonyms["списокзначений"] = "ValueListType" +$script:typeSynonyms["стандартныйпериод"] = "StandardPeriod" +$script:typeSynonyms["внешнийисточникданныхтаблицассылка"] = "ExternalDataSourceTableRef" + # ============================================================ # Section 4: Type system # ============================================================ @@ -649,6 +681,58 @@ function Build-TypeContentXml { return $sb.ToString().TrimEnd("`r","`n") } + # Time — третья доля даты, наравне с Date/DateTime. + if ($typeStr -eq "Time") { + $sb.AppendLine("$indentxs:dateTime") | Out-Null + $sb.AppendLine("$indent") | Out-Null + $sb.AppendLine("$indent`tTime") | Out-Null + $sb.AppendLine("$indent") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + + # UUID + if ($typeStr -eq "UUID") { + $sb.AppendLine("$indentv8:UUID") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + + # BinaryData — xs:base64Binary СО своими квалификаторами (в отличие от ХранилищаЗначения). + # Формы и умолчание — как в meta-compile, который здесь авторитет системы типов. + if ($typeStr -match '^BinaryData(\(|$)') { + $bm = [regex]::Match($typeStr, '^BinaryData(\((\d+)(,\s*(fixed|variable))?\))?$', 'IgnoreCase') + if (-not $bm.Success) { + Write-Error "Неверный тип '$typeStr': ждётся BinaryData, BinaryData(Длина) или BinaryData(Длина,fixed|variable)." + exit 1 + } + $blen = if ($bm.Groups[2].Success) { $bm.Groups[2].Value } else { "4294967292" } + $ballowed = if ($bm.Groups[4].Success) { if ($bm.Groups[4].Value.ToLowerInvariant() -eq "fixed") { "Fixed" } else { "Variable" } } + elseif ($bm.Groups[2].Success) { "Variable" } else { "Fixed" } + $sb.AppendLine("$indentxs:base64Binary") | Out-Null + $sb.AppendLine("$indent") | Out-Null + $sb.AppendLine("$indent`t$blen") | Out-Null + $sb.AppendLine("$indent`t$ballowed") | Out-Null + $sb.AppendLine("$indent") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + + # Платформенные типы (коллекции/периоды) — префикс v8:, объявлен в шапке файла. + if ($script:v8PlatformTypes -contains $typeStr) { + $sb.AppendLine("$indentv8:$typeStr") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + + # Характеристика ПВХ — множество типов, как и ОпределяемыйТип. + if ($typeStr -match '^Characteristic\.(.+)$') { + $sb.AppendLine("$indentcfg:$typeStr") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + + # Голый метатип-категория без имени объекта — «любой объект категории», это TypeSet. + if ($typeStr -match '^(CatalogRef|DocumentRef|EnumRef|ChartOfAccountsRef|ChartOfCharacteristicTypesRef|ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|TaskRef|AnyRef|AnyIBRef)$') { + $sb.AppendLine("$indentcfg:$typeStr") | Out-Null + return $sb.ToString().TrimEnd("`r","`n") + } + # DefinedType if ($typeStr -match '^DefinedType\.(.+)$') { $dtName = $Matches[1] @@ -663,7 +747,7 @@ function Build-TypeContentXml { # Если корень URI не объявляет (файл не от платформы), остаёмся на самодостаточной # локальной форме: префикс тут — ТЕКСТ узла, XML-слой про него не знает и сам # объявление не добавит, так что иначе получился бы неразрешимый префикс. - if ($typeStr -match '^(CatalogRef|DocumentRef|EnumRef|ChartOfAccountsRef|ChartOfCharacteristicTypesRef|ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|TaskRef)\.(.+)$') { + if ($typeStr -match '^(CatalogRef|DocumentRef|EnumRef|ChartOfAccountsRef|ChartOfCharacteristicTypesRef|ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|BusinessProcessRoutePointRef|TaskRef|ExternalDataSourceTableRef)\.(.+)$') { if ($script:cfgPrefix) { $sb.AppendLine("$indent$($script:cfgPrefix):$typeStr") | Out-Null } else { diff --git a/.claude/skills/meta-edit/scripts/meta-edit.py b/.claude/skills/meta-edit/scripts/meta-edit.py index d6355a224..9ae8f1281 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.py +++ b/.claude/skills/meta-edit/scripts/meta-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-edit v1.50 — Edit existing 1C metadata object XML +# meta-edit v1.51 — Edit existing 1C metadata object XML # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -540,6 +540,41 @@ type_synonyms = { "catalogref": "CatalogRef", "documentref": "DocumentRef", "enumref": "EnumRef", + # Ниже — записи, которых в этом навыке не было: словарь дополнен до набора meta-compile, + # который является авторитетом. Расхождение держит tests/skills/check-type-synonyms.mjs. + "время": "Time", + "time": "Time", + "base64binary": "ValueStorage", + "binarydata": "BinaryData", + "двоичныеданные": "BinaryData", + "хранилищезначений": "ValueStorage", + "uuid": "UUID", + "уникальныйидентификатор": "UUID", + "integer": "Number(10,0)", + "int": "Number(10,0)", + "int4": "Number(10,0)", + "bigint": "Number(19,0)", + "int8": "Number(19,0)", + "smallint": "Number(5,0)", + "int2": "Number(5,0)", + "varchar": "String", + "character varying": "String", + "numeric": "Number", + "timestamp": "DateTime", + "bytea": "BinaryData", + "таблицазначений": "ValueTable", + "деревозначений": "ValueTree", + "списокзначений": "ValueListType", + "стандартныйпериод": "StandardPeriod", + "внешнийисточникданныхтаблицассылка": "ExternalDataSourceTableRef", +} + +# Платформенные типы, требующие префикса v8: (коллекции/периоды, частые в реквизитах +# обработок и отчётов, где набор типов шире, чем у хранимых объектов). Копия реестра meta-compile. +V8_PLATFORM_TYPES = { + "ValueTable", "ValueTree", "ValueList", "ValueListType", "StandardPeriod", + "StandardBeginningDate", "PointInTime", "TypeDescription", "FixedArray", "FixedMap", + "FixedStructure", } # ============================================================ @@ -666,6 +701,54 @@ def build_type_content_xml(indent, type_str): lines.append(f"{indent}") return "\r\n".join(lines) + # Time — третья доля даты, наравне с Date/DateTime. + if type_str == "Time": + lines.append(f"{indent}xs:dateTime") + lines.append(f"{indent}") + lines.append(f"{indent}\tTime") + lines.append(f"{indent}") + return "\r\n".join(lines) + + # UUID + if type_str == "UUID": + lines.append(f"{indent}v8:UUID") + return "\r\n".join(lines) + + # BinaryData — xs:base64Binary СО своими квалификаторами (в отличие от ХранилищаЗначения). + # Формы и умолчание — как в meta-compile, который здесь авторитет системы типов. + if re.match(r"^BinaryData(\(|$)", type_str, re.I): + m_bin = re.match(r"^BinaryData(?:\((\d+)(?:,\s*(fixed|variable))?\))?$", type_str, re.I) + if not m_bin: + print(f"Неверный тип '{type_str}': ждётся BinaryData, BinaryData(Длина) или BinaryData(Длина,fixed|variable).", file=sys.stderr) + sys.exit(1) + blen = m_bin.group(1) or "4294967292" + if m_bin.group(2): + ballowed = "Fixed" if m_bin.group(2).lower() == "fixed" else "Variable" + else: + ballowed = "Variable" if m_bin.group(1) else "Fixed" + lines.append(f"{indent}xs:base64Binary") + lines.append(f"{indent}") + lines.append(f"{indent}\t{blen}") + lines.append(f"{indent}\t{ballowed}") + lines.append(f"{indent}") + return "\r\n".join(lines) + + # Платформенные типы (коллекции/периоды) — префикс v8:, объявлен в шапке файла. + if type_str in V8_PLATFORM_TYPES: + lines.append(f"{indent}v8:{type_str}") + return "\r\n".join(lines) + + # Характеристика ПВХ — множество типов, как и ОпределяемыйТип. + if re.match(r"^Characteristic\.(.+)$", type_str): + lines.append(f"{indent}cfg:{type_str}") + return "\r\n".join(lines) + + # Голый метатип-категория без имени объекта — «любой объект категории», это TypeSet. + if re.match(r"^(CatalogRef|DocumentRef|EnumRef|ChartOfAccountsRef|ChartOfCharacteristicTypesRef|" + r"ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|TaskRef|AnyRef|AnyIBRef)$", type_str): + lines.append(f"{indent}cfg:{type_str}") + return "\r\n".join(lines) + # DefinedType m = re.match(r"^DefinedType\.(.+)$", type_str) if m: @@ -682,7 +765,8 @@ def build_type_content_xml(indent, type_str): # объявление не добавит, так что иначе получился бы неразрешимый префикс. m = re.match( r"^(CatalogRef|DocumentRef|EnumRef|ChartOfAccountsRef|ChartOfCharacteristicTypesRef|" - r"ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|TaskRef)\.(.+)$", + r"ChartOfCalculationTypesRef|ExchangePlanRef|BusinessProcessRef|BusinessProcessRoutePointRef|" + r"TaskRef|ExternalDataSourceTableRef)\.(.+)$", type_str, ) if m: diff --git a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Configuration.xml new file mode 100644 index 000000000..da0e784ee --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/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-compile/snapshots/sql-type-synonyms/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG.xml new file mode 100644 index 000000000..d06c363c6 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG.xml @@ -0,0 +1,33 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + PG + + + ru + PG + + + + Automatic + + + t
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml new file mode 100644 index 000000000..b92eddcc2 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/ExternalDataSources/PG/Tables/t.xml @@ -0,0 +1,496 @@ + + + + + + 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 + + + + t + + + ru + t + + + + Table + t + + NonobjectData + + ExternalDataSource.PG.Table.t.Field.id + + + + + + true + false + + 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 + + + + + big + + + ru + big + + + + + xs:decimal + + 19 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + big + false + false + + + + + small + + + ru + small + + + + + xs:decimal + + 5 + 0 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + small + false + false + + + + + name + + + ru + name + + + + + xs:string + + 150 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + name + false + false + + + + + descr + + + ru + descr + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + descr + false + false + + + + + price + + + ru + price + + + + + xs:decimal + + 15 + 2 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + + + Auto + Auto + Auto + + price + false + false + + + + + created + + + ru + created + + + + + xs:dateTime + + DateTime + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + created + false + false + + + + + born + + + ru + born + + + + + xs:dateTime + + Date + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + born + false + false + + + + + uid + + + ru + uid + + + + + v8:UUID + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + uid + false + false + + + + + blob + + + ru + blob + + + + + xs:base64Binary + + 4294967292 + Fixed + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + blob + false + false + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/sql-type-synonyms/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/sql-type-synonyms.json b/tests/skills/cases/meta-compile/sql-type-synonyms.json new file mode 100644 index 000000000..38279b594 --- /dev/null +++ b/tests/skills/cases/meta-compile/sql-type-synonyms.json @@ -0,0 +1,53 @@ +{ + "name": "Типы СУБД на входе: переводятся в типы 1С", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "tables": { + "t": { + "keyFields": [ + "id" + ], + "fields": [ + "id: integer", + "big: bigint", + "small: smallint", + "name: varchar(150)", + "descr: character varying(50)", + "price: numeric(15,2)", + "created: timestamp", + "born: date", + "uid: uuid", + "blob: bytea" + ] + } + } + }, + "validatePath": "ExternalDataSources/PG", + "expect": { + "fileContains": [ + { + "file": "ExternalDataSources/PG/Tables/t.xml", + "text": [ + "10", + "19", + "5", + "150", + "DateTime", + "v8:UUID", + "xs:base64Binary" + ] + } + ], + "fileNotContains": [ + { + "file": "ExternalDataSources/PG/Tables/t.xml", + "text": [ + "integer", + "varchar", + "bytea" + ] + } + ] + } +} diff --git a/tests/skills/cases/meta-edit/field-types-ref-uuid-binary.json b/tests/skills/cases/meta-edit/field-types-ref-uuid-binary.json new file mode 100644 index 000000000..3337f74ff --- /dev/null +++ b/tests/skills/cases/meta-edit/field-types-ref-uuid-binary.json @@ -0,0 +1,71 @@ +{ + "name": "Ссылка на таблицу, UUID и двоичные данные при точечной правке", + "setup": "empty-config", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ExternalDataSource", + "name": "PG", + "tables": { + "products": { + "keyFields": [ + "id" + ], + "tableDataType": "ObjectData", + "fields": [ + "id: Number(10,0)" + ] + }, + "prices": { + "keyFields": [ + "id" + ], + "fields": [ + "id: Number(10,0)" + ] + } + } + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + } + ], + "params": { + "objectPath": "ExternalDataSources/PG/Tables/prices.xml" + }, + "input": { + "add": { + "fields": [ + "product_id: ExternalDataSourceTableRef.PG.products", + "uid: uuid", + "photo: bytea" + ] + } + }, + "expect": { + "fileContains": [ + { + "file": "ExternalDataSources/PG/Tables/prices.xml", + "text": [ + "cfg:ExternalDataSourceTableRef.PG.products", + "v8:UUID", + "xs:base64Binary", + "Fixed" + ] + } + ], + "fileNotContains": [ + { + "file": "ExternalDataSources/PG/Tables/prices.xml", + "text": [ + "BinaryData", + "UUID", + "ExternalDataSourceTableRef.PG.products" + ] + } + ] + } +} diff --git a/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Configuration.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Configuration.xml new file mode 100644 index 000000000..da0e784ee --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/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-edit/snapshots/field-types-ref-uuid-binary/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG.xml new file mode 100644 index 000000000..8ba69f674 --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG.xml @@ -0,0 +1,34 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + + PG + + + ru + PG + + + + Automatic + + + products
+ prices
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/prices.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/prices.xml new file mode 100644 index 000000000..91b80790f --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/prices.xml @@ -0,0 +1,245 @@ + + + + + + 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 + + + + prices + + + ru + prices + + + + Table + prices + + NonobjectData + + ExternalDataSource.PG.Table.prices.Field.id + + + + + + true + false + + 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 + + + + + product_id + + + ru + product_id + + + + + cfg:ExternalDataSourceTableRef.PG.products + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + product_id + false + false + + + + + uid + + + ru + uid + + + + + v8:UUID + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + uid + false + false + + + + + photo + + + ru + photo + + + + + xs:base64Binary + + 4294967292 + Fixed + + + false + + + + false + + false + false + + + false + + DontCheck + + + Auto + Auto + Auto + + photo + false + false + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/products.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/products.xml new file mode 100644 index 000000000..bb092ba10 --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/ExternalDataSources/PG/Tables/products.xml @@ -0,0 +1,130 @@ + + + + + + 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 + products + + ObjectData + + ExternalDataSource.PG.Table.products.Field.id + + + + + + true + false + + 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 + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Languages/Русский.xml b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/meta-edit/snapshots/field-types-ref-uuid-binary/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file