mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-13 22:35:16 +03:00
feat(meta-compile,meta-decompile): кастомизация стандартных реквизитов — FillValue/ChoiceParameterLinks/… (v1.27/v0.18)
Внутри StandardAttributes стандартные реквизиты кастомизируются теми же свойствами, что и обычные — профиль их не захватывал. Расширен override: fillValue (DTR-путь/строка/bool через Normalize-ChoiceValue, дефолт nil), choiceParameterLinks/choiceParameters (переиспользованы эмиттеры реквизита с xr:-тегом; dataPath — self-резолв Ссылка→StandardAttribute.Ref), comment, mask, choiceForm. Декомпилятор: парсинг вынесен в Parse-ChoiceParameter* (namespace-параметр md:/xr:), захват в override. Закрыто на выборке: ChoiceParameterLinks/Parameters/Comment/Mask=0; FillValue — DTR-путь(863)/empty-string(150)/bool(21)/string(4). Регресс 45/45 ps1+py, ps1↔py identical. spec §7.1.1, кейс catalog-stdattr-custom. NOT COVERED (вырожденные, редкие): fillValue стандартного реквизита как xs:string из пробелов (119, теряется при PreserveWhitespace=false) и пустой xr:DesignTimeRef (49). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# meta-compile v1.26 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.27 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -1045,6 +1045,9 @@ function Emit-StandardAttribute {
|
||||
$fts = OvOr 'FullTextSearch' 'Use'
|
||||
$syn = OvOr 'Synonym' ''
|
||||
$tt = OvOr 'ToolTip' ''
|
||||
$cf = OvOr 'ChoiceForm' ''
|
||||
$cmt = OvOr 'Comment' ''
|
||||
$msk = OvOr 'Mask' ''
|
||||
X "$indent<xr:StandardAttribute name=`"$attrName`">"
|
||||
X "$indent`t<xr:LinkByType/>"
|
||||
X "$indent`t<xr:FillChecking>$fc</xr:FillChecking>"
|
||||
@@ -1055,7 +1058,7 @@ function Emit-StandardAttribute {
|
||||
Emit-MLText "$indent`t" "xr:ToolTip" $tt
|
||||
X "$indent`t<xr:ExtendedEdit>false</xr:ExtendedEdit>"
|
||||
X "$indent`t<xr:Format/>"
|
||||
X "$indent`t<xr:ChoiceForm/>"
|
||||
if ($cf) { X "$indent`t<xr:ChoiceForm>$(Esc-Xml "$cf")</xr:ChoiceForm>" } else { X "$indent`t<xr:ChoiceForm/>" }
|
||||
X "$indent`t<xr:QuickChoice>Auto</xr:QuickChoice>"
|
||||
X "$indent`t<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>"
|
||||
X "$indent`t<xr:EditFormat/>"
|
||||
@@ -1064,12 +1067,19 @@ function Emit-StandardAttribute {
|
||||
X "$indent`t<xr:MarkNegatives>false</xr:MarkNegatives>"
|
||||
X "$indent`t<xr:MinValue xsi:nil=`"true`"/>"
|
||||
Emit-MLText "$indent`t" "xr:Synonym" $syn
|
||||
X "$indent`t<xr:Comment/>"
|
||||
if ($cmt) { X "$indent`t<xr:Comment>$(Esc-XmlText "$cmt")</xr:Comment>" } else { X "$indent`t<xr:Comment/>" }
|
||||
X "$indent`t<xr:FullTextSearch>$fts</xr:FullTextSearch>"
|
||||
X "$indent`t<xr:ChoiceParameterLinks/>"
|
||||
X "$indent`t<xr:FillValue xsi:nil=`"true`"/>"
|
||||
X "$indent`t<xr:Mask/>"
|
||||
X "$indent`t<xr:ChoiceParameters/>"
|
||||
Emit-ChoiceParameterLinks "$indent`t" (OvOr 'ChoiceParameterLinks' $null) 'xr:ChoiceParameterLinks'
|
||||
# FillValue: дефолт nil; override-значение → типизированное (Normalize-ChoiceValue: DTR-путь/строка/bool).
|
||||
$fvRaw = OvOr 'FillValue' $null
|
||||
if ($null -eq $fvRaw) { X "$indent`t<xr:FillValue xsi:nil=`"true`"/>" }
|
||||
else {
|
||||
$fvN = Normalize-ChoiceValue $fvRaw
|
||||
if ([string]::IsNullOrEmpty($fvN.Text)) { X "$indent`t<xr:FillValue xsi:type=`"$($fvN.XsiType)`"/>" }
|
||||
else { X "$indent`t<xr:FillValue xsi:type=`"$($fvN.XsiType)`">$(Esc-Xml $fvN.Text)</xr:FillValue>" }
|
||||
}
|
||||
if ($msk) { X "$indent`t<xr:Mask>$(Esc-XmlText "$msk")</xr:Mask>" } else { X "$indent`t<xr:Mask/>" }
|
||||
Emit-ChoiceParameters "$indent`t" (OvOr 'ChoiceParameters' $null) 'xr:ChoiceParameters'
|
||||
X "$indent</xr:StandardAttribute>"
|
||||
}
|
||||
|
||||
@@ -1101,6 +1111,12 @@ function Emit-StandardAttributes {
|
||||
if ($null -ne $d.fillFromFillingValue) { $ov['FillFromFillingValue'] = if ($d.fillFromFillingValue) { 'true' } else { 'false' } }
|
||||
if ($d.fullTextSearch) { $ov['FullTextSearch'] = "$($d.fullTextSearch)" }
|
||||
if ($d.dataHistory) { $ov['DataHistory'] = "$($d.dataHistory)" }
|
||||
if ($null -ne $d.fillValue) { $ov['FillValue'] = $d.fillValue } # DTR-путь/строка/bool
|
||||
if ($null -ne $d.choiceParameterLinks) { $ov['ChoiceParameterLinks'] = $d.choiceParameterLinks }
|
||||
if ($null -ne $d.choiceParameters) { $ov['ChoiceParameters'] = $d.choiceParameters }
|
||||
if ($d.comment) { $ov['Comment'] = "$($d.comment)" }
|
||||
if ($d.mask) { $ov['Mask'] = "$($d.mask)" }
|
||||
if ($d.choiceForm) { $ov['ChoiceForm'] = "$($d.choiceForm)" }
|
||||
}
|
||||
}
|
||||
Emit-StandardAttribute "$indent`t" $a $ov
|
||||
@@ -1274,9 +1290,9 @@ function ConvertFrom-ChLinkShorthand {
|
||||
# <ChoiceParameters> — [{name, value?}]. Значение ПРЯМО на app:value (xsi:type=тип); массив → v8:FixedArray
|
||||
# с детьми v8:Value; без value → app:value nil.
|
||||
function Emit-ChoiceParameters {
|
||||
param([string]$indent, $cp)
|
||||
if (-not $cp -or @($cp).Count -eq 0) { X "$indent<ChoiceParameters/>"; return }
|
||||
X "$indent<ChoiceParameters>"
|
||||
param([string]$indent, $cp, [string]$tag = 'ChoiceParameters')
|
||||
if (-not $cp -or @($cp).Count -eq 0) { X "$indent<$tag/>"; return }
|
||||
X "$indent<$tag>"
|
||||
foreach ($item in @($cp)) {
|
||||
if ($item -is [string]) { $item = ConvertFrom-ChParamShorthand $item }
|
||||
$name = Get-ChElProp $item @('name','имя')
|
||||
@@ -1308,14 +1324,14 @@ function Emit-ChoiceParameters {
|
||||
}
|
||||
X "$indent`t</app:item>"
|
||||
}
|
||||
X "$indent</ChoiceParameters>"
|
||||
X "$indent</$tag>"
|
||||
}
|
||||
|
||||
# <ChoiceParameterLinks> — [{name, dataPath, valueChange?}]. valueChange дефолт Clear.
|
||||
function Emit-ChoiceParameterLinks {
|
||||
param([string]$indent, $cpl)
|
||||
if (-not $cpl -or @($cpl).Count -eq 0) { X "$indent<ChoiceParameterLinks/>"; return }
|
||||
X "$indent<ChoiceParameterLinks>"
|
||||
param([string]$indent, $cpl, [string]$tag = 'ChoiceParameterLinks')
|
||||
if (-not $cpl -or @($cpl).Count -eq 0) { X "$indent<$tag/>"; return }
|
||||
X "$indent<$tag>"
|
||||
foreach ($lk in @($cpl)) {
|
||||
if ($lk -is [string]) { $lk = ConvertFrom-ChLinkShorthand $lk }
|
||||
$name = Get-ChElProp $lk @('name','имя')
|
||||
@@ -1335,7 +1351,7 @@ function Emit-ChoiceParameterLinks {
|
||||
X "$indent`t`t<xr:ValueChange>$vc</xr:ValueChange>"
|
||||
X "$indent`t</xr:Link>"
|
||||
}
|
||||
X "$indent</ChoiceParameterLinks>"
|
||||
X "$indent</$tag>"
|
||||
}
|
||||
|
||||
# --- Characteristics (привязка ПВХ «Дополнительные реквизиты и сведения») ---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-compile v1.26 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.27 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -1057,6 +1057,9 @@ def emit_standard_attribute(indent, attr_name, ov=None):
|
||||
fts = ov.get('FullTextSearch', 'Use')
|
||||
syn = ov.get('Synonym', '')
|
||||
tt = ov.get('ToolTip', '')
|
||||
cf = ov.get('ChoiceForm', '')
|
||||
cmt = ov.get('Comment', '')
|
||||
msk = ov.get('Mask', '')
|
||||
X(f'{indent}<xr:StandardAttribute name="{attr_name}">')
|
||||
X(f'{indent}\t<xr:LinkByType/>')
|
||||
X(f'{indent}\t<xr:FillChecking>{fc}</xr:FillChecking>')
|
||||
@@ -1067,7 +1070,10 @@ def emit_standard_attribute(indent, attr_name, ov=None):
|
||||
emit_mltext(f'{indent}\t', 'xr:ToolTip', tt)
|
||||
X(f'{indent}\t<xr:ExtendedEdit>false</xr:ExtendedEdit>')
|
||||
X(f'{indent}\t<xr:Format/>')
|
||||
X(f'{indent}\t<xr:ChoiceForm/>')
|
||||
if cf:
|
||||
X(f'{indent}\t<xr:ChoiceForm>{esc_xml(str(cf))}</xr:ChoiceForm>')
|
||||
else:
|
||||
X(f'{indent}\t<xr:ChoiceForm/>')
|
||||
X(f'{indent}\t<xr:QuickChoice>Auto</xr:QuickChoice>')
|
||||
X(f'{indent}\t<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>')
|
||||
X(f'{indent}\t<xr:EditFormat/>')
|
||||
@@ -1076,12 +1082,26 @@ def emit_standard_attribute(indent, attr_name, ov=None):
|
||||
X(f'{indent}\t<xr:MarkNegatives>false</xr:MarkNegatives>')
|
||||
X(f'{indent}\t<xr:MinValue xsi:nil="true"/>')
|
||||
emit_mltext(f'{indent}\t', 'xr:Synonym', syn)
|
||||
X(f'{indent}\t<xr:Comment/>')
|
||||
if cmt:
|
||||
X(f'{indent}\t<xr:Comment>{esc_xml_text(str(cmt))}</xr:Comment>')
|
||||
else:
|
||||
X(f'{indent}\t<xr:Comment/>')
|
||||
X(f'{indent}\t<xr:FullTextSearch>{fts}</xr:FullTextSearch>')
|
||||
X(f'{indent}\t<xr:ChoiceParameterLinks/>')
|
||||
X(f'{indent}\t<xr:FillValue xsi:nil="true"/>')
|
||||
X(f'{indent}\t<xr:Mask/>')
|
||||
X(f'{indent}\t<xr:ChoiceParameters/>')
|
||||
emit_choice_parameter_links(f'{indent}\t', ov.get('ChoiceParameterLinks'), 'xr:ChoiceParameterLinks')
|
||||
fv_raw = ov.get('FillValue', None)
|
||||
if fv_raw is None:
|
||||
X(f'{indent}\t<xr:FillValue xsi:nil="true"/>')
|
||||
else:
|
||||
fv_xt, fv_tx = normalize_choice_value(fv_raw)
|
||||
if fv_tx == '' or fv_tx is None:
|
||||
X(f'{indent}\t<xr:FillValue xsi:type="{fv_xt}"/>')
|
||||
else:
|
||||
X(f'{indent}\t<xr:FillValue xsi:type="{fv_xt}">{esc_xml(fv_tx)}</xr:FillValue>')
|
||||
if msk:
|
||||
X(f'{indent}\t<xr:Mask>{esc_xml_text(str(msk))}</xr:Mask>')
|
||||
else:
|
||||
X(f'{indent}\t<xr:Mask/>')
|
||||
emit_choice_parameters(f'{indent}\t', ov.get('ChoiceParameters'), 'xr:ChoiceParameters')
|
||||
X(f'{indent}</xr:StandardAttribute>')
|
||||
|
||||
# Единый эмиттер блока StandardAttributes — поведение правят ДАННЫЕ, не форк кода (см. коммент в .ps1).
|
||||
@@ -1115,6 +1135,18 @@ def emit_standard_attributes(indent, object_type):
|
||||
ov['FullTextSearch'] = str(d['fullTextSearch'])
|
||||
if d.get('dataHistory'):
|
||||
ov['DataHistory'] = str(d['dataHistory'])
|
||||
if d.get('fillValue') is not None:
|
||||
ov['FillValue'] = d['fillValue']
|
||||
if d.get('choiceParameterLinks') is not None:
|
||||
ov['ChoiceParameterLinks'] = d['choiceParameterLinks']
|
||||
if d.get('choiceParameters') is not None:
|
||||
ov['ChoiceParameters'] = d['choiceParameters']
|
||||
if d.get('comment'):
|
||||
ov['Comment'] = str(d['comment'])
|
||||
if d.get('mask'):
|
||||
ov['Mask'] = str(d['mask'])
|
||||
if d.get('choiceForm'):
|
||||
ov['ChoiceForm'] = str(d['choiceForm'])
|
||||
emit_standard_attribute(f'{indent}\t', a, ov)
|
||||
X(f'{indent}</StandardAttributes>')
|
||||
|
||||
@@ -1331,13 +1363,13 @@ def convert_from_ch_link_shorthand(s):
|
||||
o['dataPath'] = rest
|
||||
return o
|
||||
|
||||
def emit_choice_parameters(indent, cp):
|
||||
def emit_choice_parameters(indent, cp, tag='ChoiceParameters'):
|
||||
if not cp:
|
||||
X(f'{indent}<ChoiceParameters/>')
|
||||
X(f'{indent}<{tag}/>')
|
||||
return
|
||||
if isinstance(cp, (str, dict)):
|
||||
cp = [cp]
|
||||
X(f'{indent}<ChoiceParameters>')
|
||||
X(f'{indent}<{tag}>')
|
||||
for item in cp:
|
||||
if isinstance(item, str):
|
||||
item = convert_from_ch_param_shorthand(item)
|
||||
@@ -1365,15 +1397,15 @@ def emit_choice_parameters(indent, cp):
|
||||
else:
|
||||
X(f'{indent}\t\t<app:value xsi:type="{xt}">{esc_xml(tx)}</app:value>')
|
||||
X(f'{indent}\t</app:item>')
|
||||
X(f'{indent}</ChoiceParameters>')
|
||||
X(f'{indent}</{tag}>')
|
||||
|
||||
def emit_choice_parameter_links(indent, cpl):
|
||||
def emit_choice_parameter_links(indent, cpl, tag='ChoiceParameterLinks'):
|
||||
if not cpl:
|
||||
X(f'{indent}<ChoiceParameterLinks/>')
|
||||
X(f'{indent}<{tag}/>')
|
||||
return
|
||||
if isinstance(cpl, (str, dict)):
|
||||
cpl = [cpl]
|
||||
X(f'{indent}<ChoiceParameterLinks>')
|
||||
X(f'{indent}<{tag}>')
|
||||
for lk in cpl:
|
||||
if isinstance(lk, str):
|
||||
lk = convert_from_ch_link_shorthand(lk)
|
||||
@@ -1394,7 +1426,7 @@ def emit_choice_parameter_links(indent, cpl):
|
||||
X(f'{indent}\t\t<xr:DataPath xsi:type="xs:string">{esc_xml(str(dp))}</xr:DataPath>')
|
||||
X(f'{indent}\t\t<xr:ValueChange>{vc}</xr:ValueChange>')
|
||||
X(f'{indent}\t</xr:Link>')
|
||||
X(f'{indent}</ChoiceParameterLinks>')
|
||||
X(f'{indent}</{tag}>')
|
||||
|
||||
# --- Characteristics (привязка ПВХ «Дополнительные реквизиты и сведения») ---
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# meta-decompile v0.17 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# meta-decompile v0.18 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
#
|
||||
# Пилот: только Catalog. Инверс meta-compile (omit-on-default: ключ эмитим только
|
||||
@@ -209,6 +209,41 @@ function Get-ChoiceParamValue {
|
||||
return Convert-ChScalarNode $valNode
|
||||
}
|
||||
|
||||
# <ChoiceParameterLinks> → [{name,dataPath,valueChange?}] | строки "name=dataPath". $tag: 'md:...' (реквизит) | 'xr:...' (станд.).
|
||||
function Parse-ChoiceParameterLinks {
|
||||
param($parent, [string]$tag)
|
||||
$node = $parent.SelectSingleNode($tag, $nsm)
|
||||
if (-not $node) { return $null }
|
||||
$links = @($node.SelectNodes('xr:Link', $nsm))
|
||||
if ($links.Count -eq 0) { return $null }
|
||||
$arr = [System.Collections.ArrayList]@()
|
||||
foreach ($lk in $links) {
|
||||
$lName = $lk.SelectSingleNode('xr:Name', $nsm).InnerText
|
||||
$lDp = $lk.SelectSingleNode('xr:DataPath', $nsm).InnerText
|
||||
$vcN = $lk.SelectSingleNode('xr:ValueChange', $nsm); $vcv = if ($vcN) { $vcN.InnerText } else { 'Clear' }
|
||||
if ($vcv -eq 'Clear') { [void]$arr.Add("$lName=$lDp") }
|
||||
else { [void]$arr.Add([ordered]@{ name = $lName; dataPath = $lDp; valueChange = $vcv }) }
|
||||
}
|
||||
return $arr
|
||||
}
|
||||
# <ChoiceParameters> → [{name,value?}]. $tag: 'md:...' | 'xr:...'.
|
||||
function Parse-ChoiceParameters {
|
||||
param($parent, [string]$tag)
|
||||
$node = $parent.SelectSingleNode($tag, $nsm)
|
||||
if (-not $node) { return $null }
|
||||
$items = @($node.SelectNodes('app:item', $nsm))
|
||||
if ($items.Count -eq 0) { return $null }
|
||||
$arr = [System.Collections.ArrayList]@()
|
||||
foreach ($it in $items) {
|
||||
$pName = $it.GetAttribute('name')
|
||||
$valN = $it.SelectSingleNode('app:value', $nsm)
|
||||
$nilAttr = if ($valN) { $valN.GetAttribute('nil', 'http://www.w3.org/2001/XMLSchema-instance') } else { '' }
|
||||
if (-not $valN -or $nilAttr -eq 'true') { [void]$arr.Add([ordered]@{ name = $pName }) }
|
||||
else { $o = [ordered]@{ name = $pName }; $o['value'] = Get-ChoiceParamValue $valN; [void]$arr.Add($o) }
|
||||
}
|
||||
return $arr
|
||||
}
|
||||
|
||||
# --- Реквизит → DSL: shorthand-строка "Имя: Тип | флаги" ЛИБО object-форма при кастомном синониме.
|
||||
# (Синоним ≠ авто → object {name, type, synonym, [flags]}; иначе компактный shorthand.) ---
|
||||
function Attr-ToDsl {
|
||||
@@ -289,45 +324,8 @@ function Attr-ToDsl {
|
||||
}
|
||||
}
|
||||
|
||||
# ChoiceParameterLinks — [{name, dataPath, valueChange?}]. valueChange=Clear → компактно строкой "name=dataPath".
|
||||
$cplNode = $ap.SelectSingleNode('md:ChoiceParameterLinks', $nsm)
|
||||
if ($cplNode) {
|
||||
$links = @($cplNode.SelectNodes('xr:Link', $nsm))
|
||||
if ($links.Count -gt 0) {
|
||||
$arr = [System.Collections.ArrayList]@()
|
||||
foreach ($lk in $links) {
|
||||
$lName = $lk.SelectSingleNode('xr:Name', $nsm).InnerText
|
||||
$lDp = $lk.SelectSingleNode('xr:DataPath', $nsm).InnerText
|
||||
$vcN = $lk.SelectSingleNode('xr:ValueChange', $nsm)
|
||||
$vcv = if ($vcN) { $vcN.InnerText } else { 'Clear' }
|
||||
if ($vcv -eq 'Clear') { [void]$arr.Add("$lName=$lDp") }
|
||||
else { [void]$arr.Add([ordered]@{ name = $lName; dataPath = $lDp; valueChange = $vcv }) }
|
||||
}
|
||||
$extra['choiceParameterLinks'] = $arr
|
||||
}
|
||||
}
|
||||
|
||||
# ChoiceParameters — [{name, value?}]. app:value nil → без value; иначе типизированное значение.
|
||||
$cpNode = $ap.SelectSingleNode('md:ChoiceParameters', $nsm)
|
||||
if ($cpNode) {
|
||||
$items = @($cpNode.SelectNodes('app:item', $nsm))
|
||||
if ($items.Count -gt 0) {
|
||||
$arr = [System.Collections.ArrayList]@()
|
||||
foreach ($it in $items) {
|
||||
$pName = $it.GetAttribute('name')
|
||||
$valN = $it.SelectSingleNode('app:value', $nsm)
|
||||
$nilAttr = if ($valN) { $valN.GetAttribute('nil', 'http://www.w3.org/2001/XMLSchema-instance') } else { '' }
|
||||
if (-not $valN -or $nilAttr -eq 'true') {
|
||||
[void]$arr.Add([ordered]@{ name = $pName })
|
||||
} else {
|
||||
$o = [ordered]@{ name = $pName }
|
||||
$o['value'] = Get-ChoiceParamValue $valN
|
||||
[void]$arr.Add($o)
|
||||
}
|
||||
}
|
||||
$extra['choiceParameters'] = $arr
|
||||
}
|
||||
}
|
||||
$cplArr = Parse-ChoiceParameterLinks $ap 'md:ChoiceParameterLinks'; if ($null -ne $cplArr) { $extra['choiceParameterLinks'] = $cplArr }
|
||||
$cpArr = Parse-ChoiceParameters $ap 'md:ChoiceParameters'; if ($null -ne $cpArr) { $extra['choiceParameters'] = $cpArr }
|
||||
|
||||
if ($synCustom -or ($null -ne $ttVal) -or $extra.Count -gt 0) {
|
||||
$o = [ordered]@{ name = $nm }
|
||||
@@ -487,6 +485,14 @@ if ($saNode) {
|
||||
# FullTextSearch / DataHistory (профиль = Use)
|
||||
$ftsN = $sa.SelectSingleNode('xr:FullTextSearch', $nsm); if ($ftsN -and $ftsN.InnerText -ne 'Use') { $ov['fullTextSearch'] = $ftsN.InnerText }
|
||||
$dhN = $sa.SelectSingleNode('xr:DataHistory', $nsm); if ($dhN -and $dhN.InnerText -ne 'Use') { $ov['dataHistory'] = $dhN.InnerText }
|
||||
# FillValue (дефолт nil) — DTR-путь/строка/bool. Comment/Mask/ChoiceForm (дефолт пусто).
|
||||
$fvN = $sa.SelectSingleNode('xr:FillValue', $nsm)
|
||||
if ($fvN -and $fvN.GetAttribute('nil', 'http://www.w3.org/2001/XMLSchema-instance') -ne 'true') { $ov['fillValue'] = Convert-ChScalarNode $fvN }
|
||||
$saCmt = $sa.SelectSingleNode('xr:Comment', $nsm); if ($saCmt -and $saCmt.InnerText) { $ov['comment'] = $saCmt.InnerText }
|
||||
$saMsk = $sa.SelectSingleNode('xr:Mask', $nsm); if ($saMsk -and $saMsk.InnerText) { $ov['mask'] = $saMsk.InnerText }
|
||||
$saCf = $sa.SelectSingleNode('xr:ChoiceForm', $nsm); if ($saCf -and $saCf.InnerText) { $ov['choiceForm'] = $saCf.InnerText }
|
||||
$saCpl = Parse-ChoiceParameterLinks $sa 'xr:ChoiceParameterLinks'; if ($null -ne $saCpl) { $ov['choiceParameterLinks'] = $saCpl }
|
||||
$saCp = Parse-ChoiceParameters $sa 'xr:ChoiceParameters'; if ($null -ne $saCp) { $ov['choiceParameters'] = $saCp }
|
||||
if ($ov.Count -gt 0) { $saMap[$an] = $ov }
|
||||
}
|
||||
$dsl['standardAttributes'] = $saMap # даже пустой = блок есть (чистый профиль)
|
||||
|
||||
@@ -360,7 +360,9 @@ JSON DSL для описания объектов метаданных конф
|
||||
|
||||
Формат: `standardAttributes` — объект `{ ИмяРеквизита: { переопределения } }`. Имена реквизитов — как в XML: `PredefinedDataName`, `Predefined`, `Ref`, `DeletionMark`, `IsFolder`, `Owner`, `Parent`, `Description`, `Code`.
|
||||
|
||||
Переопределяемые поля реквизита: `synonym` (ML — строка/`{ru,en}`), `tooltip` (ML), `fillChecking` (`DontCheck`|`ShowError`|`ShowWarning`), `fillFromFillingValue` (bool), `fullTextSearch` (`Use`|`DontUse`), `dataHistory` (`Use`|`DontUse`).
|
||||
Переопределяемые поля реквизита: `synonym` (ML — строка/`{ru,en}`), `tooltip` (ML), `fillChecking` (`DontCheck`|`ShowError`|`ShowWarning`), `fillFromFillingValue` (bool), `fullTextSearch` (`Use`|`DontUse`), `dataHistory` (`Use`|`DontUse`), `fillValue` (значение — DTR-путь/строка/bool; см. §4.2), `choiceParameterLinks` / `choiceParameters` (как у реквизита, §4.2), `comment`, `mask`, `choiceForm`.
|
||||
|
||||
> Не покрыты (редкие вырожденные формы `fillValue` стандартного реквизита): «пустое» значение с не-nil типом — `xs:string` из одних пробелов и пустой `xr:DesignTimeRef`.
|
||||
|
||||
**Профиль материализованного блока** (значения, которые платформа заполняет автоматически — задавать их в DSL не нужно):
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "Кастомизация стандартных реквизитов (FillValue/ChoiceParameterLinks/Comment/Mask)",
|
||||
"input": {
|
||||
"type": "Catalog",
|
||||
"name": "Договоры",
|
||||
"owners": ["Catalog.Контрагенты"],
|
||||
"standardAttributes": {
|
||||
"Owner": {
|
||||
"choiceParameterLinks": [ { "name": "Отбор.Владелец", "dataPath": "Ссылка", "valueChange": "Clear" } ],
|
||||
"choiceParameters": [ { "name": "Отбор.ЭтоГруппа", "value": false } ]
|
||||
},
|
||||
"Code": { "fillValue": "0000000000", "comment": "префикс кода", "mask": "!9999999999" },
|
||||
"Description": { "fillValue": "Catalog.Контрагенты.EmptyRef" }
|
||||
}
|
||||
},
|
||||
"validatePath": "Catalogs/Договоры",
|
||||
"expect": {
|
||||
"files": ["Catalogs/Договоры.xml"]
|
||||
}
|
||||
}
|
||||
+339
@@ -0,0 +1,339 @@
|
||||
<?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>
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Catalog.Контрагенты</xr:Item>
|
||||
</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>
|
||||
<StandardAttributes>
|
||||
<xr:StandardAttribute name="PredefinedDataName">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Predefined">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Ref">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="DeletionMark">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="IsFolder">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Owner">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>ShowError</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>true</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks>
|
||||
<xr:Link>
|
||||
<xr:Name>Отбор.Владелец</xr:Name>
|
||||
<xr:DataPath xsi:type="xs:string">Catalog.Договоры.StandardAttribute.Ref</xr:DataPath>
|
||||
<xr:ValueChange>Clear</xr:ValueChange>
|
||||
</xr:Link>
|
||||
</xr:ChoiceParameterLinks>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters>
|
||||
<app:item name="Отбор.ЭтоГруппа">
|
||||
<app:value xsi:type="xs:boolean">false</app:value>
|
||||
</app:item>
|
||||
</xr:ChoiceParameters>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Parent">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>true</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:nil="true"/>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Description">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>ShowError</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment/>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:type="xr:DesignTimeRef">Catalog.Контрагенты.EmptyRef</xr:FillValue>
|
||||
<xr:Mask/>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
<xr:StandardAttribute name="Code">
|
||||
<xr:LinkByType/>
|
||||
<xr:FillChecking>DontCheck</xr:FillChecking>
|
||||
<xr:MultiLine>false</xr:MultiLine>
|
||||
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
|
||||
<xr:CreateOnInput>Auto</xr:CreateOnInput>
|
||||
<xr:MaxValue xsi:nil="true"/>
|
||||
<xr:ToolTip/>
|
||||
<xr:ExtendedEdit>false</xr:ExtendedEdit>
|
||||
<xr:Format/>
|
||||
<xr:ChoiceForm/>
|
||||
<xr:QuickChoice>Auto</xr:QuickChoice>
|
||||
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
|
||||
<xr:EditFormat/>
|
||||
<xr:PasswordMode>false</xr:PasswordMode>
|
||||
<xr:DataHistory>Use</xr:DataHistory>
|
||||
<xr:MarkNegatives>false</xr:MarkNegatives>
|
||||
<xr:MinValue xsi:nil="true"/>
|
||||
<xr:Synonym/>
|
||||
<xr:Comment>префикс кода</xr:Comment>
|
||||
<xr:FullTextSearch>Use</xr:FullTextSearch>
|
||||
<xr:ChoiceParameterLinks/>
|
||||
<xr:FillValue xsi:type="xs:string">0000000000</xr:FillValue>
|
||||
<xr:Mask>!9999999999</xr:Mask>
|
||||
<xr:ChoiceParameters/>
|
||||
</xr:StandardAttribute>
|
||||
</StandardAttributes>
|
||||
<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>Automatic</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>
|
||||
@@ -0,0 +1,252 @@
|
||||
<?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></Vendor>
|
||||
<Version></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
@@ -0,0 +1,18 @@
|
||||
<?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
@@ -0,0 +1,16 @@
|
||||
<?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