diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index ba21e34d..142761a4 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.ps1
+++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1
@@ -1465,6 +1465,34 @@ $script:stdAttrConditions = @{
$script:stdAttrTailPattern = @{
"AccountingRegister" = '^ExtDimension(Type)?\d+$'
}
+
+# Состав хвоста задаёт не DSL, а объект, на который регистр ссылается: пар субконто столько,
+# сколько у плана счетов MaxExtDimensionCount. Читаем его из выгрузки — как версию формата из
+# Configuration.xml, — чтобы регистр, описанный неполным DSL, совпал с тем, что материализует
+# платформа. План не найден → хвост не генерируем и говорим об этом в выводе.
+$script:stdAttrTailHint = $null
+$script:stdAttrTailDerived = @{
+ "AccountingRegister" = {
+ param($d, $objectName, $outDir)
+ $ref = "$($d.chartOfAccounts)"
+ if (-not $ref) { return @() }
+ $chartName = $ref -replace '^.*\.', '' # ссылка вида ChartOfAccounts.X (имя объекта точек не содержит)
+ $path = Join-Path (Join-Path $outDir "ChartsOfAccounts") "$chartName.xml"
+ if (-not (Test-Path -LiteralPath $path)) {
+ $script:stdAttrTailHint = "ChartOfAccounts '$chartName' not found in dump — ExtDimension pairs not generated (platform will add them on load)"
+ return @()
+ }
+ $n = 0
+ if ([System.IO.File]::ReadAllText($path) -match '(\d+)') { $n = [int]$matches[1] }
+ $out = @()
+ for ($i = 1; $i -le $n; $i++) {
+ # ExtDimensionN связан с Account через LinkByType (LinkItem = номер), ExtDimensionTypeN — нет.
+ $out += @{ name = "ExtDimension$i"; ov = @{ LinkByType = @{ dataPath = "AccountingRegister.$objectName.StandardAttribute.Account"; linkItem = $i } } }
+ $out += @{ name = "ExtDimensionType$i"; ov = @{} }
+ }
+ return $out
+ }
+}
function Emit-StandardAttributes {
param([string]$indent, [string]$objectType)
$attrs = $script:standardAttributesByType[$objectType]
@@ -1491,6 +1519,16 @@ function Emit-StandardAttributes {
if ($tailRe -and $k -match $tailRe) { $tail += $k } else { $extra += $k }
}
}
+ # Хвост, выведенный из связанного объекта: дополняет DSL, а не заменяет его — лишнее из DSL
+ # остаётся (прощаем), недостающее добавляется вместе со своими значениями по умолчанию.
+ $derivedOv = @{}
+ $gen = $script:stdAttrTailDerived[$objectType]
+ if ($gen) {
+ foreach ($e in @(& $gen $def $objName $OutputDir)) {
+ $derivedOv[$e.name] = $e.ov
+ if ($tail -notcontains $e.name) { $tail += $e.name }
+ }
+ }
$tail = @($tail | Sort-Object @{e={[int]([regex]::Match($_, '\d+').Value)}}, @{e={ if ($_ -match 'Type\d+$') { 1 } else { 0 } }})
X "$indent"
foreach ($a in ($extra + $attrs + $tail)) {
@@ -1502,6 +1540,7 @@ function Emit-StandardAttributes {
}
$ov = @{}
if ($profile.ContainsKey($a)) { foreach ($k in $profile[$a].Keys) { $ov[$k] = $profile[$a][$k] } }
+ if ($derivedOv.ContainsKey($a)) { foreach ($k in $derivedOv[$a].Keys) { $ov[$k] = $derivedOv[$a][$k] } }
if ($sa) { # DSL-override применяем всегда при наличии ключа (для не-условных типов тоже, напр. ExchangePlan)
$d = $sa.$a
if ($d) {
@@ -5261,6 +5300,9 @@ switch ($regResult) {
}
# Cross-reference hints
+if ($script:stdAttrTailHint) {
+ Write-Host "[HINT] $($script:stdAttrTailHint)"
+}
if ($objType -eq "AccountingRegister" -and -not $def.chartOfAccounts) {
Write-Host "[HINT] AccountingRegister requires ChartOfAccounts reference:"
Write-Host " /meta-edit -Operation modify-property -Value `"ChartOfAccounts=ChartOfAccounts.XXX`""
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index 8ce65dff..a4004250 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.py
+++ b/.claude/skills/meta-compile/scripts/meta-compile.py
@@ -1512,6 +1512,39 @@ std_attr_conditions = {
std_attr_tail_pattern = {
'AccountingRegister': r'^ExtDimension(Type)?\d+$',
}
+
+# Состав хвоста задаёт не DSL, а объект, на который регистр ссылается: пар субконто столько,
+# сколько у плана счетов MaxExtDimensionCount. Читаем его из выгрузки — как версию формата из
+# Configuration.xml, — чтобы регистр, описанный неполным DSL, совпал с тем, что материализует
+# платформа. План не найден → хвост не генерируем и говорим об этом в выводе.
+std_attr_tail_hint = None
+
+def _acc_register_ext_dimension_tail(d, object_name, out_dir):
+ global std_attr_tail_hint
+ ref = str(d.get('chartOfAccounts') or '')
+ if not ref:
+ return []
+ chart_name = re.sub(r'^.*\.', '', ref) # ссылка вида ChartOfAccounts.X (имя объекта точек не содержит)
+ path = os.path.join(out_dir, 'ChartsOfAccounts', chart_name + '.xml')
+ if not os.path.isfile(path):
+ std_attr_tail_hint = ("ChartOfAccounts '%s' not found in dump — ExtDimension pairs not generated "
+ "(platform will add them on load)" % chart_name)
+ return []
+ with open(path, encoding='utf-8-sig') as f:
+ m = re.search(r'(\d+)', f.read())
+ n = int(m.group(1)) if m else 0
+ out = []
+ for i in range(1, n + 1):
+ # ExtDimensionN связан с Account через LinkByType (LinkItem = номер), ExtDimensionTypeN — нет.
+ out.append(('ExtDimension%d' % i,
+ {'LinkByType': {'dataPath': 'AccountingRegister.%s.StandardAttribute.Account' % object_name,
+ 'linkItem': i}}))
+ out.append(('ExtDimensionType%d' % i, {}))
+ return out
+
+std_attr_tail_derived = {
+ 'AccountingRegister': _acc_register_ext_dimension_tail,
+}
def emit_standard_attributes(indent, object_type):
attrs = standard_attributes_by_type.get(object_type)
if not attrs:
@@ -1542,6 +1575,15 @@ def emit_standard_attributes(indent, object_type):
tail.append(k)
else:
extra.append(k)
+ # Хвост, выведенный из связанного объекта: дополняет DSL, а не заменяет его — лишнее из DSL
+ # остаётся (прощаем), недостающее добавляется вместе со своими значениями по умолчанию.
+ derived_ov = {}
+ gen = std_attr_tail_derived.get(object_type)
+ if gen:
+ for name, dov in gen(defn, obj_name, output_dir):
+ derived_ov[name] = dov
+ if name not in tail:
+ tail.append(name)
tail.sort(key=lambda k: (int(re.search(r'\d+', k).group()), 1 if re.search(r'Type\d+$', k) else 0))
X(f'{indent}')
for a in extra + list(attrs) + tail:
@@ -1552,6 +1594,7 @@ def emit_standard_attributes(indent, object_type):
if not present:
continue
ov = dict(profile.get(a, {}))
+ ov.update(derived_ov.get(a, {}))
if isinstance(sa, dict):
d = sa.get(a)
if d:
@@ -5159,6 +5202,8 @@ elif reg_result == 'no-config':
print(f' Configuration.xml: not found at {config_xml_path} (register manually)')
# Cross-reference hints
+if std_attr_tail_hint:
+ print(f'[HINT] {std_attr_tail_hint}')
if obj_type == 'AccountingRegister' and not defn.get('chartOfAccounts'):
print('[HINT] AccountingRegister requires ChartOfAccounts reference:')
print(' /meta-edit -Operation modify-property -Value "ChartOfAccounts=ChartOfAccounts.XXX"')
diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md
index bc77c342..168d9301 100644
--- a/docs/meta-dsl-spec.md
+++ b/docs/meta-dsl-spec.md
@@ -965,8 +965,10 @@ choiceParameters/indexing/fullTextSearch/dataHistory/…, см. §3–4). При
Стандартные реквизиты РБ: PeriodAdjustment, Account, RecordType, Active, LineNumber, Recorder, Period,
далее пары субконто ExtDimensionN/ExtDimensionTypeN (их число задаётся `maxExtDimensionCount` плана счетов).
Два реквизита условны: `PeriodAdjustment` — при `periodAdjustmentLength > 0`, `RecordType` — при
-`correspondence=false`. ExtDimension1..N связаны с Account через `linkByType` (в блоке `standardAttributes`,
-§7.1.1; DataPath полный).
+`correspondence=false`. ExtDimensionN связаны с Account через `linkByType` (DataPath
+`AccountingRegister.<Имя>.StandardAttribute.Account`, LinkItem = номер), ExtDimensionTypeN — нет.
+Пары берутся из плана счетов, на который ссылается регистр; описывать их в `standardAttributes`
+(§7.1.1) нужно только ради переопределений.
### 7.6b CalculationRegister (Регистр расчёта)
diff --git a/tests/skills/cases/meta-compile/accounting-register-ext-dimensions.json b/tests/skills/cases/meta-compile/accounting-register-ext-dimensions.json
new file mode 100644
index 00000000..c97101b1
--- /dev/null
+++ b/tests/skills/cases/meta-compile/accounting-register-ext-dimensions.json
@@ -0,0 +1,32 @@
+{
+ "name": "Пары субконто берутся из плана счетов, а не из DSL",
+ "preRun": [
+ {
+ "script": "meta-compile/scripts/meta-compile",
+ "input": { "type": "ChartOfCharacteristicTypes", "name": "ВидыСубконто", "valueType": "String(50)" },
+ "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
+ },
+ {
+ "script": "meta-compile/scripts/meta-compile",
+ "input": {
+ "type": "ChartOfAccounts",
+ "name": "Хозрасчетный",
+ "extDimensionTypes": "ChartOfCharacteristicTypes.ВидыСубконто",
+ "maxExtDimensionCount": 2
+ },
+ "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
+ }
+ ],
+ "input": {
+ "type": "AccountingRegister",
+ "name": "Основной",
+ "chartOfAccounts": "ChartOfAccounts.Хозрасчетный",
+ "correspondence": true,
+ "dimensions": ["Организация: CatalogRef.Организации"],
+ "resources": ["Сумма: Number(15,2)"]
+ },
+ "validatePath": "AccountingRegisters/Основной",
+ "expect": {
+ "files": ["AccountingRegisters/Основной.xml", "AccountingRegisters/Основной/Ext/RecordSetModule.bsl"]
+ }
+}
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/AccountingRegisters/Основной.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/AccountingRegisters/Основной.xml
new file mode 100644
index 00000000..a02dad96
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/AccountingRegisters/Основной.xml
@@ -0,0 +1,384 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ Основной
+
+
+ ru
+ Основной
+
+
+
+ true
+ false
+ ChartOfAccounts.Хозрасчетный
+ true
+ 0
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ AccountingRegister.Основной.StandardAttribute.Account
+ 1
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ AccountingRegister.Основной.StandardAttribute.Account
+ 2
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+ Managed
+ true
+ Use
+
+
+
+
+
+
+
+ Организация
+
+
+ ru
+ Организация
+
+
+
+
+ cfg:CatalogRef.Организации
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ false
+
+ false
+ DontIndex
+ Use
+
+
+
+
+ Сумма
+
+
+ ru
+ Сумма
+
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ false
+
+
+ Use
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/AccountingRegisters/Основной/Ext/RecordSetModule.bsl b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/AccountingRegisters/Основной/Ext/RecordSetModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfAccounts/Хозрасчетный.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfAccounts/Хозрасчетный.xml
new file mode 100644
index 00000000..4ff56ce9
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfAccounts/Хозрасчетный.xml
@@ -0,0 +1,209 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ Хозрасчетный
+
+
+ ru
+ Хозрасчетный
+
+
+
+ true
+ false
+
+ ChartOfCharacteristicTypes.ВидыСубконто
+ 2
+
+ 9
+ 25
+ WholeChartOfAccounts
+ true
+ AsCode
+
+
+
+
+
+
+ Виды субконто
+
+
+
+
+ DontCheck
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ ShowError
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ ChartOfAccounts.Хозрасчетный.StandardAttribute.Description
+ ChartOfAccounts.Хозрасчетный.StandardAttribute.Code
+
+ Begin
+ DontUse
+ Directly
+ DontUse
+ Auto
+
+
+
+
+
+
+ true
+ 9
+
+ Managed
+ Use
+ DontUse
+ false
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfAccounts/Хозрасчетный/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfAccounts/Хозрасчетный/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfCharacteristicTypes/ВидыСубконто.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfCharacteristicTypes/ВидыСубконто.xml
new file mode 100644
index 00000000..8ec9363f
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfCharacteristicTypes/ВидыСубконто.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+
+ ВидыСубконто
+
+
+ ru
+ Виды субконто
+
+
+
+ true
+ false
+
+
+ xs:string
+
+ 50
+ Variable
+
+
+ false
+ true
+ 9
+ Variable
+ 100
+ WholeCharacteristicKind
+ true
+ true
+ AsDescription
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ ChartOfCharacteristicTypes.ВидыСубконто.StandardAttribute.Description
+ ChartOfCharacteristicTypes.ВидыСубконто.StandardAttribute.Code
+
+ DontUse
+ Begin
+ Directly
+ DontUse
+ Auto
+
+
+
+
+
+
+
+
+
+
+
+
+ Managed
+ Use
+
+
+
+
+
+ DontUse
+ false
+ false
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfCharacteristicTypes/ВидыСубконто/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/ChartsOfCharacteristicTypes/ВидыСубконто/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Configuration.xml
new file mode 100644
index 00000000..8f4425c4
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Configuration.xml
@@ -0,0 +1,254 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ ВидыСубконто
+ Хозрасчетный
+ Основной
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/accounting-register-ext-dimensions/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file