mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-06 10:10:52 +03:00
feat(form-decompile,form-compile): свойства CalendarField (кластер CalendarField)
CalendarField терял специфичные свойства при раундтрипе: декомпилятор их не читал, компилятор не эмитил. Пробел DSL (класс 3). CalendarField — длинный хвост (18 форм на 17033, 0.1%), но элемент маленький и ограниченный → решено покрыть целиком, убрав класс молчаливых потерь. Добавлены ключи (passthrough, эмитятся только при наличии): selectionMode, showCurrentDate, widthInMonths, heightInMonths, showMonthsPanel. Плюс подключён общий titleLocation (раньше у календаря не обрабатывался). Порядок тегов выверен по корпусу (18 форм): DataPath > Title > TitleLocation > [layout] > SelectionMode > ShowCurrentDate > WidthInMonths > HeightInMonths > ShowMonthsPanel > companions > Events. Декомпилятор (ps1) + компилятор (ps1+py) + spec. Новый тест-кейс calendar (два календаря: со скалярами+событием и с months-panel), сертифицирован в 1С 8.3.24. Регресс ps+py 33/33. Tooltip-свойства календаря (ToolTip/ToolTipRepresentation) намеренно оставлены будущему общему tooltip-кластеру. Раундтрип календарных форм: ПериодКомандировки → match; остаточный TitleLocation на radio/table — отдельная находка (BACKLOG). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4c2c72abce
commit
8998c0b5db
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.12 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.13 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -422,6 +422,12 @@ function Decompile-Element {
|
||||
$obj[$key] = $name
|
||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||
Add-CommonProps $obj $node $name
|
||||
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
||||
$sm = Get-Child $node 'SelectionMode'; if ($sm) { $obj['selectionMode'] = $sm }
|
||||
$scd = Get-Child $node 'ShowCurrentDate'; if ($null -ne $scd) { $obj['showCurrentDate'] = ($scd -eq 'true') }
|
||||
$wim = Get-Child $node 'WidthInMonths'; if ($null -ne $wim) { $obj['widthInMonths'] = [int]$wim }
|
||||
$him = Get-Child $node 'HeightInMonths'; if ($null -ne $him) { $obj['heightInMonths'] = [int]$him }
|
||||
$smp = Get-Child $node 'ShowMonthsPanel'; if ($null -ne $smp) { $obj['showMonthsPanel'] = ($smp -eq 'true') }
|
||||
}
|
||||
'Table' {
|
||||
$obj[$key] = $name
|
||||
|
||||
Reference in New Issue
Block a user