mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-02 17:57:45 +03:00
feat(skd): локальный xmlns + use=false на nested sub-items outputParameters
В chart-параметрах типа ТипДиаграммы.СоединениеЗначенийПоСериям platform эмитит nested SettingsParameterValue с: - <dcscor:use>false</dcscor:use> (sub-параметр отключён) - <dcscor:value xmlns:dN="http://v8.1c.ru/8.2/data/chart" xsi:type="dN:X"> (локальный xmlns на value — префикс не объявлен в корне схемы) Раньше теряли оба: - decompile не читал sub.use и не резолвил xmlns кастомного xsi:type - compile эмитил value без xmlns и без use=false decompile: читаем dcscor:use на sub-item, резолвим prefix→URI через GetNamespaceOfPrefix; если URI не из стандартных корневых xmlns — сохраняем valueType как объект {uri, name}. compile (PS+Py): новый helper Emit-OutputParametersSubItem; если valueType — объект, эмитим xmlns:dN=<uri> + xsi:type=dN:<name>; + <dcscor:use>false</dcscor:use> если sub.use === false. Sample30 total: 809 → 794 строк diff.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# skd-decompile v0.75 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
||||
# skd-decompile v0.76 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -1846,8 +1846,29 @@ function Build-OutputParameters {
|
||||
if ($subType -eq 'LocalStringType') { $subRaw = Get-MLText $subVal }
|
||||
elseif ($subType -eq 'Font') { $subRaw = Get-FontValue $subVal }
|
||||
else { $subRaw = $subVal.InnerText }
|
||||
# Сохраняем как {value, valueType} чтобы compile воспроизвёл xsi:type
|
||||
$nestedItems[$subName] = [ordered]@{ value = $subRaw; valueType = $subFull }
|
||||
# Резолвим prefix → URI: если URI не из стандартных корневых xmlns —
|
||||
# сохраняем как объект {uri, name} чтобы compile эмитил xmlns локально.
|
||||
$subTypeField = $subFull
|
||||
if ($subFull -and $subFull -match '^([^:]+):(.+)$') {
|
||||
$pfx = $matches[1]; $localName = $matches[2]
|
||||
$uri = $subVal.GetNamespaceOfPrefix($pfx)
|
||||
if ($uri -and $uri -notin @(
|
||||
'http://www.w3.org/2001/XMLSchema',
|
||||
'http://www.w3.org/2001/XMLSchema-instance',
|
||||
'http://v8.1c.ru/8.1/data-composition-system/schema',
|
||||
'http://v8.1c.ru/8.1/data-composition-system/settings',
|
||||
'http://v8.1c.ru/8.1/data-composition-system/core',
|
||||
'http://v8.1c.ru/8.1/data-composition-system/common',
|
||||
'http://v8.1c.ru/8.1/data/core',
|
||||
'http://v8.1c.ru/8.1/data/ui'
|
||||
)) {
|
||||
$subTypeField = [ordered]@{ uri = $uri; name = $localName }
|
||||
}
|
||||
}
|
||||
$entry = [ordered]@{ value = $subRaw; valueType = $subTypeField }
|
||||
$subUse = Get-Text $sub "dcscor:use"
|
||||
if ($subUse -eq 'false') { $entry['use'] = $false }
|
||||
$nestedItems[$subName] = $entry
|
||||
}
|
||||
# Extras (use=false / viewMode / userSettingID / userSettingPresentation / nested items) → wrapper.
|
||||
$useV = Get-Text $it "dcscor:use"
|
||||
|
||||
Reference in New Issue
Block a user