mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-14 22:05:22 +03:00
feat(form-decompile,form-compile): системные перечисления в choiceList + footerDataPath/footerText/editMode на labelField/radio + AdditionalColumns empty self-closing
Четыре находки из rt-iter2 (формы Хозрасчётный/ФормаСчёта, СпецификацииНоменклатуры): 1. **Системные перечисления в choiceList** (ent: namespace, напр. ent:AccountType=ВидСчёта): значение несёт xsi:type="ent:AccountType", компилятор эмитил xs:string (терял тип). Per-item ключ `valueType` (как у фильтра): декомпилятор сохраняет не-примитивный не-DesignTimeRef xsi:type, компилятор эмитит его вместо авто-детекта. 2. **footerDataPath/footerText на LabelField** — были только у InputField, на поле-надписи (колонка таблицы) терялись. Добавлены (decompile + compile, позиция по корпусу). 3. **editMode у RadioButtonField** — не ловился/не эмитился (форма ВидСчёта). Добавлен. 4. **Пустая AdditionalColumns** (table-ref без колонок) — компилятор эмитил пустую пару <AdditionalColumns table="X"></...>, платформа — self-closing. Фикс: self-closing при пустых columns. Зеркало py. Обе формы → match. Кейсы radio-tumbler-strings (+ent:AccountType +editMode), picture-field (labelField-колонка +footerDataPath/footerText), additional-columns (+пустая группа) сертифицированы в 1С. Регресс 43/43 (ps1+py). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
bdd38691aa
commit
330447c95f
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.97 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.98 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -1416,6 +1416,11 @@ function Decompile-ChoiceList {
|
||||
if ($valNode) {
|
||||
$xsiType = $valNode.GetAttribute("type", $NS_XSI)
|
||||
$ci['value'] = Convert-TypedValue $valNode.InnerText $xsiType
|
||||
# Системное перечисление (ent:*) / иной не-примитивный, не-DesignTimeRef тип → сохраняем
|
||||
# valueType (Normalize-ChoiceValue в компиляторе вывела бы xs:string и потеряла тип).
|
||||
if ($xsiType -and $xsiType -notmatch '^xs:(string|decimal|boolean|dateTime)$' -and $xsiType -ne 'xr:DesignTimeRef') {
|
||||
$ci['valueType'] = $xsiType
|
||||
}
|
||||
}
|
||||
# Presentation: непустой → текст/мультиязык; пустой <Presentation/> → "" — суппресс-маркер,
|
||||
# подавляет авто-вывод компилятора (иначе компилятор додумает presentation из значения).
|
||||
@@ -1666,6 +1671,7 @@ function Decompile-Element {
|
||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||
Add-CommonProps $obj $node $name
|
||||
Add-TitleLocation $obj $node 'None'
|
||||
$em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em }
|
||||
$rbt = Get-Child $node 'RadioButtonType'; if ($rbt) { $obj['radioButtonType'] = $rbt }
|
||||
$cc = Get-Child $node 'ColumnsCount'; if ($cc) { $obj['columnsCount'] = [int]$cc }
|
||||
$woe = $node.SelectSingleNode("lf:WarningOnEdit", $ns); if ($woe) { $t = Get-LangText $woe; if ($null -ne $t) { $obj['warningOnEdit'] = $t } }
|
||||
@@ -1690,6 +1696,9 @@ function Decompile-Element {
|
||||
# PasswordMode на LabelField — платформа эмитит явный false (редко); захват факт. значения
|
||||
$pm = Get-Child $node 'PasswordMode'; if ($null -ne $pm) { $obj['passwordMode'] = ($pm -eq 'true') }
|
||||
$woe = $node.SelectSingleNode("lf:WarningOnEdit", $ns); if ($woe) { $t = Get-LangText $woe; if ($null -ne $t) { $obj['warningOnEdit'] = $t } }
|
||||
# FooterDataPath / FooterText — общие cell-свойства колонки (как у input), не только input
|
||||
$fdp = Get-Child $node 'FooterDataPath'; if ($fdp) { $obj['footerDataPath'] = $fdp }
|
||||
$ftxt = $node.SelectSingleNode("lf:FooterText", $ns); if ($ftxt) { $t = Get-LangText $ftxt; if ($null -ne $t) { $obj['footerText'] = $t } }
|
||||
Add-FormatProps $obj $node
|
||||
}
|
||||
'PictureDecoration' {
|
||||
|
||||
Reference in New Issue
Block a user