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
+
+
+
+
+
+
\ 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
+
+
+
+
+
+
+
\ 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