fix(meta-compile): порядок элементов по канону выгрузки

Детект порядка, добавленный в раундтрип-харнес, показал 1242 расхождения на
4897 объектах (25%). Раньше они были невидимы: дифф строился через
Compare-Object, то есть по мультимножеству строк, и позиция не проверялась.
Ложных срабатываний там нет по построению — проверка включается только когда
мультимножества уже совпали.

Три категории, все — порядок эмиссии; DSL и декомпилятор не затронуты.

1. Виды детей регистров (1140 объектов). Компилятор печатал
   Resource, Dimension, Attribute. Канон, снятый с корпуса acc+erp (разброса
   внутри типа нет): Resource, Attribute, Dimension у информационного,
   накопления и расчёта; Dimension, Resource, Attribute — у бухгалтерского.
   Команды у платформы идут последними, как и было.

2. Квалификаторы в составном типе (61 объект). Платформа пишет сначала ВСЕ
   <v8:Type>/<v8:TypeSet>, потом блоки квалификаторов, а Emit-TypeContent
   рекурсивно печатал каждую часть целиком. На одиночном типе оба порядка
   совпадают — потому и не всплывало. Порядок самих блоков тоже канонический
   и НЕ зеркалит порядок типов: Number, String, Date (при типах
   boolean,string,dateTime,decimal квалификаторы идут Number,String,Date;
   контрпримеров в корпусе нет).

3. Стандартные реквизиты плана обмена (41 объект, весь список): блок
   начинается с ThisNode, а не с Ref.

Проверка:
- корпусный раундтрип 4897 объектов: порядок ≠ 1242 → 0, match не просел
  (150/1640/151/2600/314/42), TOTAL diff lines 0;
- юнит-тесты 648/648 ps1, 645/648 py;
- 1С-сертификация на платформе 8.3.24: регистры информационный, накопления,
  бухгалтерский, расчёта и план обмена — все приняты;
- дрейф снэпшотов (10 файлов, 9 кейсов) сверен как чистая перестановка строк.
  NB: сверять нужно с нормализацией UUID-\d+ — раннер нумерует плейсхолдеры по
  порядку появления, и перестановка детей меняет, кому достанется UUID-015.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-06 15:22:18 +03:00
co-authored by Claude Opus 5
parent 4833c3b707
commit a3aa8fe87c
12 changed files with 438 additions and 338 deletions
@@ -1,4 +1,4 @@
# meta-compile v1.83 — Compile 1C metadata object from JSON # meta-compile v1.84 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param( param(
[Parameter(Mandatory)] [Parameter(Mandatory)]
@@ -608,10 +608,44 @@ function Emit-TypeContent {
if (-not $typeStr) { return } if (-not $typeStr) { return }
# Composite type: "Type1 + Type2 + Type3" # Composite type: "Type1 + Type2 + Type3"
# Платформа пишет сначала ВСЕ <v8:Type>/<v8:TypeSet>, и только потом блоки
# квалификаторов — а рекурсия ниже печатала бы каждую часть целиком (тип вместе со
# своими квалификаторами). На одиночном типе оба порядка совпадают, поэтому
# расхождение вылезало только на составном.
# Порядок самих блоков квалификаторов тоже канонический и НЕ зеркалит порядок типов:
# Number, String, Date (корпус acc+erp, контрпримеров нет — при типах
# boolean,string,dateTime,decimal квалификаторы идут Number,String,Date).
# Порядок типов при этом сохраняем как в DSL: он и есть порядок источника.
if ($typeStr.Contains(' + ')) { if ($typeStr.Contains(' + ')) {
$parts = $typeStr -split '\s*\+\s*' $parts = $typeStr -split '\s*\+\s*'
$typeLines = New-Object System.Collections.ArrayList
$qualBlocks = @{} # 'Number'|'String'|'Date' → строки блока
foreach ($part in $parts) { foreach ($part in $parts) {
# X пишет в StringBuilder, поэтому «перехват» — это запомнить длину, вызвать
# эмиттер и откатить добавленное. В py-порту X добавляет в список, и там тот
# же алгоритм выражен срезом — различие рантаймов, не логики.
$before = $script:xml.Length
Emit-TypeContent $indent $part.Trim() Emit-TypeContent $indent $part.Trim()
$chunk = $script:xml.ToString($before, $script:xml.Length - $before)
[void]$script:xml.Remove($before, $script:xml.Length - $before)
$curQual = $null
foreach ($line in ($chunk -split "`r?`n")) {
if ($line -eq '') { continue }
if ($line -match '<v8:(String|Number|Date)Qualifiers>') {
$curQual = $Matches[1]
$qualBlocks[$curQual] = New-Object System.Collections.ArrayList
}
if ($curQual) {
[void]$qualBlocks[$curQual].Add($line)
if ($line -match '</v8:(String|Number|Date)Qualifiers>') { $curQual = $null }
} else {
[void]$typeLines.Add($line)
}
}
}
foreach ($line in $typeLines) { X $line }
foreach ($q in @('Number', 'String', 'Date')) {
if ($qualBlocks.ContainsKey($q)) { foreach ($line in $qualBlocks[$q]) { X $line } }
} }
return return
} }
@@ -1256,7 +1290,10 @@ $script:standardAttributesByType = @{
"ChartOfCalculationTypes" = @("PredefinedDataName","Predefined","Ref","DeletionMark","ActionPeriodIsBasic","Description","Code") "ChartOfCalculationTypes" = @("PredefinedDataName","Predefined","Ref","DeletionMark","ActionPeriodIsBasic","Description","Code")
"BusinessProcess" = @("Ref","DeletionMark","Date","Number","Started","Completed","HeadTask") "BusinessProcess" = @("Ref","DeletionMark","Date","Number","Started","Completed","HeadTask")
"Task" = @("Ref","DeletionMark","Date","Number","Executed","Description","RoutePoint","BusinessProcess") "Task" = @("Ref","DeletionMark","Date","Number","Executed","Description","RoutePoint","BusinessProcess")
"ExchangePlan" = @("Ref","DeletionMark","Code","Description","ThisNode","SentNo","ReceivedNo") # Порядок снят с выгрузки: у плана обмена блок начинается с ThisNode, а не с Ref
# (acc+erp, 8 объектов, разброса нет). Прочие типы в этой таблице совпадают с
# платформой — расхождений порядка по ним корпусный раундтрип не показал.
"ExchangePlan" = @("ThisNode","ReceivedNo","SentNo","Ref","DeletionMark","Description","Code")
"DocumentJournal" = @("Type","Ref","Date","Posted","DeletionMark","Number") "DocumentJournal" = @("Type","Ref","Date","Posted","DeletionMark","Number")
} }
@@ -4362,16 +4399,31 @@ if ($objType -in @("InformationRegister","AccumulationRegister","AccountingRegis
$regCtx = switch ($objType) { "InformationRegister" { "register-info" } "CalculationRegister" { "register-calc" } default { "register-other" } } $regCtx = switch ($objType) { "InformationRegister" { "register-info" } "CalculationRegister" { "register-calc" } default { "register-other" } }
# Все семейства регистров: ресурсы/измерения — через богатый Emit-Attribute (общий слой object-свойств). # Все семейства регистров: ресурсы/измерения — через богатый Emit-Attribute (общий слой object-свойств).
$dimResCtx = switch ($objType) { "InformationRegister" { "register-info" } "AccumulationRegister" { "register-accum" } "CalculationRegister" { "register-calc" } "AccountingRegister" { "register-account" } default { $null } } $dimResCtx = switch ($objType) { "InformationRegister" { "register-info" } "AccumulationRegister" { "register-accum" } "CalculationRegister" { "register-calc" } "AccountingRegister" { "register-account" } default { $null } }
foreach ($r in $resources) { # Порядок видов детей — канон выгрузки, снят с корпуса (acc+erp, разброса внутри
if ($dimResCtx) { Emit-Attribute "`t`t`t" $r $dimResCtx "Resource" } # типа нет): у большинства регистров Resource, Attribute, Dimension, а у
else { Emit-Resource "`t`t`t" $r $objType } # бухгалтерского — Dimension, Resource, Attribute. Команды у платформы идут
} # последними, как и здесь.
foreach ($d in $dims) { $kindOrder = if ($objType -eq "AccountingRegister") { @('dim','res','attr') } else { @('res','attr','dim') }
if ($dimResCtx) { Emit-Attribute "`t`t`t" $d $dimResCtx "Dimension" } foreach ($kind in $kindOrder) {
else { Emit-Dimension "`t`t`t" $d $objType } switch ($kind) {
} 'res' {
foreach ($a in $regAttrs) { foreach ($r in $resources) {
Emit-Attribute "`t`t`t" $a $regCtx if ($dimResCtx) { Emit-Attribute "`t`t`t" $r $dimResCtx "Resource" }
else { Emit-Resource "`t`t`t" $r $objType }
}
}
'dim' {
foreach ($d in $dims) {
if ($dimResCtx) { Emit-Attribute "`t`t`t" $d $dimResCtx "Dimension" }
else { Emit-Dimension "`t`t`t" $d $objType }
}
}
'attr' {
foreach ($a in $regAttrs) {
Emit-Attribute "`t`t`t" $a $regCtx
}
}
}
} }
foreach ($cmd in $regCommands) { foreach ($cmd in $regCommands) {
Emit-Command "`t`t`t" $cmd.name $cmd.def Emit-Command "`t`t`t" $cmd.name $cmd.def
@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# meta-compile v1.83 — Compile 1C metadata object from JSON # meta-compile v1.84 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse import argparse
@@ -674,10 +674,46 @@ def emit_type_content(indent, type_str):
if not type_str: if not type_str:
return return
# Composite type: "Type1 + Type2 + Type3" # Composite type: "Type1 + Type2 + Type3"
# Платформа пишет сначала ВСЕ <v8:Type>/<v8:TypeSet>, и только потом блоки
# квалификаторов — а рекурсия ниже печатала бы каждую часть целиком (тип вместе со
# своими квалификаторами). На одиночном типе оба порядка совпадают, поэтому
# расхождение вылезало только на составном.
# Порядок самих блоков квалификаторов тоже канонический и НЕ зеркалит порядок типов:
# Number, String, Date (корпус acc+erp, контрпримеров нет — при типах
# boolean,string,dateTime,decimal квалификаторы идут Number,String,Date).
# Порядок типов при этом сохраняем как в DSL: он и есть порядок источника.
if ' + ' in type_str: if ' + ' in type_str:
parts = [p.strip() for p in type_str.split('+')] parts = [p.strip() for p in type_str.split('+')]
type_lines = []
qual_blocks = {}
for part in parts: for part in parts:
# X добавляет в список lines, поэтому «перехват» — это срез и откат хвоста.
# В PS-порту X пишет в StringBuilder и тот же алгоритм выражен через
# Length/Remove — различие рантаймов, не логики.
before = len(lines)
emit_type_content(indent, part) emit_type_content(indent, part)
chunk = lines[before:]
del lines[before:]
cur_qual = None
for line in chunk:
if not line:
continue
m = re.search(r'<v8:(String|Number|Date)Qualifiers>', line)
if m:
cur_qual = m.group(1)
qual_blocks[cur_qual] = []
if cur_qual:
qual_blocks[cur_qual].append(line)
if re.search(r'</v8:(String|Number|Date)Qualifiers>', line):
cur_qual = None
else:
type_lines.append(line)
for line in type_lines:
X(line)
for q in ('Number', 'String', 'Date'):
if q in qual_blocks:
for line in qual_blocks[q]:
X(line)
return return
type_str = resolve_type_str(type_str) type_str = resolve_type_str(type_str)
# Boolean # Boolean
@@ -1288,7 +1324,10 @@ standard_attributes_by_type = {
'ChartOfCalculationTypes': ['PredefinedDataName', 'Predefined', 'Ref', 'DeletionMark', 'ActionPeriodIsBasic', 'Description', 'Code'], 'ChartOfCalculationTypes': ['PredefinedDataName', 'Predefined', 'Ref', 'DeletionMark', 'ActionPeriodIsBasic', 'Description', 'Code'],
'BusinessProcess': ['Ref', 'DeletionMark', 'Date', 'Number', 'Started', 'Completed', 'HeadTask'], 'BusinessProcess': ['Ref', 'DeletionMark', 'Date', 'Number', 'Started', 'Completed', 'HeadTask'],
'Task': ['Ref', 'DeletionMark', 'Date', 'Number', 'Executed', 'Description', 'RoutePoint', 'BusinessProcess'], 'Task': ['Ref', 'DeletionMark', 'Date', 'Number', 'Executed', 'Description', 'RoutePoint', 'BusinessProcess'],
'ExchangePlan': ['Ref', 'DeletionMark', 'Code', 'Description', 'ThisNode', 'SentNo', 'ReceivedNo'], # Порядок снят с выгрузки: у плана обмена блок начинается с ThisNode, а не с Ref
# (acc+erp, 8 объектов, разброса нет). Прочие типы в этой таблице совпадают с
# платформой — расхождений порядка по ним корпусный раундтрип не показал.
'ExchangePlan': ['ThisNode', 'ReceivedNo', 'SentNo', 'Ref', 'DeletionMark', 'Description', 'Code'],
'DocumentJournal': ['Type', 'Ref', 'Date', 'Posted', 'DeletionMark', 'Number'], 'DocumentJournal': ['Type', 'Ref', 'Date', 'Posted', 'DeletionMark', 'Number'],
} }
@@ -4261,18 +4300,27 @@ if obj_type in ('InformationRegister', 'AccumulationRegister', 'AccountingRegist
# Все семейства регистров: ресурсы/измерения — через богатый emit_attribute (общий слой object-свойств). # Все семейства регистров: ресурсы/измерения — через богатый emit_attribute (общий слой object-свойств).
dim_res_ctx = {'InformationRegister': 'register-info', 'AccumulationRegister': 'register-accum', dim_res_ctx = {'InformationRegister': 'register-info', 'AccumulationRegister': 'register-accum',
'CalculationRegister': 'register-calc', 'AccountingRegister': 'register-account'}.get(obj_type) 'CalculationRegister': 'register-calc', 'AccountingRegister': 'register-account'}.get(obj_type)
for r in resources: # Порядок видов детей — канон выгрузки, снят с корпуса (acc+erp, разброса внутри
if dim_res_ctx: # типа нет): у большинства регистров Resource, Attribute, Dimension, а у
emit_attribute('\t\t\t', r, dim_res_ctx, 'Resource') # бухгалтерского — Dimension, Resource, Attribute. Команды у платформы идут
# последними, как и здесь.
kind_order = ['dim', 'res', 'attr'] if obj_type == 'AccountingRegister' else ['res', 'attr', 'dim']
for kind in kind_order:
if kind == 'res':
for r in resources:
if dim_res_ctx:
emit_attribute('\t\t\t', r, dim_res_ctx, 'Resource')
else:
emit_resource('\t\t\t', r, obj_type)
elif kind == 'dim':
for d in dims:
if dim_res_ctx:
emit_attribute('\t\t\t', d, dim_res_ctx, 'Dimension')
else:
emit_dimension('\t\t\t', d, obj_type)
else: else:
emit_resource('\t\t\t', r, obj_type) for a in reg_attrs:
for d in dims: emit_attribute('\t\t\t', a, reg_ctx)
if dim_res_ctx:
emit_attribute('\t\t\t', d, dim_res_ctx, 'Dimension')
else:
emit_dimension('\t\t\t', d, obj_type)
for a in reg_attrs:
emit_attribute('\t\t\t', a, reg_ctx)
for cmd in reg_commands: for cmd in reg_commands:
emit_command('\t\t\t', cmd['name'], cmd['def']) emit_command('\t\t\t', cmd['name'], cmd['def'])
X('\t\t</ChildObjects>') X('\t\t</ChildObjects>')
@@ -213,7 +213,50 @@
<DataHistory>Use</DataHistory> <DataHistory>Use</DataHistory>
</Properties> </Properties>
</Resource> </Resource>
<Dimension uuid="UUID-017"> <Attribute uuid="UUID-017">
<Properties>
<Name>Комментарий</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Комментарий</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>500</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Dimension uuid="UUID-018">
<Properties> <Properties>
<Name>Магазин</Name> <Name>Магазин</Name>
<Synonym> <Synonym>
@@ -259,49 +302,6 @@
<DataHistory>Use</DataHistory> <DataHistory>Use</DataHistory>
</Properties> </Properties>
</Dimension> </Dimension>
<Attribute uuid="UUID-018">
<Properties>
<Name>Комментарий</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Комментарий</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>500</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</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:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Form>ФормаЗаписи</Form> <Form>ФормаЗаписи</Form>
</ChildObjects> </ChildObjects>
</InformationRegister> </InformationRegister>
@@ -187,7 +187,46 @@
<Explanation/> <Explanation/>
</Properties> </Properties>
<ChildObjects> <ChildObjects>
<Resource uuid="UUID-016"> <Dimension uuid="UUID-016">
<Properties>
<Name>Организация</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Организация</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Организации</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Balance>false</Balance>
<AccountingFlag/>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Resource uuid="UUID-017">
<Properties> <Properties>
<Name>Сумма</Name> <Name>Сумма</Name>
<Synonym> <Synonym>
@@ -230,45 +269,6 @@
<FullTextSearch>Use</FullTextSearch> <FullTextSearch>Use</FullTextSearch>
</Properties> </Properties>
</Resource> </Resource>
<Dimension uuid="UUID-017">
<Properties>
<Name>Организация</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Организация</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Организации</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Balance>false</Balance>
<AccountingFlag/>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Attribute uuid="UUID-018"> <Attribute uuid="UUID-018">
<Properties> <Properties>
<Name>Содержание</Name> <Name>Содержание</Name>
@@ -195,83 +195,7 @@
<FullTextSearch>Use</FullTextSearch> <FullTextSearch>Use</FullTextSearch>
</Properties> </Properties>
</Resource> </Resource>
<Dimension uuid="UUID-015"> <Attribute uuid="UUID-015">
<Properties>
<Name>Номенклатура</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Номенклатура</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Номенклатура</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<UseInTotals>true</UseInTotals>
</Properties>
</Dimension>
<Dimension uuid="UUID-016">
<Properties>
<Name>Склад</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Склад</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Склады</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<UseInTotals>true</UseInTotals>
</Properties>
</Dimension>
<Attribute uuid="UUID-017">
<Properties> <Properties>
<Name>Комментарий</Name> <Name>Комментарий</Name>
<Synonym> <Synonym>
@@ -311,6 +235,82 @@
<FullTextSearch>Use</FullTextSearch> <FullTextSearch>Use</FullTextSearch>
</Properties> </Properties>
</Attribute> </Attribute>
<Dimension uuid="UUID-016">
<Properties>
<Name>Номенклатура</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Номенклатура</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Номенклатура</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<UseInTotals>true</UseInTotals>
</Properties>
</Dimension>
<Dimension uuid="UUID-017">
<Properties>
<Name>Склад</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Склад</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Склады</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<UseInTotals>true</UseInTotals>
</Properties>
</Dimension>
</ChildObjects> </ChildObjects>
</AccumulationRegister> </AccumulationRegister>
</MetaDataObject> </MetaDataObject>
@@ -296,46 +296,7 @@
<FullTextSearch>Use</FullTextSearch> <FullTextSearch>Use</FullTextSearch>
</Properties> </Properties>
</Resource> </Resource>
<Dimension uuid="UUID-018"> <Attribute uuid="UUID-018">
<Properties>
<Name>Сотрудник</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сотрудник</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Сотрудники</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<BaseDimension>false</BaseDimension>
<ScheduleLink/>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
<Attribute uuid="UUID-019">
<Properties> <Properties>
<Name>Комментарий</Name> <Name>Комментарий</Name>
<Synonym> <Synonym>
@@ -376,6 +337,45 @@
<FullTextSearch>Use</FullTextSearch> <FullTextSearch>Use</FullTextSearch>
</Properties> </Properties>
</Attribute> </Attribute>
<Dimension uuid="UUID-019">
<Properties>
<Name>Сотрудник</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сотрудник</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Сотрудники</v8:Type>
</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"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DenyIncompleteValues>false</DenyIncompleteValues>
<BaseDimension>false</BaseDimension>
<ScheduleLink/>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
</Properties>
</Dimension>
</ChildObjects> </ChildObjects>
</CalculationRegister> </CalculationRegister>
</MetaDataObject> </MetaDataObject>
@@ -41,17 +41,17 @@
<CharacteristicExtValues/> <CharacteristicExtValues/>
<Type> <Type>
<v8:Type>xs:string</v8:Type> <v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>xs:decimal</v8:Type> <v8:Type>xs:decimal</v8:Type>
<v8:Type>xs:boolean</v8:Type>
<v8:NumberQualifiers> <v8:NumberQualifiers>
<v8:Digits>15</v8:Digits> <v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits> <v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign> <v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers> </v8:NumberQualifiers>
<v8:Type>xs:boolean</v8:Type> <v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type> </Type>
<Hierarchical>false</Hierarchical> <Hierarchical>false</Hierarchical>
<FoldersOnTop>true</FoldersOnTop> <FoldersOnTop>true</FoldersOnTop>
@@ -41,22 +41,22 @@
<CharacteristicExtValues>Catalog.ЗначенияСвойств</CharacteristicExtValues> <CharacteristicExtValues>Catalog.ЗначенияСвойств</CharacteristicExtValues>
<Type> <Type>
<v8:Type>xs:string</v8:Type> <v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>xs:decimal</v8:Type> <v8:Type>xs:decimal</v8:Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.ЗначенияСвойств</v8:Type>
<v8:NumberQualifiers> <v8:NumberQualifiers>
<v8:Digits>15</v8:Digits> <v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits> <v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign> <v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers> </v8:NumberQualifiers>
<v8:Type>xs:boolean</v8:Type> <v8:StringQualifiers>
<v8:Type>xs:dateTime</v8:Type> <v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers> <v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions> <v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers> </v8:DateQualifiers>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.ЗначенияСвойств</v8:Type>
</Type> </Type>
<Hierarchical>true</Hierarchical> <Hierarchical>true</Hierarchical>
<FoldersOnTop>true</FoldersOnTop> <FoldersOnTop>true</FoldersOnTop>
@@ -15,16 +15,16 @@
<Description>Размер одежды</Description> <Description>Размер одежды</Description>
<Type> <Type>
<v8:Type>xs:string</v8:Type> <v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>xs:decimal</v8:Type> <v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers> <v8:NumberQualifiers>
<v8:Digits>3</v8:Digits> <v8:Digits>3</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits> <v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign> <v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers> </v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type> </Type>
<IsFolder>false</IsFolder> <IsFolder>false</IsFolder>
</Item> </Item>
@@ -55,6 +55,84 @@
<AuxiliaryListForm/> <AuxiliaryListForm/>
<AuxiliaryChoiceForm/> <AuxiliaryChoiceForm/>
<StandardAttributes> <StandardAttributes>
<xr:StandardAttribute name="ThisNode">
<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="ReceivedNo">
<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="SentNo">
<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:StandardAttribute name="Ref">
<xr:LinkByType/> <xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking> <xr:FillChecking>DontCheck</xr:FillChecking>
@@ -107,32 +185,6 @@
<xr:Mask/> <xr:Mask/>
<xr:ChoiceParameters/> <xr:ChoiceParameters/>
</xr:StandardAttribute> </xr:StandardAttribute>
<xr:StandardAttribute name="Code">
<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:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Description"> <xr:StandardAttribute name="Description">
<xr:LinkByType/> <xr:LinkByType/>
<xr:FillChecking>ShowError</xr:FillChecking> <xr:FillChecking>ShowError</xr:FillChecking>
@@ -164,61 +216,9 @@
<xr:Mask/> <xr:Mask/>
<xr:ChoiceParameters/> <xr:ChoiceParameters/>
</xr:StandardAttribute> </xr:StandardAttribute>
<xr:StandardAttribute name="ThisNode"> <xr:StandardAttribute name="Code">
<xr:LinkByType/> <xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking> <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:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="SentNo">
<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="ReceivedNo">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine> <xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue> <xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput> <xr:CreateOnInput>Auto</xr:CreateOnInput>
@@ -41,23 +41,23 @@
<CharacteristicExtValues/> <CharacteristicExtValues/>
<Type> <Type>
<v8:Type>xs:string</v8:Type> <v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>xs:decimal</v8:Type> <v8:Type>xs:decimal</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:boolean</v8:Type>
<v8:TypeSet>cfg:CatalogRef</v8:TypeSet>
<v8:TypeSet>cfg:DocumentRef</v8:TypeSet>
<v8:NumberQualifiers> <v8:NumberQualifiers>
<v8:Digits>10</v8:Digits> <v8:Digits>10</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits> <v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign> <v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers> </v8:NumberQualifiers>
<v8:Type>xs:dateTime</v8:Type> <v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers> <v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions> <v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers> </v8:DateQualifiers>
<v8:Type>xs:boolean</v8:Type>
<v8:TypeSet>cfg:CatalogRef</v8:TypeSet>
<v8:TypeSet>cfg:DocumentRef</v8:TypeSet>
</Type> </Type>
<Hierarchical>false</Hierarchical> <Hierarchical>false</Hierarchical>
<FoldersOnTop>true</FoldersOnTop> <FoldersOnTop>true</FoldersOnTop>
@@ -41,23 +41,23 @@
<CharacteristicExtValues/> <CharacteristicExtValues/>
<Type> <Type>
<v8:Type>xs:string</v8:Type> <v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>xs:decimal</v8:Type> <v8:Type>xs:decimal</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:boolean</v8:Type>
<v8:TypeSet>cfg:CatalogRef</v8:TypeSet>
<v8:TypeSet>cfg:DocumentRef</v8:TypeSet>
<v8:NumberQualifiers> <v8:NumberQualifiers>
<v8:Digits>10</v8:Digits> <v8:Digits>10</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits> <v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign> <v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers> </v8:NumberQualifiers>
<v8:Type>xs:dateTime</v8:Type> <v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers> <v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions> <v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers> </v8:DateQualifiers>
<v8:Type>xs:boolean</v8:Type>
<v8:TypeSet>cfg:CatalogRef</v8:TypeSet>
<v8:TypeSet>cfg:DocumentRef</v8:TypeSet>
</Type> </Type>
<Hierarchical>false</Hierarchical> <Hierarchical>false</Hierarchical>
<FoldersOnTop>true</FoldersOnTop> <FoldersOnTop>true</FoldersOnTop>