feat(skd): itemsViewMode на table axis (column/row/point/series)

Build-TableAxisBlock не читал itemsViewMode на самой оси (только на
StructureItemGroup). Теперь сохраняется и эмитится — bit-perfect для
шаблонов отчётов с явно заданным itemsViewMode=Normal/Inaccessible
на колонках/строках таблицы.

sample30: −30 строк (2012 → 1982).
This commit is contained in:
Nick Shirokov
2026-05-23 19:04:22 +03:00
parent 48e2b6bd44
commit 730decf9ce
3 changed files with 11 additions and 3 deletions
@@ -1,4 +1,4 @@
# skd-compile v1.73 — Compile 1C DCS from JSON
# skd-compile v1.74 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -2775,6 +2775,9 @@ function Emit-TableAxisBlock {
if ($block.userSettingPresentation) {
Emit-MLText -tag "dcsset:userSettingPresentation" -text $block.userSettingPresentation -indent $indent
}
if ($block.itemsViewMode) {
X "$indent<dcsset:itemsViewMode>$(Esc-Xml "$($block.itemsViewMode)")</dcsset:itemsViewMode>"
}
}
function Emit-StructureItem {
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# skd-compile v1.73 — Compile 1C DCS from JSON
# skd-compile v1.74 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -2244,6 +2244,8 @@ def emit_table_axis_block(lines, block, indent, emit_name=True):
lines.append(f'{indent}<dcsset:userSettingID>{esc_xml(uid)}</dcsset:userSettingID>')
if block.get('userSettingPresentation'):
emit_mltext(lines, indent, 'dcsset:userSettingPresentation', block['userSettingPresentation'])
if block.get('itemsViewMode'):
lines.append(f'{indent}<dcsset:itemsViewMode>{esc_xml(str(block["itemsViewMode"]))}</dcsset:itemsViewMode>')
def emit_structure_item(lines, item, indent):
@@ -1,4 +1,4 @@
# skd-decompile v0.56 — Decompile 1C DCS Template.xml to JSON DSL (draft)
# skd-decompile v0.57 — Decompile 1C DCS Template.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -1894,6 +1894,9 @@ function Build-TableAxisBlock {
$ausPres = Get-MLText $ausPresNode
if ($ausPres) { $entry['userSettingPresentation'] = $ausPres }
}
# itemsViewMode на axis (column/row/point/series)
$aivmNode = $node.SelectSingleNode("dcsset:itemsViewMode", $ns)
if ($aivmNode) { $entry['itemsViewMode'] = $aivmNode.InnerText }
return $entry
}