feat(form-decompile,form-compile): формат и формат редактирования (Format/EditFormat)

Ключи format/editFormat на InputField/LabelField/CheckBoxField (1408/958
файлов в корпусе). LocalStringType как inputHint/title: строка или {ru,en} —
переиспользование Emit-MLText (компилятор) и Get-LangText (декомпилятор).
Декомпилятор: хелпер Add-FormatProps в 3 ветках. Зеркало py.

Round-trip чистый (0 остатка на 30 формах с Format/EditFormat). Кейс
input-fields: format/editFormat строкой на input/check + мультиязык-объект
на labelField; снэпшот сертифицирован загрузкой в 1С.

Заодно добавлены забытые ключи (format/editFormat/choiceParameters/
choiceParameterLinks/typeLink) в allowlist knownKeys (ps1+py), чтобы не
сыпать ложный warning «unknown key».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-07 22:53:29 +03:00
co-authored by Claude Opus 4.8
parent d0bb26b068
commit 929d1676bb
6 changed files with 78 additions and 6 deletions
@@ -27,6 +27,18 @@
<EditMode>EnterOnInput</EditMode>
<HorizontalStretch>false</HorizontalStretch>
<VerticalStretch>false</VerticalStretch>
<Format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ЧДЦ=2</v8:content>
</v8:item>
</Format>
<EditFormat>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ЧДЦ=2; ЧН=</v8:content>
</v8:item>
</EditFormat>
<ContextMenu name="ОбычноеПолеКонтекстноеМеню" id="2"/>
<ExtendedTooltip name="ОбычноеПолеРасширеннаяПодсказка" id="3"/>
</InputField>
@@ -34,6 +46,16 @@
<DataPath>ОбычноеПоле</DataPath>
<TitleLocation>Left</TitleLocation>
<Hiperlink>true</Hiperlink>
<Format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ДЛФ=D</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>DLF=D</v8:content>
</v8:item>
</Format>
<ContextMenu name="СсылкаКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="СсылкаРасширеннаяПодсказка" id="6"/>
</LabelField>
@@ -323,6 +345,12 @@
</Title>
<CheckBoxType>Switcher</CheckBoxType>
<TitleLocation>Right</TitleLocation>
<Format>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>БЛ=Нет; БИ=Да</v8:content>
</v8:item>
</Format>
<ContextMenu name="ФлагТумблерКонтекстноеМеню" id="38"/>
<ExtendedTooltip name="ФлагТумблерРасширеннаяПодсказка" id="39"/>
</CheckBoxField>