feat(form-compile): свойство collapsed для сворачиваемых групп

Добавлен ключ collapsed (для group=collapsible) → <Collapsed>true</Collapsed>:
группа создаётся уже свёрнутой. Раньше DSL умел только включать
сворачиваемое поведение, но начальное состояние задать было нельзя.

Также уточнено описание united: оно про выравнивание левого края полей
ввода (сквозное/локальное), а не про объединение рамок группы.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-03 20:07:18 +03:00
co-authored by Claude Opus 4.7
parent 3d80191ca7
commit ebf92a8780
3 changed files with 9 additions and 5 deletions
@@ -1,4 +1,4 @@
# form-compile v1.18 — Compile 1C managed form from JSON or object metadata
# form-compile v1.19 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -1911,7 +1911,7 @@ function Emit-Element {
# label/hyperlink
"hyperlink"=1
# group-specific
"showTitle"=1;"united"=1
"showTitle"=1;"united"=1;"collapsed"=1
# hierarchy
"children"=1;"columns"=1
# table-specific
@@ -2022,6 +2022,7 @@ function Emit-Group {
if ($groupVal -eq "collapsible") {
X "$inner<Group>Vertical</Group>"
X "$inner<Behavior>Collapsible</Behavior>"
if ($el.collapsed -eq $true) { X "$inner<Collapsed>true</Collapsed>" }
}
# Representation
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# form-compile v1.18 — Compile 1C managed form from JSON or object metadata
# form-compile v1.19 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import copy
@@ -1350,7 +1350,7 @@ KNOWN_KEYS = {
"multiLine", "passwordMode", "choiceButton", "clearButton",
"spinButton", "dropListButton", "markIncomplete", "skipOnInput", "inputHint",
"hyperlink",
"showTitle", "united",
"showTitle", "united", "collapsed",
"children", "columns",
"changeRowSet", "changeRowOrder", "header", "footer",
"commandBarLocation", "searchStringLocation",
@@ -1833,6 +1833,8 @@ def emit_group(lines, el, name, eid, indent):
if group_val == 'collapsible':
lines.append(f'{inner}<Group>Vertical</Group>')
lines.append(f'{inner}<Behavior>Collapsible</Behavior>')
if el.get('collapsed') is True:
lines.append(f'{inner}<Collapsed>true</Collapsed>')
# Representation
if el.get('representation'):