fix(skd-compile): multilang appearance value (Формат={ru,en} и др.)

Emit-AppearanceValue / emit_appearance_value: hashtable/PSCustomObject/dict
значение → LocalStringType независимо от ключа. Раньше для значения
{ru: "ДЛФ=D", en: "DLF=D"} compile эмитил xs:string "@{ru=ДЛФ=D; en=DLF=D}"
(строковое представление PS hashtable) — потеря структуры и неверный XML.

Wrapper {use: false, value: ...} распознаётся точечно (требуются оба ключа,
чтобы не путать с multilang dict без 'use').

Унификация field-level appearance: parse сохраняет значение как есть
(а не str(v)), emit использует Emit-AppearanceValue вместо дублированной
mini-логики. Side-effect: "true"/"false" в field appearance теперь эмитятся
как xs:boolean (раньше — xs:string). Корректнее для 1С; обновлён один
snapshot теста compile.

Новый тест appearance-multilang-value (поле + conditionalAppearance с
multilang Формат — round-trip bit-perfect).
Versions: compile v1.33→v1.34.

Закрывает п.2 из handoff («известный баг с multilang appearance values»).
This commit is contained in:
Nick Shirokov
2026-05-21 20:01:31 +03:00
parent 7f3a8861ad
commit be9ebedf14
6 changed files with 230 additions and 49 deletions
@@ -36,7 +36,7 @@
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>РастягиватьПоГоризонтали</dcscor:parameter>
<dcscor:value xsi:type="xs:string">true</dcscor:value>
<dcscor:value xsi:type="xs:boolean">true</dcscor:value>
</dcscor:item>
</appearance>
</field>