feat(skd-compile): additionalProperties в settings

<dcsset:additionalProperties> — список <v8:Property name="X">
<v8:Value xsi:type="xs:string">Y</v8:Value></v8:Property>. Используется
платформой для служебных свойств варианта (ВариантНаименование,
КлючВарианта, Адрес — URL tempstorage).

DSL: settings.additionalProperties = { "имя": "значение", ... }
Эмит — после itemsViewMode, перед закрытием settings.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-22 20:22:22 +03:00
parent a07a105024
commit f19032594c
2 changed files with 22 additions and 2 deletions
@@ -1,4 +1,4 @@
# skd-compile v1.53 — Compile 1C DCS from JSON
# skd-compile v1.54 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -2850,6 +2850,17 @@ function Emit-SettingsVariants {
X "`t`t`t<dcsset:itemsViewMode>$(Esc-Xml "$($s.itemsViewMode)")</dcsset:itemsViewMode>"
}
# <dcsset:additionalProperties> — key/value свойства варианта
if ($s.additionalProperties) {
X "`t`t`t<dcsset:additionalProperties>"
foreach ($prop in $s.additionalProperties.PSObject.Properties) {
X "`t`t`t`t<v8:Property name=`"$(Esc-Xml $prop.Name)`">"
X "`t`t`t`t`t<v8:Value xsi:type=`"xs:string`">$(Esc-Xml "$($prop.Value)")</v8:Value>"
X "`t`t`t`t</v8:Property>"
}
X "`t`t`t</dcsset:additionalProperties>"
}
X "`t`t</dcsset:settings>"
X "`t</settingsVariant>"
}
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# skd-compile v1.53 — Compile 1C DCS from JSON
# skd-compile v1.54 — Compile 1C DCS from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -2353,6 +2353,15 @@ def emit_settings_variants(lines, defn):
if s.get('itemsViewMode'):
lines.append(f'\t\t\t<dcsset:itemsViewMode>{esc_xml(str(s["itemsViewMode"]))}</dcsset:itemsViewMode>')
# <dcsset:additionalProperties> — key/value свойства варианта
if s.get('additionalProperties'):
lines.append('\t\t\t<dcsset:additionalProperties>')
for k, v in s['additionalProperties'].items():
lines.append(f'\t\t\t\t<v8:Property name="{esc_xml(str(k))}">')
lines.append(f'\t\t\t\t\t<v8:Value xsi:type="xs:string">{esc_xml(str(v))}</v8:Value>')
lines.append('\t\t\t\t</v8:Property>')
lines.append('\t\t\t</dcsset:additionalProperties>')
lines.append('\t\t</dcsset:settings>')
lines.append('\t</settingsVariant>')