mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-27 04:25:54 +03:00
fix(meta-edit): отказ вместо предупреждения, когда операция не выполнена
WARN с кодом 0 означал «не смог»: в пакетном прогоне это выглядело как успех. Теперь предупреждение остаётся только там, где нужное уже есть (элемент уже добавлен, удалять нечего, позиция after/before не найдена — добавлено в конец). Остальное — ошибка в stderr и код 1: неизвестный ключ или операция, неверный формат, недопустимый у типа ребёнок, изменение несуществующего элемента, формы и макеты (их делают form-add/template-add). Отказ атомарен: побочные файлы (таблица внешнего источника, модуль команды, предопределённые) пишутся после основного XML, так что отказ посреди определения не оставляет на диске ни одного изменения. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
51bcc503b0
commit
cfd2d1be50
@@ -1,4 +1,4 @@
|
|||||||
# meta-edit v1.55 — Edit existing 1C metadata object XML
|
# meta-edit v1.56 — Edit existing 1C metadata object XML
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
[CmdletBinding(PositionalBinding=$false)]
|
[CmdletBinding(PositionalBinding=$false)]
|
||||||
param(
|
param(
|
||||||
@@ -381,6 +381,14 @@ function Die($msg) {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Побочные файлы (таблица внешнего источника, модуль команды, предопределённые) пишутся после
|
||||||
|
# основного XML: отказ посреди определения не оставляет на диске ни одного изменения.
|
||||||
|
$script:pendingWrites = [ordered]@{}
|
||||||
|
|
||||||
|
function Test-PendingOrFile([string]$path) {
|
||||||
|
return ($script:pendingWrites.Contains($path) -or (Test-Path $path))
|
||||||
|
}
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Section 2: Detect object type
|
# Section 2: Detect object type
|
||||||
# ============================================================
|
# ============================================================
|
||||||
@@ -2099,8 +2107,7 @@ function Convert-InlineToDefinition([string]$operation, [string]$value) {
|
|||||||
foreach ($item in $items) {
|
foreach ($item in $items) {
|
||||||
$dotIdx = $item.IndexOf('.')
|
$dotIdx = $item.IndexOf('.')
|
||||||
if ($dotIdx -le 0) {
|
if ($dotIdx -le 0) {
|
||||||
Warn "Invalid ts-attribute format (expected TSName.AttrDef): $item"
|
Die "Invalid ts-attribute format (expected TSName.AttrDef): $item"
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
$tsName = $item.Substring(0, $dotIdx).Trim()
|
$tsName = $item.Substring(0, $dotIdx).Trim()
|
||||||
$rest = $item.Substring($dotIdx + 1).Trim()
|
$rest = $item.Substring($dotIdx + 1).Trim()
|
||||||
@@ -2126,8 +2133,7 @@ function Convert-InlineToDefinition([string]$operation, [string]$value) {
|
|||||||
foreach ($elemDef in $tsGroups[$tsName]) {
|
foreach ($elemDef in $tsGroups[$tsName]) {
|
||||||
$colonIdx = $elemDef.IndexOf(':')
|
$colonIdx = $elemDef.IndexOf(':')
|
||||||
if ($colonIdx -le 0) {
|
if ($colonIdx -le 0) {
|
||||||
Warn "Invalid modify format (expected Name: key=val): $elemDef"
|
Die "Invalid modify format (expected Name: key=val): $elemDef"
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
$elemName = $elemDef.Substring(0, $colonIdx).Trim()
|
$elemName = $elemDef.Substring(0, $colonIdx).Trim()
|
||||||
$changesPart = $elemDef.Substring($colonIdx + 1).Trim()
|
$changesPart = $elemDef.Substring($colonIdx + 1).Trim()
|
||||||
@@ -2237,7 +2243,7 @@ function Convert-InlineToDefinition([string]$operation, [string]$value) {
|
|||||||
$v = $kv.Substring($eqIdx + 1).Trim()
|
$v = $kv.Substring($eqIdx + 1).Trim()
|
||||||
$propsObj | Add-Member -NotePropertyName $k -NotePropertyValue $v
|
$propsObj | Add-Member -NotePropertyName $k -NotePropertyValue $v
|
||||||
} else {
|
} else {
|
||||||
Warn "Invalid property format (expected Key=Value): $kv"
|
Die "Invalid property format (expected Key=Value): $kv"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$modifyObj = New-Object PSCustomObject
|
$modifyObj = New-Object PSCustomObject
|
||||||
@@ -2250,8 +2256,7 @@ function Convert-InlineToDefinition([string]$operation, [string]$value) {
|
|||||||
foreach ($elemDef in $elemDefs) {
|
foreach ($elemDef in $elemDefs) {
|
||||||
$colonIdx = $elemDef.IndexOf(':')
|
$colonIdx = $elemDef.IndexOf(':')
|
||||||
if ($colonIdx -le 0) {
|
if ($colonIdx -le 0) {
|
||||||
Warn "Invalid modify format (expected Name: key=val): $elemDef"
|
Die "Invalid modify format (expected Name: key=val): $elemDef"
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
$elemName = $elemDef.Substring(0, $colonIdx).Trim()
|
$elemName = $elemDef.Substring(0, $colonIdx).Trim()
|
||||||
$changesPart = $elemDef.Substring($colonIdx + 1).Trim()
|
$changesPart = $elemDef.Substring($colonIdx + 1).Trim()
|
||||||
@@ -2340,8 +2345,7 @@ function Process-Add($addDef) {
|
|||||||
$childType = Resolve-ChildTypeKey $rawKey
|
$childType = Resolve-ChildTypeKey $rawKey
|
||||||
|
|
||||||
if (-not $childType) {
|
if (-not $childType) {
|
||||||
Warn "Unknown add child type: $rawKey"
|
Die "Unknown add child type: $rawKey"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Validate allowed. Проверяем НАЛИЧИЕ ключа, а не истинность списка: пустой список
|
# Validate allowed. Проверяем НАЛИЧИЕ ключа, а не истинность списка: пустой список
|
||||||
@@ -2350,15 +2354,13 @@ function Process-Add($addDef) {
|
|||||||
if ($script:validChildTypes.ContainsKey($script:objType)) {
|
if ($script:validChildTypes.ContainsKey($script:objType)) {
|
||||||
$allowed = $script:validChildTypes[$script:objType]
|
$allowed = $script:validChildTypes[$script:objType]
|
||||||
if ($childType -notin $allowed) {
|
if ($childType -notin $allowed) {
|
||||||
Warn "$childType not allowed for $($script:objType), skipping"
|
Die "$childType not allowed for $($script:objType)"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlTag = $script:childTypeToXmlTag[$childType]
|
$xmlTag = $script:childTypeToXmlTag[$childType]
|
||||||
if (-not $xmlTag) {
|
if (-not $xmlTag) {
|
||||||
Warn "No XML tag mapping for $childType"
|
Die "No XML tag mapping for $childType"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ensure-ChildObjectsOpen
|
Ensure-ChildObjectsOpen
|
||||||
@@ -2401,8 +2403,7 @@ function Process-Add($addDef) {
|
|||||||
if ($tv) {
|
if ($tv) {
|
||||||
foreach ($k in @("characteristics","defaultObjectForm","defaultRecordForm","defaultListForm","defaultChoiceForm")) {
|
foreach ($k in @("characteristics","defaultObjectForm","defaultRecordForm","defaultListForm","defaultChoiceForm")) {
|
||||||
if ($tv.$k) {
|
if ($tv.$k) {
|
||||||
Warn "Ключ '$k' не поддержан при добавлении таблицы: форму назначает навык form-add, характеристики — навык meta-compile. Таблица '$tblName' пропущена."
|
Die "Ключ '$k' не поддержан при добавлении таблицы: форму назначает навык form-add, характеристики — навык meta-compile."
|
||||||
$tblName = $null; break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2412,7 +2413,7 @@ function Process-Add($addDef) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
$tablePath = Join-Path $tablesDir "$tblName.xml"
|
$tablePath = Join-Path $tablesDir "$tblName.xml"
|
||||||
if (Test-Path $tablePath) {
|
if (Test-PendingOrFile $tablePath) {
|
||||||
Warn "Файл таблицы уже существует: $tablePath — пропускаю"
|
Warn "Файл таблицы уже существует: $tablePath — пропускаю"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -2422,8 +2423,7 @@ function Process-Add($addDef) {
|
|||||||
}
|
}
|
||||||
$fieldsXml = $fieldParts -join "`r`n"
|
$fieldsXml = $fieldParts -join "`r`n"
|
||||||
$tableXml = Build-EdsTableXml $script:objName $tblName $entry.Value $fieldsXml "" ""
|
$tableXml = Build-EdsTableXml $script:objName $tblName $entry.Value $fieldsXml "" ""
|
||||||
if (-not (Test-Path $tablesDir)) { New-Item -ItemType Directory -Path $tablesDir -Force | Out-Null }
|
$script:pendingWrites[$tablePath] = $tableXml.TrimEnd("`r", "`n")
|
||||||
[System.IO.File]::WriteAllText($tablePath, $tableXml.TrimEnd("`r", "`n"), (New-Object System.Text.UTF8Encoding($true)))
|
|
||||||
$fragmentXml = "$indent<Table>$(Esc-XmlText $tblName)</Table>"
|
$fragmentXml = "$indent<Table>$(Esc-XmlText $tblName)</Table>"
|
||||||
$nodes = Import-Fragment $fragmentXml
|
$nodes = Import-Fragment $fragmentXml
|
||||||
$refNode = Find-InsertionPoint "Table" @{ name = $tblName }
|
$refNode = Find-InsertionPoint "Table" @{ name = $tblName }
|
||||||
@@ -2579,7 +2579,7 @@ function Process-Add($addDef) {
|
|||||||
# эту ответственность здесь нельзя: получится висячая регистрация без файла.
|
# эту ответственность здесь нельзя: получится висячая регистрация без файла.
|
||||||
$skillName = if ($childType -eq "forms") { "form-add" } else { "template-add" }
|
$skillName = if ($childType -eq "forms") { "form-add" } else { "template-add" }
|
||||||
$whatName = if ($childType -eq "forms") { "Форму" } else { "Макет" }
|
$whatName = if ($childType -eq "forms") { "Форму" } else { "Макет" }
|
||||||
Warn "$whatName добавляет навык $skillName (он создаёт и файл, и запись в ChildObjects). meta-edit этого не делает — операция пропущена."
|
Die "$whatName добавляет навык $skillName (он создаёт и файл, и запись в ChildObjects). meta-edit этого не делает."
|
||||||
}
|
}
|
||||||
"commands" {
|
"commands" {
|
||||||
foreach ($item in $items) {
|
foreach ($item in $items) {
|
||||||
@@ -2592,8 +2592,7 @@ function Process-Add($addDef) {
|
|||||||
# он есть у всех команд без исключения. Пишем ту же заготовку, что и meta-compile.
|
# он есть у всех команд без исключения. Пишем ту же заготовку, что и meta-compile.
|
||||||
$cmdExtDir = Join-Path (Join-Path (Join-Path (Join-Path (Split-Path -Parent $resolvedPath) $script:objName) "Commands") $itemName) "Ext"
|
$cmdExtDir = Join-Path (Join-Path (Join-Path (Join-Path (Split-Path -Parent $resolvedPath) $script:objName) "Commands") $itemName) "Ext"
|
||||||
$cmdModPath = Join-Path $cmdExtDir "CommandModule.bsl"
|
$cmdModPath = Join-Path $cmdExtDir "CommandModule.bsl"
|
||||||
if (-not (Test-Path $cmdExtDir)) { New-Item -ItemType Directory -Path $cmdExtDir -Force | Out-Null }
|
$script:pendingWrites[$cmdModPath] = "&НаКлиенте`r`nПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)`r`n`r`n`t// Вставьте обработчик команды.`r`n`r`nКонецПроцедуры`r`n"
|
||||||
[System.IO.File]::WriteAllText($cmdModPath, "&НаКлиенте`r`nПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)`r`n`r`n`t// Вставьте обработчик команды.`r`n`r`nКонецПроцедуры`r`n", (New-Object System.Text.UTF8Encoding($true)))
|
|
||||||
$fragmentXml = Build-CommandFragment $itemName $indent
|
$fragmentXml = Build-CommandFragment $itemName $indent
|
||||||
$nodes = Import-Fragment $fragmentXml
|
$nodes = Import-Fragment $fragmentXml
|
||||||
$refNode = Find-InsertionPoint "Command" @{ after = ""; before = "" }
|
$refNode = Find-InsertionPoint "Command" @{ after = ""; before = "" }
|
||||||
@@ -2620,19 +2619,16 @@ function Process-Remove($removeDef) {
|
|||||||
$childType = Resolve-ChildTypeKey $rawKey
|
$childType = Resolve-ChildTypeKey $rawKey
|
||||||
|
|
||||||
if (-not $childType) {
|
if (-not $childType) {
|
||||||
Warn "Unknown remove child type: $rawKey"
|
Die "Unknown remove child type: $rawKey"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
if ($childType -eq "properties") {
|
if ($childType -eq "properties") {
|
||||||
Warn "Cannot remove properties — use modify instead"
|
Die "Cannot remove properties — use modify instead"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
if ($childType -in @("forms","templates")) {
|
if ($childType -in @("forms","templates")) {
|
||||||
# Снять регистрацию мало — надо удалить и файлы; это делают form-remove / template-remove.
|
# Снять регистрацию мало — надо удалить и файлы; это делают form-remove / template-remove.
|
||||||
$skillName = if ($childType -eq "forms") { "form-remove" } else { "template-remove" }
|
$skillName = if ($childType -eq "forms") { "form-remove" } else { "template-remove" }
|
||||||
$whatName = if ($childType -eq "forms") { "Форму" } else { "Макет" }
|
$whatName = if ($childType -eq "forms") { "Форму" } else { "Макет" }
|
||||||
Warn "$whatName удаляет навык $skillName (он убирает и файлы, и запись в ChildObjects). meta-edit этого не делает — операция пропущена."
|
Die "$whatName удаляет навык $skillName (он убирает и файлы, и запись в ChildObjects). meta-edit этого не делает."
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlTag = $script:childTypeToXmlTag[$childType]
|
$xmlTag = $script:childTypeToXmlTag[$childType]
|
||||||
@@ -2687,8 +2683,7 @@ function Modify-Properties($propsDef) {
|
|||||||
Insert-PropertyInOrder $script:propertiesEl $newNodes[0] $null $propName
|
Insert-PropertyInOrder $script:propertiesEl $newNodes[0] $null $propName
|
||||||
$propEl = $newNodes[0]
|
$propEl = $newNodes[0]
|
||||||
} else {
|
} else {
|
||||||
Warn "Property '$propName': could not create element"
|
Die "Property '$propName': could not create element"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2750,8 +2745,7 @@ function Modify-Properties($propsDef) {
|
|||||||
function Modify-ChildElements($modifyDef, [string]$childType) {
|
function Modify-ChildElements($modifyDef, [string]$childType) {
|
||||||
$xmlTag = $script:childTypeToXmlTag[$childType]
|
$xmlTag = $script:childTypeToXmlTag[$childType]
|
||||||
if (-not $xmlTag -or -not $script:childObjectsEl) {
|
if (-not $xmlTag -or -not $script:childObjectsEl) {
|
||||||
Warn "No ChildObjects or unknown tag for $childType"
|
Die "No ChildObjects or unknown tag for $childType"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$modifyDef.PSObject.Properties | ForEach-Object {
|
$modifyDef.PSObject.Properties | ForEach-Object {
|
||||||
@@ -2760,8 +2754,7 @@ function Modify-ChildElements($modifyDef, [string]$childType) {
|
|||||||
|
|
||||||
$el = Find-ElementByName $script:childObjectsEl $xmlTag $elemName
|
$el = Find-ElementByName $script:childObjectsEl $xmlTag $elemName
|
||||||
if (-not $el) {
|
if (-not $el) {
|
||||||
Warn "$xmlTag '$elemName' not found for modify"
|
Die "$xmlTag '$elemName' not found for modify"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Find Properties inside the element
|
# Find Properties inside the element
|
||||||
@@ -2772,8 +2765,7 @@ function Modify-ChildElements($modifyDef, [string]$childType) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (-not $propsEl) {
|
if (-not $propsEl) {
|
||||||
Warn "$xmlTag '$elemName': no Properties element found"
|
Die "$xmlTag '$elemName': no Properties element found"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$changes.PSObject.Properties | ForEach-Object {
|
$changes.PSObject.Properties | ForEach-Object {
|
||||||
@@ -2793,8 +2785,7 @@ function Modify-ChildElements($modifyDef, [string]$childType) {
|
|||||||
switch ($changeProp) {
|
switch ($changeProp) {
|
||||||
"add" {
|
"add" {
|
||||||
if (-not $tsChildObjEl) {
|
if (-not $tsChildObjEl) {
|
||||||
Warn "TS '$elemName' has no ChildObjects element, cannot add attributes"
|
Die "TS '$elemName' has no ChildObjects element, cannot add attributes"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
# Ensure ChildObjects is open (not self-closing empty)
|
# Ensure ChildObjects is open (not self-closing empty)
|
||||||
$hasTsChildElements = $false
|
$hasTsChildElements = $false
|
||||||
@@ -2846,8 +2837,7 @@ function Modify-ChildElements($modifyDef, [string]$childType) {
|
|||||||
}
|
}
|
||||||
"modify" {
|
"modify" {
|
||||||
if (-not $tsChildObjEl) {
|
if (-not $tsChildObjEl) {
|
||||||
Warn "TS '$elemName' has no ChildObjects, cannot modify attributes"
|
Die "TS '$elemName' has no ChildObjects, cannot modify attributes"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
# Temporarily swap childObjectsEl and recurse
|
# Temporarily swap childObjectsEl and recurse
|
||||||
$savedChildObjEl = $script:childObjectsEl
|
$savedChildObjEl = $script:childObjectsEl
|
||||||
@@ -3074,8 +3064,7 @@ function Process-Modify($modifyDef) {
|
|||||||
$childType = Resolve-ChildTypeKey $rawKey
|
$childType = Resolve-ChildTypeKey $rawKey
|
||||||
|
|
||||||
if (-not $childType) {
|
if (-not $childType) {
|
||||||
Warn "Unknown modify child type: $rawKey"
|
Die "Unknown modify child type: $rawKey"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($childType -eq "properties") {
|
if ($childType -eq "properties") {
|
||||||
@@ -3621,7 +3610,7 @@ function Get-ComplexPropertyValues([System.Xml.XmlElement]$propEl) {
|
|||||||
|
|
||||||
function Add-ComplexPropertyItem([string]$propertyName, [string[]]$values) {
|
function Add-ComplexPropertyItem([string]$propertyName, [string[]]$values) {
|
||||||
$mapEntry = $script:complexPropertyMap[$propertyName]
|
$mapEntry = $script:complexPropertyMap[$propertyName]
|
||||||
if (-not $mapEntry) { Warn "Unknown complex property: $propertyName"; return }
|
if (-not $mapEntry) { Die "Unknown complex property: $propertyName" }
|
||||||
if ($mapEntry.expand) { $values = @($values | ForEach-Object { Expand-DataPath "$_" }) }
|
if ($mapEntry.expand) { $values = @($values | ForEach-Object { Expand-DataPath "$_" }) }
|
||||||
if ($mapEntry.mdref) { $values = @($values | ForEach-Object { Normalize-MDObjectRef "$_" $mapEntry.root }) }
|
if ($mapEntry.mdref) { $values = @($values | ForEach-Object { Normalize-MDObjectRef "$_" $mapEntry.root }) }
|
||||||
|
|
||||||
@@ -3706,7 +3695,7 @@ function Remove-ComplexPropertyItem([string]$propertyName, [string[]]$values) {
|
|||||||
|
|
||||||
function Set-ComplexProperty([string]$propertyName, [string[]]$values) {
|
function Set-ComplexProperty([string]$propertyName, [string[]]$values) {
|
||||||
$mapEntry = $script:complexPropertyMap[$propertyName]
|
$mapEntry = $script:complexPropertyMap[$propertyName]
|
||||||
if (-not $mapEntry) { Warn "Unknown complex property: $propertyName"; return }
|
if (-not $mapEntry) { Die "Unknown complex property: $propertyName" }
|
||||||
if ($mapEntry.expand) { $values = @($values | ForEach-Object { Expand-DataPath "$_" }) }
|
if ($mapEntry.expand) { $values = @($values | ForEach-Object { Expand-DataPath "$_" }) }
|
||||||
if ($mapEntry.mdref) { $values = @($values | ForEach-Object { Normalize-MDObjectRef "$_" $mapEntry.root }) }
|
if ($mapEntry.mdref) { $values = @($values | ForEach-Object { Normalize-MDObjectRef "$_" $mapEntry.root }) }
|
||||||
|
|
||||||
@@ -3830,17 +3819,15 @@ function Add-PredefinedItems($items) {
|
|||||||
$itemsXml = ""
|
$itemsXml = ""
|
||||||
foreach ($it in @($items)) { $itemsXml += (Build-PredefItemXml "`t" $it $codeType) }
|
foreach ($it in @($items)) { $itemsXml += (Build-PredefItemXml "`t" $it $codeType) }
|
||||||
$utf8Bom = New-Object System.Text.UTF8Encoding($true)
|
$utf8Bom = New-Object System.Text.UTF8Encoding($true)
|
||||||
if (Test-Path $path) {
|
if (Test-PendingOrFile $path) {
|
||||||
$text = [System.IO.File]::ReadAllText($path, $utf8Bom)
|
$text = if ($script:pendingWrites.Contains($path)) { $script:pendingWrites[$path] } else { [System.IO.File]::ReadAllText($path, $utf8Bom) }
|
||||||
$text = $text.Replace("</PredefinedData>", "$itemsXml</PredefinedData>")
|
$text = $text.Replace("</PredefinedData>", "$itemsXml</PredefinedData>")
|
||||||
} else {
|
} else {
|
||||||
$extDir = Split-Path $path
|
|
||||||
if (-not (Test-Path $extDir)) { New-Item -ItemType Directory -Path $extDir -Force | Out-Null }
|
|
||||||
$hdr = "<?xml version=`"1.0`" encoding=`"UTF-8`"?>`r`n<PredefinedData xmlns=`"http://v8.1c.ru/8.3/xcf/predef`" xmlns:v8=`"http://v8.1c.ru/8.1/data/core`" xmlns:xr=`"http://v8.1c.ru/8.3/xcf/readable`" xmlns:xs=`"http://www.w3.org/2001/XMLSchema`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`" xsi:type=`"$xsiType`" version=`"$version`">`r`n"
|
$hdr = "<?xml version=`"1.0`" encoding=`"UTF-8`"?>`r`n<PredefinedData xmlns=`"http://v8.1c.ru/8.3/xcf/predef`" xmlns:v8=`"http://v8.1c.ru/8.1/data/core`" xmlns:xr=`"http://v8.1c.ru/8.3/xcf/readable`" xmlns:xs=`"http://www.w3.org/2001/XMLSchema`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`" xsi:type=`"$xsiType`" version=`"$version`">`r`n"
|
||||||
$text = "$hdr$itemsXml</PredefinedData>`r`n"
|
$text = "$hdr$itemsXml</PredefinedData>`r`n"
|
||||||
}
|
}
|
||||||
# Создаваемый файл — по канону: без перевода строки в конце.
|
# Создаваемый файл — по канону: без перевода строки в конце.
|
||||||
[System.IO.File]::WriteAllText($path, $text.TrimEnd("`r", "`n"), $utf8Bom)
|
$script:pendingWrites[$path] = $text.TrimEnd("`r", "`n")
|
||||||
$n = @($items).Count
|
$n = @($items).Count
|
||||||
Info "Added $n predefined item(s) → $path"
|
Info "Added $n predefined item(s) → $path"
|
||||||
$script:addCount += $n
|
$script:addCount += $n
|
||||||
@@ -3872,8 +3859,7 @@ $def.PSObject.Properties | ForEach-Object {
|
|||||||
if ($prop.Name -eq "_complex") { return }
|
if ($prop.Name -eq "_complex") { return }
|
||||||
$opKey = Resolve-OperationKey $prop.Name
|
$opKey = Resolve-OperationKey $prop.Name
|
||||||
if (-not $opKey) {
|
if (-not $opKey) {
|
||||||
Warn "Unknown operation: $($prop.Name)"
|
Die "Unknown operation: $($prop.Name)"
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ($opKey) {
|
switch ($opKey) {
|
||||||
@@ -3925,6 +3911,12 @@ $text = ($text -replace "`r`n", "`n") -replace "`n", $targetEol
|
|||||||
|
|
||||||
Info "Saved: $resolvedPath"
|
Info "Saved: $resolvedPath"
|
||||||
|
|
||||||
|
foreach ($pw in $script:pendingWrites.GetEnumerator()) {
|
||||||
|
$pwDir = Split-Path $pw.Key
|
||||||
|
if (-not (Test-Path $pwDir)) { New-Item -ItemType Directory -Path $pwDir -Force | Out-Null }
|
||||||
|
[System.IO.File]::WriteAllText($pw.Key, $pw.Value, $utf8Bom)
|
||||||
|
}
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# Section 15: Auto-validate
|
# Section 15: Auto-validate
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# meta-edit v1.55 — Edit existing 1C metadata object XML
|
# meta-edit v1.56 — Edit existing 1C metadata object XML
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
@@ -376,6 +376,15 @@ def die(msg):
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
# Побочные файлы (таблица внешнего источника, модуль команды, предопределённые) пишутся после
|
||||||
|
# основного XML: отказ посреди определения не оставляет на диске ни одного изменения.
|
||||||
|
pending_writes = {}
|
||||||
|
|
||||||
|
|
||||||
|
def exists_pending_or_file(path):
|
||||||
|
return path in pending_writes or os.path.exists(path)
|
||||||
|
|
||||||
|
|
||||||
def localname(el):
|
def localname(el):
|
||||||
return etree.QName(el.tag).localname
|
return etree.QName(el.tag).localname
|
||||||
|
|
||||||
@@ -2087,8 +2096,7 @@ def convert_inline_to_definition(operation, value):
|
|||||||
for item in items:
|
for item in items:
|
||||||
dot_idx = item.find(".")
|
dot_idx = item.find(".")
|
||||||
if dot_idx <= 0:
|
if dot_idx <= 0:
|
||||||
warn(f"Invalid ts-attribute format (expected TSName.AttrDef): {item}")
|
die(f"Invalid ts-attribute format (expected TSName.AttrDef): {item}")
|
||||||
continue
|
|
||||||
ts_name = item[:dot_idx].strip()
|
ts_name = item[:dot_idx].strip()
|
||||||
rest = item[dot_idx + 1:].strip()
|
rest = item[dot_idx + 1:].strip()
|
||||||
if ts_name not in ts_groups:
|
if ts_name not in ts_groups:
|
||||||
@@ -2109,8 +2117,7 @@ def convert_inline_to_definition(operation, value):
|
|||||||
for elem_def in ts_groups[ts_name]:
|
for elem_def in ts_groups[ts_name]:
|
||||||
colon_idx = elem_def.find(":")
|
colon_idx = elem_def.find(":")
|
||||||
if colon_idx <= 0:
|
if colon_idx <= 0:
|
||||||
warn(f"Invalid modify format (expected Name: key=val): {elem_def}")
|
die(f"Invalid modify format (expected Name: key=val): {elem_def}")
|
||||||
continue
|
|
||||||
elem_name = elem_def[:colon_idx].strip()
|
elem_name = elem_def[:colon_idx].strip()
|
||||||
changes_part = elem_def[colon_idx + 1:].strip()
|
changes_part = elem_def[colon_idx + 1:].strip()
|
||||||
changes_obj = {}
|
changes_obj = {}
|
||||||
@@ -2198,7 +2205,7 @@ def convert_inline_to_definition(operation, value):
|
|||||||
v = kv[eq_idx + 1:].strip()
|
v = kv[eq_idx + 1:].strip()
|
||||||
props_obj[k] = v
|
props_obj[k] = v
|
||||||
else:
|
else:
|
||||||
warn(f"Invalid property format (expected Key=Value): {kv}")
|
die(f"Invalid property format (expected Key=Value): {kv}")
|
||||||
definition["modify"] = {"properties": props_obj}
|
definition["modify"] = {"properties": props_obj}
|
||||||
else:
|
else:
|
||||||
# "ElementName: key=val, key=val ;; Element2: key=val"
|
# "ElementName: key=val, key=val ;; Element2: key=val"
|
||||||
@@ -2207,8 +2214,7 @@ def convert_inline_to_definition(operation, value):
|
|||||||
for elem_def in elem_defs:
|
for elem_def in elem_defs:
|
||||||
colon_idx = elem_def.find(":")
|
colon_idx = elem_def.find(":")
|
||||||
if colon_idx <= 0:
|
if colon_idx <= 0:
|
||||||
warn(f"Invalid modify format (expected Name: key=val): {elem_def}")
|
die(f"Invalid modify format (expected Name: key=val): {elem_def}")
|
||||||
continue
|
|
||||||
elem_name = elem_def[:colon_idx].strip()
|
elem_name = elem_def[:colon_idx].strip()
|
||||||
changes_part = elem_def[colon_idx + 1:].strip()
|
changes_part = elem_def[colon_idx + 1:].strip()
|
||||||
changes_obj = {}
|
changes_obj = {}
|
||||||
@@ -2293,21 +2299,18 @@ def process_add(add_def):
|
|||||||
child_type = resolve_child_type_key(raw_key)
|
child_type = resolve_child_type_key(raw_key)
|
||||||
|
|
||||||
if not child_type:
|
if not child_type:
|
||||||
warn(f"Unknown add child type: {raw_key}")
|
die(f"Unknown add child type: {raw_key}")
|
||||||
continue
|
|
||||||
|
|
||||||
# Validate allowed. Проверяем НАЛИЧИЕ ключа, а не истинность списка: пустой список
|
# Validate allowed. Проверяем НАЛИЧИЕ ключа, а не истинность списка: пустой список
|
||||||
# (объект без допустимых детей) трактовался как «ограничений нет», и чужой ребёнок
|
# (объект без допустимых детей) трактовался как «ограничений нет», и чужой ребёнок
|
||||||
# молча записывался в объект.
|
# молча записывался в объект.
|
||||||
if obj_type in valid_child_types:
|
if obj_type in valid_child_types:
|
||||||
if child_type not in valid_child_types[obj_type]:
|
if child_type not in valid_child_types[obj_type]:
|
||||||
warn(f"{child_type} not allowed for {obj_type}, skipping")
|
die(f"{child_type} not allowed for {obj_type}")
|
||||||
continue
|
|
||||||
|
|
||||||
xml_tag = child_type_to_xml_tag.get(child_type)
|
xml_tag = child_type_to_xml_tag.get(child_type)
|
||||||
if not xml_tag:
|
if not xml_tag:
|
||||||
warn(f"No XML tag mapping for {child_type}")
|
die(f"No XML tag mapping for {child_type}")
|
||||||
continue
|
|
||||||
|
|
||||||
ensure_child_objects_open()
|
ensure_child_objects_open()
|
||||||
indent = get_child_indent(child_objects_el)
|
indent = get_child_indent(child_objects_el)
|
||||||
@@ -2344,13 +2347,12 @@ def process_add(add_def):
|
|||||||
bad_key = next((k for k in ('characteristics', 'defaultObjectForm', 'defaultRecordForm',
|
bad_key = next((k for k in ('characteristics', 'defaultObjectForm', 'defaultRecordForm',
|
||||||
'defaultListForm', 'defaultChoiceForm') if tv.get(k)), None)
|
'defaultListForm', 'defaultChoiceForm') if tv.get(k)), None)
|
||||||
if bad_key:
|
if bad_key:
|
||||||
warn(f"Ключ '{bad_key}' не поддержан при добавлении таблицы: форму назначает навык form-add, характеристики — навык meta-compile. Таблица '{tbl_name}' пропущена.")
|
die(f"Ключ '{bad_key}' не поддержан при добавлении таблицы: форму назначает навык form-add, характеристики — навык meta-compile.")
|
||||||
continue
|
|
||||||
if tbl_name in existing_names:
|
if tbl_name in existing_names:
|
||||||
warn(f"Table '{tbl_name}' already exists, skipping")
|
warn(f"Table '{tbl_name}' already exists, skipping")
|
||||||
continue
|
continue
|
||||||
table_path = os.path.join(tables_dir, f"{tbl_name}.xml")
|
table_path = os.path.join(tables_dir, f"{tbl_name}.xml")
|
||||||
if os.path.exists(table_path):
|
if exists_pending_or_file(table_path):
|
||||||
warn(f"\u0424\u0430\u0439\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442: {table_path} \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e")
|
warn(f"\u0424\u0430\u0439\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442: {table_path} \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e")
|
||||||
continue
|
continue
|
||||||
field_parts = []
|
field_parts = []
|
||||||
@@ -2358,9 +2360,7 @@ def process_add(add_def):
|
|||||||
field_parts.append(build_attribute_fragment(parse_attribute_shorthand(f), "eds-field", "\t\t\t", "Field"))
|
field_parts.append(build_attribute_fragment(parse_attribute_shorthand(f), "eds-field", "\t\t\t", "Field"))
|
||||||
fields_xml = "\r\n".join(field_parts)
|
fields_xml = "\r\n".join(field_parts)
|
||||||
table_xml = build_eds_table_xml(obj_name, tbl_name, entry, fields_xml, '', '')
|
table_xml = build_eds_table_xml(obj_name, tbl_name, entry, fields_xml, '', '')
|
||||||
os.makedirs(tables_dir, exist_ok=True)
|
pending_writes[table_path] = table_xml.rstrip("\r\n")
|
||||||
with open(table_path, "w", encoding="utf-8-sig", newline="") as fh:
|
|
||||||
fh.write(table_xml.rstrip("\r\n"))
|
|
||||||
nodes = import_fragment(f"{indent}<Table>{esc_xml_text(tbl_name)}</Table>")
|
nodes = import_fragment(f"{indent}<Table>{esc_xml_text(tbl_name)}</Table>")
|
||||||
ref_node = find_insertion_point("Table", {"name": tbl_name})
|
ref_node = find_insertion_point("Table", {"name": tbl_name})
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
@@ -2498,10 +2498,10 @@ def process_add(add_def):
|
|||||||
# эту ответственность здесь нельзя: получится висячая регистрация без файла.
|
# эту ответственность здесь нельзя: получится висячая регистрация без файла.
|
||||||
skill_name = "form-add" if child_type == "forms" else "template-add"
|
skill_name = "form-add" if child_type == "forms" else "template-add"
|
||||||
what_name = "Форму" if child_type == "forms" else "Макет"
|
what_name = "Форму" if child_type == "forms" else "Макет"
|
||||||
warn(
|
die(
|
||||||
f"{what_name} добавляет навык {skill_name} "
|
f"{what_name} добавляет навык {skill_name} "
|
||||||
"(он создаёт и файл, и запись в ChildObjects). "
|
"(он создаёт и файл, и запись в ChildObjects). "
|
||||||
"meta-edit этого не делает — операция пропущена."
|
"meta-edit этого не делает."
|
||||||
)
|
)
|
||||||
|
|
||||||
elif child_type == "commands":
|
elif child_type == "commands":
|
||||||
@@ -2517,9 +2517,7 @@ def process_add(add_def):
|
|||||||
# он есть у всех команд без исключения. Пишем ту же заготовку, что и meta-compile.
|
# он есть у всех команд без исключения. Пишем ту же заготовку, что и meta-compile.
|
||||||
cmd_ext_dir = os.path.join(os.path.dirname(resolved_path), obj_name, "Commands", item_name, "Ext")
|
cmd_ext_dir = os.path.join(os.path.dirname(resolved_path), obj_name, "Commands", item_name, "Ext")
|
||||||
cmd_mod_path = os.path.join(cmd_ext_dir, "CommandModule.bsl")
|
cmd_mod_path = os.path.join(cmd_ext_dir, "CommandModule.bsl")
|
||||||
os.makedirs(cmd_ext_dir, exist_ok=True)
|
pending_writes[cmd_mod_path] = ("&НаКлиенте\r\nПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)\r\n\r\n\t// Вставьте обработчик команды.\r\n\r\nКонецПроцедуры\r\n")
|
||||||
with open(cmd_mod_path, "w", encoding="utf-8-sig", newline="") as fh:
|
|
||||||
fh.write("&НаКлиенте\r\nПроцедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)\r\n\r\n\t// Вставьте обработчик команды.\r\n\r\nКонецПроцедуры\r\n")
|
|
||||||
fragment_xml = build_command_fragment(item_name, indent)
|
fragment_xml = build_command_fragment(item_name, indent)
|
||||||
nodes = import_fragment(fragment_xml)
|
nodes = import_fragment(fragment_xml)
|
||||||
ref_node = find_insertion_point("Command", {"after": "", "before": ""})
|
ref_node = find_insertion_point("Command", {"after": "", "before": ""})
|
||||||
@@ -2541,21 +2539,18 @@ def process_remove(remove_def):
|
|||||||
child_type = resolve_child_type_key(raw_key)
|
child_type = resolve_child_type_key(raw_key)
|
||||||
|
|
||||||
if not child_type:
|
if not child_type:
|
||||||
warn(f"Unknown remove child type: {raw_key}")
|
die(f"Unknown remove child type: {raw_key}")
|
||||||
continue
|
|
||||||
if child_type == "properties":
|
if child_type == "properties":
|
||||||
warn("Cannot remove properties -- use modify instead")
|
die("Cannot remove properties -- use modify instead")
|
||||||
continue
|
|
||||||
if child_type in ("forms", "templates"):
|
if child_type in ("forms", "templates"):
|
||||||
# Снять регистрацию мало — надо удалить и файлы; это делают form-remove / template-remove.
|
# Снять регистрацию мало — надо удалить и файлы; это делают form-remove / template-remove.
|
||||||
skill_name = "form-remove" if child_type == "forms" else "template-remove"
|
skill_name = "form-remove" if child_type == "forms" else "template-remove"
|
||||||
what_name = "Форму" if child_type == "forms" else "Макет"
|
what_name = "Форму" if child_type == "forms" else "Макет"
|
||||||
warn(
|
die(
|
||||||
f"{what_name} удаляет навык {skill_name} "
|
f"{what_name} удаляет навык {skill_name} "
|
||||||
"(он убирает и файлы, и запись в ChildObjects). "
|
"(он убирает и файлы, и запись в ChildObjects). "
|
||||||
"meta-edit этого не делает — операция пропущена."
|
"meta-edit этого не делает."
|
||||||
)
|
)
|
||||||
continue
|
|
||||||
|
|
||||||
xml_tag = child_type_to_xml_tag.get(child_type)
|
xml_tag = child_type_to_xml_tag.get(child_type)
|
||||||
if not xml_tag or child_objects_el is None:
|
if not xml_tag or child_objects_el is None:
|
||||||
@@ -2602,8 +2597,7 @@ def modify_properties(props_def):
|
|||||||
insert_property_in_order(properties_el, new_nodes[0], None, prop_name)
|
insert_property_in_order(properties_el, new_nodes[0], None, prop_name)
|
||||||
prop_el = new_nodes[0]
|
prop_el = new_nodes[0]
|
||||||
else:
|
else:
|
||||||
warn(f"Property '{prop_name}': could not create element")
|
die(f"Property '{prop_name}': could not create element")
|
||||||
continue
|
|
||||||
|
|
||||||
# Complex property: Owners, RegisterRecords, BasedOn, InputByString
|
# Complex property: Owners, RegisterRecords, BasedOn, InputByString
|
||||||
if prop_name in complex_property_map:
|
if prop_name in complex_property_map:
|
||||||
@@ -2659,14 +2653,12 @@ def modify_child_elements(modify_def, child_type):
|
|||||||
|
|
||||||
xml_tag = child_type_to_xml_tag.get(child_type)
|
xml_tag = child_type_to_xml_tag.get(child_type)
|
||||||
if not xml_tag or child_objects_el is None:
|
if not xml_tag or child_objects_el is None:
|
||||||
warn(f"No ChildObjects or unknown tag for {child_type}")
|
die(f"No ChildObjects or unknown tag for {child_type}")
|
||||||
return
|
|
||||||
|
|
||||||
for elem_name, changes in modify_def.items():
|
for elem_name, changes in modify_def.items():
|
||||||
el = find_element_by_name(child_objects_el, xml_tag, elem_name)
|
el = find_element_by_name(child_objects_el, xml_tag, elem_name)
|
||||||
if el is None:
|
if el is None:
|
||||||
warn(f"{xml_tag} '{elem_name}' not found for modify")
|
die(f"{xml_tag} '{elem_name}' not found for modify")
|
||||||
continue
|
|
||||||
|
|
||||||
# Find Properties inside the element
|
# Find Properties inside the element
|
||||||
props_el = None
|
props_el = None
|
||||||
@@ -2675,8 +2667,7 @@ def modify_child_elements(modify_def, child_type):
|
|||||||
props_el = gc
|
props_el = gc
|
||||||
break
|
break
|
||||||
if props_el is None:
|
if props_el is None:
|
||||||
warn(f"{xml_tag} '{elem_name}': no Properties element found")
|
die(f"{xml_tag} '{elem_name}': no Properties element found")
|
||||||
continue
|
|
||||||
|
|
||||||
for change_prop, change_value in changes.items():
|
for change_prop, change_value in changes.items():
|
||||||
# TS child attribute operations (add/remove/modify attrs inside a TabularSection)
|
# TS child attribute operations (add/remove/modify attrs inside a TabularSection)
|
||||||
@@ -2690,8 +2681,7 @@ def modify_child_elements(modify_def, child_type):
|
|||||||
|
|
||||||
if change_prop == "add":
|
if change_prop == "add":
|
||||||
if ts_child_obj_el is None:
|
if ts_child_obj_el is None:
|
||||||
warn(f"TS '{elem_name}' has no ChildObjects element, cannot add attributes")
|
die(f"TS '{elem_name}' has no ChildObjects element, cannot add attributes")
|
||||||
continue
|
|
||||||
# Ensure ChildObjects is open (not self-closing empty)
|
# Ensure ChildObjects is open (not self-closing empty)
|
||||||
has_ts_child_elements = any(True for _ in ts_child_obj_el)
|
has_ts_child_elements = any(True for _ in ts_child_obj_el)
|
||||||
if not has_ts_child_elements:
|
if not has_ts_child_elements:
|
||||||
@@ -2733,8 +2723,7 @@ def modify_child_elements(modify_def, child_type):
|
|||||||
|
|
||||||
elif change_prop == "modify":
|
elif change_prop == "modify":
|
||||||
if ts_child_obj_el is None:
|
if ts_child_obj_el is None:
|
||||||
warn(f"TS '{elem_name}' has no ChildObjects, cannot modify attributes")
|
die(f"TS '{elem_name}' has no ChildObjects, cannot modify attributes")
|
||||||
continue
|
|
||||||
# Temporarily swap childObjectsEl and recurse
|
# Temporarily swap childObjectsEl and recurse
|
||||||
saved_child_obj_el = child_objects_el
|
saved_child_obj_el = child_objects_el
|
||||||
child_objects_el = ts_child_obj_el
|
child_objects_el = ts_child_obj_el
|
||||||
@@ -2932,8 +2921,7 @@ def process_modify(modify_def):
|
|||||||
child_type = resolve_child_type_key(raw_key)
|
child_type = resolve_child_type_key(raw_key)
|
||||||
|
|
||||||
if not child_type:
|
if not child_type:
|
||||||
warn(f"Unknown modify child type: {raw_key}")
|
die(f"Unknown modify child type: {raw_key}")
|
||||||
continue
|
|
||||||
|
|
||||||
if child_type == "properties":
|
if child_type == "properties":
|
||||||
modify_properties(value)
|
modify_properties(value)
|
||||||
@@ -3553,8 +3541,7 @@ def add_complex_property_item(property_name, values):
|
|||||||
|
|
||||||
map_entry = complex_property_map.get(property_name)
|
map_entry = complex_property_map.get(property_name)
|
||||||
if not map_entry:
|
if not map_entry:
|
||||||
warn(f"Unknown complex property: {property_name}")
|
die(f"Unknown complex property: {property_name}")
|
||||||
return
|
|
||||||
if map_entry.get("expand"):
|
if map_entry.get("expand"):
|
||||||
values = [expand_data_path(str(v)) for v in values]
|
values = [expand_data_path(str(v)) for v in values]
|
||||||
if map_entry.get("mdref"):
|
if map_entry.get("mdref"):
|
||||||
@@ -3628,8 +3615,7 @@ def set_complex_property(property_name, values):
|
|||||||
|
|
||||||
map_entry = complex_property_map.get(property_name)
|
map_entry = complex_property_map.get(property_name)
|
||||||
if not map_entry:
|
if not map_entry:
|
||||||
warn(f"Unknown complex property: {property_name}")
|
die(f"Unknown complex property: {property_name}")
|
||||||
return
|
|
||||||
if map_entry.get("expand"):
|
if map_entry.get("expand"):
|
||||||
values = [expand_data_path(str(v)) for v in values]
|
values = [expand_data_path(str(v)) for v in values]
|
||||||
if map_entry.get("mdref"):
|
if map_entry.get("mdref"):
|
||||||
@@ -3824,14 +3810,15 @@ def add_predefined_items(items):
|
|||||||
path = get_predefined_path()
|
path = get_predefined_path()
|
||||||
item_list = items if isinstance(items, list) else [items]
|
item_list = items if isinstance(items, list) else [items]
|
||||||
items_xml = ''.join(build_predef_item_xml('\t', it, code_type) for it in item_list)
|
items_xml = ''.join(build_predef_item_xml('\t', it, code_type) for it in item_list)
|
||||||
if os.path.exists(path):
|
if path in pending_writes:
|
||||||
|
text = pending_writes[path].replace('</PredefinedData>', items_xml + '</PredefinedData>')
|
||||||
|
elif os.path.exists(path):
|
||||||
# newline='' => без трансляции переводов строк: иначе CRLF молча схлопнется
|
# newline='' => без трансляции переводов строк: иначе CRLF молча схлопнется
|
||||||
# в LF при чтении и файл будет переписан в LF (#44/#46/#47).
|
# в LF при чтении и файл будет переписан в LF (#44/#46/#47).
|
||||||
with open(path, 'r', encoding='utf-8-sig', newline='') as f:
|
with open(path, 'r', encoding='utf-8-sig', newline='') as f:
|
||||||
text = f.read()
|
text = f.read()
|
||||||
text = text.replace('</PredefinedData>', items_xml + '</PredefinedData>')
|
text = text.replace('</PredefinedData>', items_xml + '</PredefinedData>')
|
||||||
else:
|
else:
|
||||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
||||||
hdr = ('<?xml version="1.0" encoding="UTF-8"?>\r\n<PredefinedData xmlns="http://v8.1c.ru/8.3/xcf/predef" '
|
hdr = ('<?xml version="1.0" encoding="UTF-8"?>\r\n<PredefinedData xmlns="http://v8.1c.ru/8.3/xcf/predef" '
|
||||||
'xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" '
|
'xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" '
|
||||||
'xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
|
'xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
|
||||||
@@ -3839,10 +3826,7 @@ def add_predefined_items(items):
|
|||||||
text = hdr + items_xml + '</PredefinedData>'
|
text = hdr + items_xml + '</PredefinedData>'
|
||||||
# Без перевода строки в конце — канон #57. Срезаем в ОБЕИХ ветках: файл, созданный
|
# Без перевода строки в конце — канон #57. Срезаем в ОБЕИХ ветках: файл, созданный
|
||||||
# прежней версией навыка, мог унести хвост, а PS-порт срезает безусловно.
|
# прежней версией навыка, мог унести хвост, а PS-порт срезает безусловно.
|
||||||
text = text.rstrip('\r\n')
|
pending_writes[path] = text.rstrip('\r\n')
|
||||||
with open(path, 'wb') as f:
|
|
||||||
f.write(b'\xef\xbb\xbf')
|
|
||||||
f.write(text.encode('utf-8'))
|
|
||||||
info(f"Added {len(item_list)} predefined item(s) -> {path}")
|
info(f"Added {len(item_list)} predefined item(s) -> {path}")
|
||||||
add_count += len(item_list)
|
add_count += len(item_list)
|
||||||
|
|
||||||
@@ -3996,8 +3980,7 @@ def main():
|
|||||||
continue
|
continue
|
||||||
op_key = resolve_operation_key(prop_name)
|
op_key = resolve_operation_key(prop_name)
|
||||||
if not op_key:
|
if not op_key:
|
||||||
warn(f"Unknown operation: {prop_name}")
|
die(f"Unknown operation: {prop_name}")
|
||||||
continue
|
|
||||||
|
|
||||||
if op_key == "add":
|
if op_key == "add":
|
||||||
process_add(prop_value)
|
process_add(prop_value)
|
||||||
@@ -4010,6 +3993,12 @@ def main():
|
|||||||
save_xml(xml_tree, resolved_path)
|
save_xml(xml_tree, resolved_path)
|
||||||
info(f"Saved: {resolved_path}")
|
info(f"Saved: {resolved_path}")
|
||||||
|
|
||||||
|
for pw_path, pw_text in pending_writes.items():
|
||||||
|
os.makedirs(os.path.dirname(pw_path), exist_ok=True)
|
||||||
|
with open(pw_path, "wb") as fh:
|
||||||
|
fh.write(b"\xef\xbb\xbf")
|
||||||
|
fh.write(pw_text.encode("utf-8"))
|
||||||
|
|
||||||
# --- Auto-validate ---
|
# --- Auto-validate ---
|
||||||
if not args.NoValidate:
|
if not args.NoValidate:
|
||||||
# Внешняя обработка/отчёт — автономный объект, meta-validate его не знает (#108).
|
# Внешняя обработка/отчёт — автономный объект, meta-validate его не знает (#108).
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Поле в таблицу внешнего источника; реквизит туда не пускают",
|
"name": "Поле в таблицу внешнего источника",
|
||||||
"setup": "empty-config",
|
"setup": "empty-config",
|
||||||
"preRun": [
|
"preRun": [
|
||||||
{
|
{
|
||||||
@@ -9,34 +9,61 @@
|
|||||||
"name": "PG",
|
"name": "PG",
|
||||||
"tables": {
|
"tables": {
|
||||||
"products": {
|
"products": {
|
||||||
"keyFields": ["id"],
|
"keyFields": [
|
||||||
"fields": ["id: Number(10,0)", "name: String(150)"]
|
"id"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
"id: Number(10,0)",
|
||||||
|
"name: String(150)"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"params": { "objectPath": "ExternalDataSources/PG/Tables/products.xml" },
|
"params": {
|
||||||
|
"objectPath": "ExternalDataSources/PG/Tables/products.xml"
|
||||||
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"add": {
|
"add": {
|
||||||
"fields": [
|
"fields": [
|
||||||
"barcode: String(20) | nullable",
|
"barcode: String(20) | nullable",
|
||||||
{ "name": "cost", "type": "Number(15,2)", "nameInDataSource": "cost_net", "readOnly": true }
|
{
|
||||||
],
|
"name": "cost",
|
||||||
"attributes": ["Лишний: String(10)"]
|
"type": "Number(15,2)",
|
||||||
|
"nameInDataSource": "cost_net",
|
||||||
|
"readOnly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"expect": {
|
"expect": {
|
||||||
"stdoutContains": ["Added field: barcode", "Added field: cost", "attributes not allowed for Table"],
|
"stdoutContains": [
|
||||||
|
"Added field: barcode",
|
||||||
|
"Added field: cost"
|
||||||
|
],
|
||||||
"fileContains": [
|
"fileContains": [
|
||||||
{
|
{
|
||||||
"file": "ExternalDataSources/PG/Tables/products.xml",
|
"file": "ExternalDataSources/PG/Tables/products.xml",
|
||||||
"text": ["<NameInDataSource>cost_net</NameInDataSource>", "<AllowNull>true</AllowNull>", "<Field uuid="]
|
"text": [
|
||||||
|
"<NameInDataSource>cost_net</NameInDataSource>",
|
||||||
|
"<AllowNull>true</AllowNull>",
|
||||||
|
"<Field uuid="
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"fileNotContains": [
|
"fileNotContains": [
|
||||||
{ "file": "ExternalDataSources/PG/Tables/products.xml", "text": ["<Attribute uuid=", "<Indexing>"] }
|
{
|
||||||
|
"file": "ExternalDataSources/PG/Tables/products.xml",
|
||||||
|
"text": [
|
||||||
|
"<Attribute uuid=",
|
||||||
|
"<Indexing>"
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,27 +7,48 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"type": "ExternalDataSource",
|
"type": "ExternalDataSource",
|
||||||
"name": "PG",
|
"name": "PG",
|
||||||
"tables": { "products": { "keyFields": ["id"], "fields": ["id: Number(10,0)"] } }
|
"tables": {
|
||||||
|
"products": {
|
||||||
|
"keyFields": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
"id: Number(10,0)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"params": { "objectPath": "ExternalDataSources/PG.xml" },
|
"params": {
|
||||||
|
"objectPath": "ExternalDataSources/PG.xml"
|
||||||
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"add": {
|
"add": {
|
||||||
"tables": {
|
"tables": {
|
||||||
"sales": {
|
"sales": {
|
||||||
"defaultListForm": "ФормаСписка",
|
"defaultListForm": "ФормаСписка",
|
||||||
"fields": ["id: Number(10,0)"]
|
"fields": [
|
||||||
|
"id: Number(10,0)"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"expect": {
|
"expect": {
|
||||||
"stdoutContains": ["не поддержан при добавлении таблицы", "form-add"],
|
"filesAbsent": [
|
||||||
"filesAbsent": ["ExternalDataSources/PG/Tables/sales.xml"],
|
"ExternalDataSources/PG/Tables/sales.xml"
|
||||||
|
],
|
||||||
"fileNotContains": [
|
"fileNotContains": [
|
||||||
{ "file": "ExternalDataSources/PG.xml", "text": "<Table>sales</Table>" }
|
{
|
||||||
|
"file": "ExternalDataSources/PG.xml",
|
||||||
|
"text": "<Table>sales</Table>"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"expectError": "не поддержан при добавлении таблицы"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,18 +5,35 @@
|
|||||||
"preRun": [
|
"preRun": [
|
||||||
{
|
{
|
||||||
"script": "epf-init/scripts/init",
|
"script": "epf-init/scripts/init",
|
||||||
"args": { "-Name": "Проба", "-SrcDir": "{workDir}" }
|
"args": {
|
||||||
|
"-Name": "Проба",
|
||||||
|
"-SrcDir": "{workDir}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"params": { "objectPath": "Проба.xml", "objectName": "Проба" },
|
"params": {
|
||||||
|
"objectPath": "Проба.xml",
|
||||||
|
"objectName": "Проба"
|
||||||
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"add": {
|
"add": {
|
||||||
"commands": ["ПробнаяКоманда"]
|
"commands": [
|
||||||
|
"ПробнаяКоманда"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"expect": {
|
"expect": {
|
||||||
"stdoutContains": ["commands not allowed for ExternalDataProcessor", "Validation OK"],
|
"fileNotContains": [
|
||||||
"fileNotContains": [{ "file": "Проба.xml", "text": ["<Command"] }],
|
{
|
||||||
"filesAbsent": ["Проба/Commands"]
|
"file": "Проба.xml",
|
||||||
}
|
"text": [
|
||||||
|
"<Command"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filesAbsent": [
|
||||||
|
"Проба/Commands"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"expectError": "commands not allowed for ExternalDataProcessor"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "Отказ посреди определения: ни XML, ни модуль команды из той же правки не записаны",
|
||||||
|
"preRun": [
|
||||||
|
{
|
||||||
|
"script": "meta-compile/scripts/meta-compile",
|
||||||
|
"input": {
|
||||||
|
"type": "Catalog",
|
||||||
|
"name": "Контрагенты"
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"params": {
|
||||||
|
"objectPath": "Catalogs/Контрагенты"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"add": {
|
||||||
|
"commands": [
|
||||||
|
"ОткрытьДосье"
|
||||||
|
],
|
||||||
|
"реквизитыОпечатка": [
|
||||||
|
"Лишний: String(10)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expectError": "Unknown add child type",
|
||||||
|
"expect": {
|
||||||
|
"fileNotContains": [
|
||||||
|
{
|
||||||
|
"file": "Catalogs/Контрагенты.xml",
|
||||||
|
"text": [
|
||||||
|
"<Command uuid="
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filesAbsent": [
|
||||||
|
"Catalogs/Контрагенты/Commands/ОткрытьДосье/Ext/CommandModule.bsl"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"name": "Реквизит в таблицу внешнего источника: отказ, поля из того же определения тоже не записаны",
|
||||||
|
"setup": "empty-config",
|
||||||
|
"preRun": [
|
||||||
|
{
|
||||||
|
"script": "meta-compile/scripts/meta-compile",
|
||||||
|
"input": {
|
||||||
|
"type": "ExternalDataSource",
|
||||||
|
"name": "PG",
|
||||||
|
"tables": {
|
||||||
|
"products": {
|
||||||
|
"keyFields": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
"id: Number(10,0)",
|
||||||
|
"name: String(150)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"params": {
|
||||||
|
"objectPath": "ExternalDataSources/PG/Tables/products.xml"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"add": {
|
||||||
|
"fields": [
|
||||||
|
"barcode: String(20) | nullable",
|
||||||
|
{
|
||||||
|
"name": "cost",
|
||||||
|
"type": "Number(15,2)",
|
||||||
|
"nameInDataSource": "cost_net",
|
||||||
|
"readOnly": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributes": [
|
||||||
|
"Лишний: String(10)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expect": {
|
||||||
|
"fileNotContains": [
|
||||||
|
{
|
||||||
|
"file": "ExternalDataSources/PG/Tables/products.xml",
|
||||||
|
"text": [
|
||||||
|
"<Attribute uuid=",
|
||||||
|
"barcode",
|
||||||
|
"cost_net"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"expectError": "attributes not allowed for Table"
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"name": "Форму meta-edit не удаляет — отсылает к form-remove",
|
||||||
|
"preRun": [
|
||||||
|
{
|
||||||
|
"script": "meta-compile/scripts/meta-compile",
|
||||||
|
"input": {
|
||||||
|
"type": "Catalog",
|
||||||
|
"name": "Контрагенты"
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"params": {
|
||||||
|
"objectPath": "Catalogs/Контрагенты"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"remove": {
|
||||||
|
"forms": [
|
||||||
|
"ФормаСписка"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expect": {
|
||||||
|
"fileNotContains": [
|
||||||
|
{
|
||||||
|
"file": "Catalogs/Контрагенты.xml",
|
||||||
|
"text": [
|
||||||
|
"<Form",
|
||||||
|
"<Template"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"expectError": "form-remove"
|
||||||
|
}
|
||||||
@@ -3,22 +3,39 @@
|
|||||||
"preRun": [
|
"preRun": [
|
||||||
{
|
{
|
||||||
"script": "meta-compile/scripts/meta-compile",
|
"script": "meta-compile/scripts/meta-compile",
|
||||||
"input": { "type": "Catalog", "name": "Контрагенты" },
|
"input": {
|
||||||
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
"type": "Catalog",
|
||||||
|
"name": "Контрагенты"
|
||||||
|
},
|
||||||
|
"args": {
|
||||||
|
"-JsonPath": "{inputFile}",
|
||||||
|
"-OutputDir": "{workDir}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"params": { "objectPath": "Catalogs/Контрагенты" },
|
"params": {
|
||||||
|
"objectPath": "Catalogs/Контрагенты"
|
||||||
|
},
|
||||||
"input": {
|
"input": {
|
||||||
"add": { "forms": ["ФормаЭлемента"], "templates": ["ПечатнаяФорма"] },
|
"add": {
|
||||||
"remove": { "forms": ["ФормаСписка"] }
|
"forms": [
|
||||||
|
"ФормаЭлемента"
|
||||||
|
],
|
||||||
|
"templates": [
|
||||||
|
"ПечатнаяФорма"
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"expect": {
|
"expect": {
|
||||||
"stdoutContains": ["form-add", "template-add", "form-remove"],
|
|
||||||
"fileNotContains": [
|
"fileNotContains": [
|
||||||
{
|
{
|
||||||
"file": "Catalogs/Контрагенты.xml",
|
"file": "Catalogs/Контрагенты.xml",
|
||||||
"text": ["<Form", "<Template"]
|
"text": [
|
||||||
|
"<Form",
|
||||||
|
"<Template"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"expectError": "form-add"
|
||||||
}
|
}
|
||||||
|
|||||||
-252
@@ -1,252 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Configuration uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-002</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-003</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-004</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-005</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-006</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-007</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-008</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-009</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-010</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-011</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-012</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-013</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-014</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-015</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>TestConfig</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>TestConfig</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<NamePrefix/>
|
|
||||||
<ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode>
|
|
||||||
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
|
||||||
<UsePurposes>
|
|
||||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
|
||||||
</UsePurposes>
|
|
||||||
<ScriptVariant>Russian</ScriptVariant>
|
|
||||||
<DefaultRoles/>
|
|
||||||
<Vendor/>
|
|
||||||
<Version/>
|
|
||||||
<UpdateCatalogAddress/>
|
|
||||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
|
||||||
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
|
||||||
<UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication>
|
|
||||||
<AdditionalFullTextSearchDictionaries/>
|
|
||||||
<CommonSettingsStorage/>
|
|
||||||
<ReportsUserSettingsStorage/>
|
|
||||||
<ReportsVariantsStorage/>
|
|
||||||
<FormDataSettingsStorage/>
|
|
||||||
<DynamicListsUserSettingsStorage/>
|
|
||||||
<URLExternalDataStorage/>
|
|
||||||
<Content/>
|
|
||||||
<DefaultReportForm/>
|
|
||||||
<DefaultReportVariantForm/>
|
|
||||||
<DefaultReportSettingsForm/>
|
|
||||||
<DefaultReportAppearanceTemplate/>
|
|
||||||
<DefaultDynamicListSettingsForm/>
|
|
||||||
<DefaultSearchForm/>
|
|
||||||
<DefaultDataHistoryChangeHistoryForm/>
|
|
||||||
<DefaultDataHistoryVersionDataForm/>
|
|
||||||
<DefaultDataHistoryVersionDifferencesForm/>
|
|
||||||
<DefaultCollaborationSystemUsersChoiceForm/>
|
|
||||||
<RequiredMobileApplicationPermissions/>
|
|
||||||
<UsedMobileApplicationFunctionalities>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Biometrics</app:functionality>
|
|
||||||
<app:use>true</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Location</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundLocation</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BluetoothPrinters</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>WiFiPrinters</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Contacts</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Calendars</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PushNotifications</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>LocalNotifications</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>InAppPurchases</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PersonalComputerFileExchange</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Ads</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>NumberDialing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>CallProcessing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>CallLog</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AutoSendSMS</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>ReceiveSMS</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>SMSLog</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Camera</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Microphone</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>MusicLibrary</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PictureAndVideoLibraries</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AudioPlaybackAndVibration</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundAudioPlaybackAndVibration</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>InstallPackages</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>OSBackup</app:functionality>
|
|
||||||
<app:use>true</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>ApplicationUsageStatistics</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BarcodeScanning</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundAudioRecording</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AllFilesAccess</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Videoconferences</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>NFC</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>DocumentScanning</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>SpeechToText</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Geofences</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>IncomingShareRequests</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AllIncomingShareRequestsTypesProcessing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
</UsedMobileApplicationFunctionalities>
|
|
||||||
<StandaloneConfigurationRestrictionRoles/>
|
|
||||||
<MobileApplicationURLs/>
|
|
||||||
<AllowedIncomingShareRequestTypes/>
|
|
||||||
<MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode>
|
|
||||||
<DefaultInterface/>
|
|
||||||
<DefaultStyle/>
|
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
|
||||||
<BriefInformation/>
|
|
||||||
<DetailedInformation/>
|
|
||||||
<Copyright/>
|
|
||||||
<VendorInformationAddress/>
|
|
||||||
<ConfigurationInformationAddress/>
|
|
||||||
<DataLockControlMode>Managed</DataLockControlMode>
|
|
||||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
|
||||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
|
||||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
|
||||||
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
|
||||||
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
|
||||||
<CompatibilityMode>Version8_3_24</CompatibilityMode>
|
|
||||||
<DefaultConstantsForm/>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects>
|
|
||||||
<Language>Русский</Language>
|
|
||||||
<ExternalDataSource>PG</ExternalDataSource>
|
|
||||||
</ChildObjects>
|
|
||||||
</Configuration>
|
|
||||||
</MetaDataObject>
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ClientApplicationInterface xmlns="http://v8.1c.ru/8.2/managed-application/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="InterfaceLayouter">
|
|
||||||
<top>
|
|
||||||
<panel id="UUID-001">
|
|
||||||
<uuid>UUID-002</uuid>
|
|
||||||
</panel>
|
|
||||||
</top>
|
|
||||||
<left>
|
|
||||||
<panel id="UUID-003">
|
|
||||||
<uuid>UUID-004</uuid>
|
|
||||||
</panel>
|
|
||||||
</left>
|
|
||||||
<panelDef id="UUID-004"/>
|
|
||||||
<panelDef id="UUID-005"/>
|
|
||||||
<panelDef id="UUID-006"/>
|
|
||||||
<panelDef id="UUID-002"/>
|
|
||||||
<panelDef id="UUID-007"/>
|
|
||||||
</ClientApplicationInterface>
|
|
||||||
-33
@@ -1,33 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<ExternalDataSource uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceManager.PG" category="Manager">
|
|
||||||
<xr:TypeId>UUID-002</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-003</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTablesManager.PG" category="TablesManager">
|
|
||||||
<xr:TypeId>UUID-004</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-005</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceCubesManager.PG" category="CubesManager">
|
|
||||||
<xr:TypeId>UUID-006</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-007</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>PG</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>PG</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<DataLockControlMode>Automatic</DataLockControlMode>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects>
|
|
||||||
<Table>products</Table>
|
|
||||||
</ChildObjects>
|
|
||||||
</ExternalDataSource>
|
|
||||||
</MetaDataObject>
|
|
||||||
-130
@@ -1,130 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Table uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableManager.PG.products" category="Manager">
|
|
||||||
<xr:TypeId>UUID-002</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-003</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableObject.PG.products" category="Object">
|
|
||||||
<xr:TypeId>UUID-004</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-005</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableRef.PG.products" category="Ref">
|
|
||||||
<xr:TypeId>UUID-006</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-007</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableList.PG.products" category="List">
|
|
||||||
<xr:TypeId>UUID-008</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-009</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableRecord.PG.products" category="Record">
|
|
||||||
<xr:TypeId>UUID-010</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-011</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableRecordSet.PG.products" category="RecordSet">
|
|
||||||
<xr:TypeId>UUID-012</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-013</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableRecordKey.PG.products" category="RecordKey">
|
|
||||||
<xr:TypeId>UUID-014</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-015</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="ExternalDataSourceTableRecordManager.PG.products" category="RecordManager">
|
|
||||||
<xr:TypeId>UUID-016</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-017</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>products</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>products</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<TableType>Table</TableType>
|
|
||||||
<NameInDataSource>products</NameInDataSource>
|
|
||||||
<ExpressionInDataSource/>
|
|
||||||
<TableDataType>NonobjectData</TableDataType>
|
|
||||||
<KeyFields>
|
|
||||||
<xr:Field>ExternalDataSource.PG.Table.products.Field.id</xr:Field>
|
|
||||||
</KeyFields>
|
|
||||||
<PresentationField/>
|
|
||||||
<ParentField/>
|
|
||||||
<UnfilledParentValue xsi:nil="true"/>
|
|
||||||
<Characteristics/>
|
|
||||||
<UseStandardCommands>true</UseStandardCommands>
|
|
||||||
<QuickChoice>false</QuickChoice>
|
|
||||||
<InputByString/>
|
|
||||||
<CreateOnInput>Auto</CreateOnInput>
|
|
||||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
|
||||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
|
||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
|
||||||
<DefaultObjectForm/>
|
|
||||||
<DefaultRecordForm/>
|
|
||||||
<DefaultListForm/>
|
|
||||||
<DefaultChoiceForm/>
|
|
||||||
<ObjectPresentation/>
|
|
||||||
<ExtendedObjectPresentation/>
|
|
||||||
<RecordPresentation/>
|
|
||||||
<ExtendedRecordPresentation/>
|
|
||||||
<ListPresentation/>
|
|
||||||
<ExtendedListPresentation/>
|
|
||||||
<Explanation/>
|
|
||||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
|
||||||
<ReadOnly>false</ReadOnly>
|
|
||||||
<TransactionsIsolationLevel>Auto</TransactionsIsolationLevel>
|
|
||||||
<DataVersionField/>
|
|
||||||
<EditType>InDialog</EditType>
|
|
||||||
<BasedOn/>
|
|
||||||
<DataLockFields/>
|
|
||||||
<DataLockControlMode>Automatic</DataLockControlMode>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects>
|
|
||||||
<Field uuid="UUID-018">
|
|
||||||
<Properties>
|
|
||||||
<Name>id</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>id</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<Type>
|
|
||||||
<v8:Type>xs:decimal</v8:Type>
|
|
||||||
<v8:NumberQualifiers>
|
|
||||||
<v8:Digits>10</v8:Digits>
|
|
||||||
<v8:FractionDigits>0</v8:FractionDigits>
|
|
||||||
<v8:AllowedSign>Any</v8:AllowedSign>
|
|
||||||
</v8:NumberQualifiers>
|
|
||||||
</Type>
|
|
||||||
<PasswordMode>false</PasswordMode>
|
|
||||||
<Format/>
|
|
||||||
<EditFormat/>
|
|
||||||
<ToolTip/>
|
|
||||||
<MarkNegatives>false</MarkNegatives>
|
|
||||||
<Mask/>
|
|
||||||
<MultiLine>false</MultiLine>
|
|
||||||
<ExtendedEdit>false</ExtendedEdit>
|
|
||||||
<MinValue xsi:nil="true"/>
|
|
||||||
<MaxValue xsi:nil="true"/>
|
|
||||||
<FillFromFillingValue>false</FillFromFillingValue>
|
|
||||||
<FillValue xsi:type="xs:decimal">0</FillValue>
|
|
||||||
<FillChecking>DontCheck</FillChecking>
|
|
||||||
<ChoiceParameterLinks/>
|
|
||||||
<ChoiceParameters/>
|
|
||||||
<QuickChoice>Auto</QuickChoice>
|
|
||||||
<CreateOnInput>Auto</CreateOnInput>
|
|
||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
|
||||||
<ChoiceForm/>
|
|
||||||
<NameInDataSource>id</NameInDataSource>
|
|
||||||
<ReadOnly>false</ReadOnly>
|
|
||||||
<AllowNull>false</AllowNull>
|
|
||||||
</Properties>
|
|
||||||
</Field>
|
|
||||||
</ChildObjects>
|
|
||||||
</Table>
|
|
||||||
</MetaDataObject>
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Language uuid="UUID-001">
|
|
||||||
<Properties>
|
|
||||||
<Name>Русский</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>Русский</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<LanguageCode>ru</LanguageCode>
|
|
||||||
</Properties>
|
|
||||||
</Language>
|
|
||||||
</MetaDataObject>
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<ExternalDataProcessor uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-002</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-003</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:GeneratedType name="ExternalDataProcessorObject.Проба" category="Object">
|
|
||||||
<xr:TypeId>UUID-004</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-005</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>Проба</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>Проба</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<DefaultForm/>
|
|
||||||
<AuxiliaryForm/>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects/>
|
|
||||||
</ExternalDataProcessor>
|
|
||||||
</MetaDataObject>
|
|
||||||
-11
@@ -1,11 +0,0 @@
|
|||||||
#Область ОписаниеПеременных
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
-91
@@ -1,91 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Catalog uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:GeneratedType name="CatalogObject.Контрагенты" category="Object">
|
|
||||||
<xr:TypeId>UUID-002</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-003</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="CatalogRef.Контрагенты" category="Ref">
|
|
||||||
<xr:TypeId>UUID-004</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-005</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="CatalogSelection.Контрагенты" category="Selection">
|
|
||||||
<xr:TypeId>UUID-006</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-007</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="CatalogList.Контрагенты" category="List">
|
|
||||||
<xr:TypeId>UUID-008</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-009</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
<xr:GeneratedType name="CatalogManager.Контрагенты" category="Manager">
|
|
||||||
<xr:TypeId>UUID-010</xr:TypeId>
|
|
||||||
<xr:ValueId>UUID-011</xr:ValueId>
|
|
||||||
</xr:GeneratedType>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>Контрагенты</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>Контрагенты</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<Hierarchical>false</Hierarchical>
|
|
||||||
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
|
|
||||||
<LimitLevelCount>false</LimitLevelCount>
|
|
||||||
<LevelCount>2</LevelCount>
|
|
||||||
<FoldersOnTop>true</FoldersOnTop>
|
|
||||||
<UseStandardCommands>true</UseStandardCommands>
|
|
||||||
<Owners/>
|
|
||||||
<SubordinationUse>ToItems</SubordinationUse>
|
|
||||||
<CodeLength>9</CodeLength>
|
|
||||||
<DescriptionLength>25</DescriptionLength>
|
|
||||||
<CodeType>String</CodeType>
|
|
||||||
<CodeAllowedLength>Variable</CodeAllowedLength>
|
|
||||||
<CodeSeries>WholeCatalog</CodeSeries>
|
|
||||||
<CheckUnique>false</CheckUnique>
|
|
||||||
<Autonumbering>true</Autonumbering>
|
|
||||||
<DefaultPresentation>AsDescription</DefaultPresentation>
|
|
||||||
<Characteristics/>
|
|
||||||
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
|
|
||||||
<EditType>InDialog</EditType>
|
|
||||||
<QuickChoice>false</QuickChoice>
|
|
||||||
<ChoiceMode>BothWays</ChoiceMode>
|
|
||||||
<InputByString>
|
|
||||||
<xr:Field>Catalog.Контрагенты.StandardAttribute.Description</xr:Field>
|
|
||||||
<xr:Field>Catalog.Контрагенты.StandardAttribute.Code</xr:Field>
|
|
||||||
</InputByString>
|
|
||||||
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
|
|
||||||
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
|
|
||||||
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
|
|
||||||
<DefaultObjectForm/>
|
|
||||||
<DefaultFolderForm/>
|
|
||||||
<DefaultListForm/>
|
|
||||||
<DefaultChoiceForm/>
|
|
||||||
<DefaultFolderChoiceForm/>
|
|
||||||
<AuxiliaryObjectForm/>
|
|
||||||
<AuxiliaryFolderForm/>
|
|
||||||
<AuxiliaryListForm/>
|
|
||||||
<AuxiliaryChoiceForm/>
|
|
||||||
<AuxiliaryFolderChoiceForm/>
|
|
||||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
|
||||||
<BasedOn/>
|
|
||||||
<DataLockFields/>
|
|
||||||
<DataLockControlMode>Managed</DataLockControlMode>
|
|
||||||
<FullTextSearch>Use</FullTextSearch>
|
|
||||||
<ObjectPresentation/>
|
|
||||||
<ExtendedObjectPresentation/>
|
|
||||||
<ListPresentation/>
|
|
||||||
<ExtendedListPresentation/>
|
|
||||||
<Explanation/>
|
|
||||||
<CreateOnInput>Use</CreateOnInput>
|
|
||||||
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
|
|
||||||
<DataHistory>DontUse</DataHistory>
|
|
||||||
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
|
|
||||||
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects/>
|
|
||||||
</Catalog>
|
|
||||||
</MetaDataObject>
|
|
||||||
@@ -1,252 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Configuration uuid="UUID-001">
|
|
||||||
<InternalInfo>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-002</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-003</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-004</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-005</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-006</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-007</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-008</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-009</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-010</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-011</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-012</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-013</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
<xr:ContainedObject>
|
|
||||||
<xr:ClassId>UUID-014</xr:ClassId>
|
|
||||||
<xr:ObjectId>UUID-015</xr:ObjectId>
|
|
||||||
</xr:ContainedObject>
|
|
||||||
</InternalInfo>
|
|
||||||
<Properties>
|
|
||||||
<Name>TestConfig</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>TestConfig</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<NamePrefix/>
|
|
||||||
<ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode>
|
|
||||||
<DefaultRunMode>ManagedApplication</DefaultRunMode>
|
|
||||||
<UsePurposes>
|
|
||||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
|
||||||
</UsePurposes>
|
|
||||||
<ScriptVariant>Russian</ScriptVariant>
|
|
||||||
<DefaultRoles/>
|
|
||||||
<Vendor/>
|
|
||||||
<Version/>
|
|
||||||
<UpdateCatalogAddress/>
|
|
||||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
|
||||||
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
|
|
||||||
<UseOrdinaryFormInManagedApplication>false</UseOrdinaryFormInManagedApplication>
|
|
||||||
<AdditionalFullTextSearchDictionaries/>
|
|
||||||
<CommonSettingsStorage/>
|
|
||||||
<ReportsUserSettingsStorage/>
|
|
||||||
<ReportsVariantsStorage/>
|
|
||||||
<FormDataSettingsStorage/>
|
|
||||||
<DynamicListsUserSettingsStorage/>
|
|
||||||
<URLExternalDataStorage/>
|
|
||||||
<Content/>
|
|
||||||
<DefaultReportForm/>
|
|
||||||
<DefaultReportVariantForm/>
|
|
||||||
<DefaultReportSettingsForm/>
|
|
||||||
<DefaultReportAppearanceTemplate/>
|
|
||||||
<DefaultDynamicListSettingsForm/>
|
|
||||||
<DefaultSearchForm/>
|
|
||||||
<DefaultDataHistoryChangeHistoryForm/>
|
|
||||||
<DefaultDataHistoryVersionDataForm/>
|
|
||||||
<DefaultDataHistoryVersionDifferencesForm/>
|
|
||||||
<DefaultCollaborationSystemUsersChoiceForm/>
|
|
||||||
<RequiredMobileApplicationPermissions/>
|
|
||||||
<UsedMobileApplicationFunctionalities>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Biometrics</app:functionality>
|
|
||||||
<app:use>true</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Location</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundLocation</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BluetoothPrinters</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>WiFiPrinters</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Contacts</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Calendars</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PushNotifications</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>LocalNotifications</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>InAppPurchases</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PersonalComputerFileExchange</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Ads</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>NumberDialing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>CallProcessing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>CallLog</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AutoSendSMS</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>ReceiveSMS</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>SMSLog</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Camera</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Microphone</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>MusicLibrary</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>PictureAndVideoLibraries</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AudioPlaybackAndVibration</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundAudioPlaybackAndVibration</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>InstallPackages</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>OSBackup</app:functionality>
|
|
||||||
<app:use>true</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>ApplicationUsageStatistics</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BarcodeScanning</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>BackgroundAudioRecording</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AllFilesAccess</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Videoconferences</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>NFC</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>DocumentScanning</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>SpeechToText</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>Geofences</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>IncomingShareRequests</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
<app:functionality>
|
|
||||||
<app:functionality>AllIncomingShareRequestsTypesProcessing</app:functionality>
|
|
||||||
<app:use>false</app:use>
|
|
||||||
</app:functionality>
|
|
||||||
</UsedMobileApplicationFunctionalities>
|
|
||||||
<StandaloneConfigurationRestrictionRoles/>
|
|
||||||
<MobileApplicationURLs/>
|
|
||||||
<AllowedIncomingShareRequestTypes/>
|
|
||||||
<MainClientApplicationWindowMode>Normal</MainClientApplicationWindowMode>
|
|
||||||
<DefaultInterface/>
|
|
||||||
<DefaultStyle/>
|
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
|
||||||
<BriefInformation/>
|
|
||||||
<DetailedInformation/>
|
|
||||||
<Copyright/>
|
|
||||||
<VendorInformationAddress/>
|
|
||||||
<ConfigurationInformationAddress/>
|
|
||||||
<DataLockControlMode>Managed</DataLockControlMode>
|
|
||||||
<ObjectAutonumerationMode>NotAutoFree</ObjectAutonumerationMode>
|
|
||||||
<ModalityUseMode>DontUse</ModalityUseMode>
|
|
||||||
<SynchronousPlatformExtensionAndAddInCallUseMode>DontUse</SynchronousPlatformExtensionAndAddInCallUseMode>
|
|
||||||
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
|
|
||||||
<DatabaseTablespacesUseMode>DontUse</DatabaseTablespacesUseMode>
|
|
||||||
<CompatibilityMode>Version8_3_24</CompatibilityMode>
|
|
||||||
<DefaultConstantsForm/>
|
|
||||||
</Properties>
|
|
||||||
<ChildObjects>
|
|
||||||
<Language>Русский</Language>
|
|
||||||
<Catalog>Контрагенты</Catalog>
|
|
||||||
</ChildObjects>
|
|
||||||
</Configuration>
|
|
||||||
</MetaDataObject>
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ClientApplicationInterface xmlns="http://v8.1c.ru/8.2/managed-application/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="InterfaceLayouter">
|
|
||||||
<top>
|
|
||||||
<panel id="UUID-001">
|
|
||||||
<uuid>UUID-002</uuid>
|
|
||||||
</panel>
|
|
||||||
</top>
|
|
||||||
<left>
|
|
||||||
<panel id="UUID-003">
|
|
||||||
<uuid>UUID-004</uuid>
|
|
||||||
</panel>
|
|
||||||
</left>
|
|
||||||
<panelDef id="UUID-004"/>
|
|
||||||
<panelDef id="UUID-005"/>
|
|
||||||
<panelDef id="UUID-006"/>
|
|
||||||
<panelDef id="UUID-002"/>
|
|
||||||
<panelDef id="UUID-007"/>
|
|
||||||
</ClientApplicationInterface>
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
|
||||||
<Language uuid="UUID-001">
|
|
||||||
<Properties>
|
|
||||||
<Name>Русский</Name>
|
|
||||||
<Synonym>
|
|
||||||
<v8:item>
|
|
||||||
<v8:lang>ru</v8:lang>
|
|
||||||
<v8:content>Русский</v8:content>
|
|
||||||
</v8:item>
|
|
||||||
</Synonym>
|
|
||||||
<Comment/>
|
|
||||||
<LanguageCode>ru</LanguageCode>
|
|
||||||
</Properties>
|
|
||||||
</Language>
|
|
||||||
</MetaDataObject>
|
|
||||||
Reference in New Issue
Block a user