mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
fix(form-compile): эмитить <ChoiceButton>true</ChoiceButton> при choiceButton:true + StartChoice
Компилятор выводил тег <ChoiceButton> только для значения false; при choiceButton:true он не эмитился, и у нессылочного поля (например строкового с обработчиком НачалоВыбора) кнопка выбора не отрисовывалась — документированный паттерн (SKILL.md: choiceButton:true + on:['StartChoice']) фактически не работал. Теперь true эмитится, но узко: только когда у поля есть обработчик StartChoice — чтобы не раздувать вывод по ссылочным полям (у них choiceButton=true стоит по умолчанию, а кнопка платформенная). Порты ps1+py синхронны. Снапшот file-dialog обновлён, 31/31 кейс зелёные на обоих портах. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.22 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.23 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2134,6 +2134,7 @@ function Emit-Input {
|
||||
if ($el.multiLine -eq $true) { X "$inner<MultiLine>true</MultiLine>" }
|
||||
if ($el.passwordMode -eq $true) { X "$inner<PasswordMode>true</PasswordMode>" }
|
||||
if ($el.choiceButton -eq $false) { X "$inner<ChoiceButton>false</ChoiceButton>" }
|
||||
elseif ($el.choiceButton -eq $true -and ($el.on -contains 'StartChoice')) { X "$inner<ChoiceButton>true</ChoiceButton>" }
|
||||
if ($el.clearButton -eq $true) { X "$inner<ClearButton>true</ClearButton>" }
|
||||
if ($el.spinButton -eq $true) { X "$inner<SpinButton>true</SpinButton>" }
|
||||
if ($el.dropListButton -eq $true) { X "$inner<DropListButton>true</DropListButton>" }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.22 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.23 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -1933,6 +1933,8 @@ def emit_input(lines, el, name, eid, indent):
|
||||
lines.append(f'{inner}<PasswordMode>true</PasswordMode>')
|
||||
if el.get('choiceButton') is False:
|
||||
lines.append(f'{inner}<ChoiceButton>false</ChoiceButton>')
|
||||
elif el.get('choiceButton') is True and 'StartChoice' in (el.get('on') or []):
|
||||
lines.append(f'{inner}<ChoiceButton>true</ChoiceButton>')
|
||||
if el.get('clearButton') is True:
|
||||
lines.append(f'{inner}<ClearButton>true</ClearButton>')
|
||||
if el.get('spinButton') is True:
|
||||
|
||||
+1
@@ -38,6 +38,7 @@
|
||||
<v8:content>Файл</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ChoiceButton>true</ChoiceButton>
|
||||
<InputHint>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
|
||||
Reference in New Issue
Block a user