mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-15 02:14:57 +03:00
feat(form-decompile,form-compile): листовые свойства полей + фикс Hiperlink (кластер L)
БАГ: у LabelField платформенный тег <Hiperlink> (опечатка 1С), компилятор эмитил <Hyperlink> — гиперссылка не работала и не роундтрипилась. Проверено по корпусу: LabelField→Hiperlink во всех версиях формата (2.17 и 2.20). - compiler PS1+PY: LabelField <Hiperlink>; EditMode (input/check/labelField); CheckBoxType (check, умный дефолт Auto + suppress как radioButtonType). - decompiler: editMode, checkBoxType (Auto→опустить), markIncomplete (раньше не ловился), labelField читает <Hiperlink>. - docs/form-dsl-spec: editMode, checkBoxType, примечание про Hiperlink. - tests: input-fields расширен (editMode/checkBoxType/labelField+hyperlink), сертифицирован. Регресс 32/32 PS1+PY, churn по флажкам обновлён и сертифицирован. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# form-compile v1.29 — Compile 1C managed form from JSON or object metadata
|
# form-compile v1.30 — Compile 1C managed form from JSON or object metadata
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[string]$JsonPath,
|
[string]$JsonPath,
|
||||||
@@ -1914,7 +1914,7 @@ function Emit-Element {
|
|||||||
# columnGroup-specific
|
# columnGroup-specific
|
||||||
"showInHeader"=1
|
"showInHeader"=1
|
||||||
# radio-specific
|
# radio-specific
|
||||||
"radioButtonType"=1;"choiceList"=1;"columnsCount"=1
|
"radioButtonType"=1;"choiceList"=1;"columnsCount"=1;"checkBoxType"=1;"editMode"=1
|
||||||
# naming & binding
|
# naming & binding
|
||||||
"name"=1;"path"=1;"title"=1
|
"name"=1;"path"=1;"title"=1
|
||||||
# visibility & state
|
# visibility & state
|
||||||
@@ -2210,6 +2210,7 @@ function Emit-Input {
|
|||||||
if ($el.spinButton -eq $true) { X "$inner<SpinButton>true</SpinButton>" }
|
if ($el.spinButton -eq $true) { X "$inner<SpinButton>true</SpinButton>" }
|
||||||
if ($el.dropListButton -eq $true) { X "$inner<DropListButton>true</DropListButton>" }
|
if ($el.dropListButton -eq $true) { X "$inner<DropListButton>true</DropListButton>" }
|
||||||
if ($el.markIncomplete -eq $true) { X "$inner<AutoMarkIncomplete>true</AutoMarkIncomplete>" }
|
if ($el.markIncomplete -eq $true) { X "$inner<AutoMarkIncomplete>true</AutoMarkIncomplete>" }
|
||||||
|
if ($el.editMode) { X "$inner<EditMode>$($el.editMode)</EditMode>" }
|
||||||
if ($el.textEdit -eq $false) { X "$inner<TextEdit>false</TextEdit>" }
|
if ($el.textEdit -eq $false) { X "$inner<TextEdit>false</TextEdit>" }
|
||||||
Emit-Layout -el $el -indent $inner -multiLineDefault ([bool]($el.multiLine -eq $true))
|
Emit-Layout -el $el -indent $inner -multiLineDefault ([bool]($el.multiLine -eq $true))
|
||||||
|
|
||||||
@@ -2237,6 +2238,15 @@ function Emit-Check {
|
|||||||
Emit-Title -el $el -name $name -indent $inner -auto:(-not $el.path)
|
Emit-Title -el $el -name $name -indent $inner -auto:(-not $el.path)
|
||||||
Emit-CommonFlags -el $el -indent $inner
|
Emit-CommonFlags -el $el -indent $inner
|
||||||
|
|
||||||
|
if ($el.editMode) { X "$inner<EditMode>$($el.editMode)</EditMode>" }
|
||||||
|
# CheckBoxType: нет ключа → умный дефолт Auto; "" → подавить; значение → маппинг
|
||||||
|
if ($null -ne $el.PSObject.Properties['checkBoxType']) {
|
||||||
|
if ($el.checkBoxType) {
|
||||||
|
$cbt = switch ("$($el.checkBoxType)".ToLower()) { 'auto' {'Auto'} 'checkbox' {'CheckBox'} 'switcher' {'Switcher'} 'tumbler' {'Tumbler'} default {"$($el.checkBoxType)"} }
|
||||||
|
X "$inner<CheckBoxType>$cbt</CheckBoxType>"
|
||||||
|
}
|
||||||
|
} else { X "$inner<CheckBoxType>Auto</CheckBoxType>" }
|
||||||
|
|
||||||
Emit-TitleLocation -el $el -indent $inner -smartDefault "Right"
|
Emit-TitleLocation -el $el -indent $inner -smartDefault "Right"
|
||||||
|
|
||||||
Emit-Layout -el $el -indent $inner
|
Emit-Layout -el $el -indent $inner
|
||||||
@@ -2502,7 +2512,9 @@ function Emit-LabelField {
|
|||||||
Emit-Title -el $el -name $name -indent $inner -auto:(-not $el.path)
|
Emit-Title -el $el -name $name -indent $inner -auto:(-not $el.path)
|
||||||
Emit-CommonFlags -el $el -indent $inner
|
Emit-CommonFlags -el $el -indent $inner
|
||||||
|
|
||||||
if ($el.hyperlink -eq $true) { X "$inner<Hyperlink>true</Hyperlink>" }
|
if ($el.editMode) { X "$inner<EditMode>$($el.editMode)</EditMode>" }
|
||||||
|
# ВНИМАНИЕ: у LabelField платформенный тег именно <Hiperlink> (опечатка 1С), не <Hyperlink>.
|
||||||
|
if ($el.hyperlink -eq $true) { X "$inner<Hiperlink>true</Hiperlink>" }
|
||||||
Emit-Layout -el $el -indent $inner
|
Emit-Layout -el $el -indent $inner
|
||||||
|
|
||||||
# Companions
|
# Companions
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# form-compile v1.29 — Compile 1C managed form from JSON or object metadata
|
# form-compile v1.30 — Compile 1C managed form from JSON or object metadata
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
import argparse
|
import argparse
|
||||||
import copy
|
import copy
|
||||||
@@ -1341,7 +1341,7 @@ KNOWN_KEYS = {
|
|||||||
"group", "columnGroup", "buttonGroup", "input", "check", "radio", "label", "labelField", "table", "pages", "page",
|
"group", "columnGroup", "buttonGroup", "input", "check", "radio", "label", "labelField", "table", "pages", "page",
|
||||||
"button", "picture", "picField", "calendar", "cmdBar", "popup",
|
"button", "picture", "picField", "calendar", "cmdBar", "popup",
|
||||||
"showInHeader",
|
"showInHeader",
|
||||||
"radioButtonType", "choiceList", "columnsCount",
|
"radioButtonType", "choiceList", "columnsCount", "checkBoxType", "editMode",
|
||||||
"name", "path", "title",
|
"name", "path", "title",
|
||||||
"visible", "hidden", "enabled", "disabled", "readOnly", "userVisible",
|
"visible", "hidden", "enabled", "disabled", "readOnly", "userVisible",
|
||||||
"on", "handlers",
|
"on", "handlers",
|
||||||
@@ -2013,6 +2013,8 @@ def emit_input(lines, el, name, eid, indent):
|
|||||||
lines.append(f'{inner}<DropListButton>true</DropListButton>')
|
lines.append(f'{inner}<DropListButton>true</DropListButton>')
|
||||||
if el.get('markIncomplete') is True:
|
if el.get('markIncomplete') is True:
|
||||||
lines.append(f'{inner}<AutoMarkIncomplete>true</AutoMarkIncomplete>')
|
lines.append(f'{inner}<AutoMarkIncomplete>true</AutoMarkIncomplete>')
|
||||||
|
if el.get('editMode'):
|
||||||
|
lines.append(f'{inner}<EditMode>{el["editMode"]}</EditMode>')
|
||||||
if el.get('textEdit') is False:
|
if el.get('textEdit') is False:
|
||||||
lines.append(f'{inner}<TextEdit>false</TextEdit>')
|
lines.append(f'{inner}<TextEdit>false</TextEdit>')
|
||||||
emit_layout(lines, el, inner, multi_line_default=(el.get('multiLine') is True))
|
emit_layout(lines, el, inner, multi_line_default=(el.get('multiLine') is True))
|
||||||
@@ -2039,6 +2041,16 @@ def emit_check(lines, el, name, eid, indent):
|
|||||||
emit_title(lines, el, name, inner, auto=not el.get('path'))
|
emit_title(lines, el, name, inner, auto=not el.get('path'))
|
||||||
emit_common_flags(lines, el, inner)
|
emit_common_flags(lines, el, inner)
|
||||||
|
|
||||||
|
if el.get('editMode'):
|
||||||
|
lines.append(f'{inner}<EditMode>{el["editMode"]}</EditMode>')
|
||||||
|
# CheckBoxType: нет ключа → умный дефолт Auto; "" → подавить; значение → маппинг
|
||||||
|
_cbt_map = {'auto': 'Auto', 'checkbox': 'CheckBox', 'switcher': 'Switcher', 'tumbler': 'Tumbler'}
|
||||||
|
if 'checkBoxType' in el:
|
||||||
|
if el.get('checkBoxType'):
|
||||||
|
lines.append(f'{inner}<CheckBoxType>{_cbt_map.get(str(el["checkBoxType"]).lower(), el["checkBoxType"])}</CheckBoxType>')
|
||||||
|
else:
|
||||||
|
lines.append(f'{inner}<CheckBoxType>Auto</CheckBoxType>')
|
||||||
|
|
||||||
emit_title_location(lines, el, inner, 'Right')
|
emit_title_location(lines, el, inner, 'Right')
|
||||||
|
|
||||||
emit_layout(lines, el, inner)
|
emit_layout(lines, el, inner)
|
||||||
@@ -2150,8 +2162,11 @@ def emit_label_field(lines, el, name, eid, indent):
|
|||||||
emit_title(lines, el, name, inner, auto=not el.get('path'))
|
emit_title(lines, el, name, inner, auto=not el.get('path'))
|
||||||
emit_common_flags(lines, el, inner)
|
emit_common_flags(lines, el, inner)
|
||||||
|
|
||||||
|
if el.get('editMode'):
|
||||||
|
lines.append(f'{inner}<EditMode>{el["editMode"]}</EditMode>')
|
||||||
|
# ВНИМАНИЕ: у LabelField платформенный тег <Hiperlink> (опечатка 1С), не <Hyperlink>.
|
||||||
if el.get('hyperlink') is True:
|
if el.get('hyperlink') is True:
|
||||||
lines.append(f'{inner}<Hyperlink>true</Hyperlink>')
|
lines.append(f'{inner}<Hiperlink>true</Hiperlink>')
|
||||||
emit_layout(lines, el, inner)
|
emit_layout(lines, el, inner)
|
||||||
|
|
||||||
# Companions
|
# Companions
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# form-decompile v0.7 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
# form-decompile v0.8 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||||
param(
|
param(
|
||||||
@@ -374,6 +374,8 @@ function Decompile-Element {
|
|||||||
Add-CommonProps $obj $node $name
|
Add-CommonProps $obj $node $name
|
||||||
if ((Get-Child $node 'MultiLine') -eq 'true') { $obj['multiLine'] = $true }
|
if ((Get-Child $node 'MultiLine') -eq 'true') { $obj['multiLine'] = $true }
|
||||||
if ((Get-Child $node 'PasswordMode') -eq 'true') { $obj['passwordMode'] = $true }
|
if ((Get-Child $node 'PasswordMode') -eq 'true') { $obj['passwordMode'] = $true }
|
||||||
|
if ((Get-Child $node 'AutoMarkIncomplete') -eq 'true') { $obj['markIncomplete'] = $true }
|
||||||
|
$em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em }
|
||||||
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
$tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() }
|
||||||
$ih = $node.SelectSingleNode("lf:InputHint", $ns); if ($ih) { $t = Get-LangText $ih; if ($t) { $obj['inputHint'] = $t } }
|
$ih = $node.SelectSingleNode("lf:InputHint", $ns); if ($ih) { $t = Get-LangText $ih; if ($t) { $obj['inputHint'] = $t } }
|
||||||
foreach ($p in @('ChoiceButton','ClearButton','SpinButton','DropListButton')) {
|
foreach ($p in @('ChoiceButton','ClearButton','SpinButton','DropListButton')) {
|
||||||
@@ -384,6 +386,11 @@ function Decompile-Element {
|
|||||||
$obj[$key] = $name
|
$obj[$key] = $name
|
||||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||||
Add-CommonProps $obj $node $name
|
Add-CommonProps $obj $node $name
|
||||||
|
$em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em }
|
||||||
|
# CheckBoxType: Auto = умный дефолт → опустить; нет тега → ""; иначе значение
|
||||||
|
$cbt = Get-Child $node 'CheckBoxType'
|
||||||
|
if ($null -eq $cbt) { $obj['checkBoxType'] = '' }
|
||||||
|
elseif ($cbt -ne 'Auto') { $obj['checkBoxType'] = $cbt.Substring(0,1).ToLower() + $cbt.Substring(1) }
|
||||||
Add-TitleLocation $obj $node 'Right'
|
Add-TitleLocation $obj $node 'Right'
|
||||||
}
|
}
|
||||||
'RadioButtonField' {
|
'RadioButtonField' {
|
||||||
@@ -419,7 +426,9 @@ function Decompile-Element {
|
|||||||
$obj[$key] = $name
|
$obj[$key] = $name
|
||||||
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
$dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp }
|
||||||
Add-CommonProps $obj $node $name
|
Add-CommonProps $obj $node $name
|
||||||
if ((Get-Child $node 'Hyperlink') -eq 'true') { $obj['hyperlink'] = $true }
|
$em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em }
|
||||||
|
# LabelField: тег <Hiperlink> (опечатка платформы), не <Hyperlink>
|
||||||
|
if ((Get-Child $node 'Hiperlink') -eq 'true') { $obj['hyperlink'] = $true }
|
||||||
}
|
}
|
||||||
'PictureDecoration' {
|
'PictureDecoration' {
|
||||||
$obj[$key] = $name
|
$obj[$key] = $name
|
||||||
|
|||||||
@@ -198,6 +198,7 @@
|
|||||||
| `spinButton` | bool | Показывать кнопку прокрутки |
|
| `spinButton` | bool | Показывать кнопку прокрутки |
|
||||||
| `dropListButton` | bool | Показывать кнопку раскрытия |
|
| `dropListButton` | bool | Показывать кнопку раскрытия |
|
||||||
| `markIncomplete` | bool | Автопометка незаполненных |
|
| `markIncomplete` | bool | Автопометка незаполненных |
|
||||||
|
| `editMode` | string | Режим редактирования: `EnterOnInput`, `Directly` |
|
||||||
| `skipOnInput` | bool | Пропускать при вводе |
|
| `skipOnInput` | bool | Пропускать при вводе |
|
||||||
| `inputHint` | string | Подсказка ввода (placeholder) |
|
| `inputHint` | string | Подсказка ввода (placeholder) |
|
||||||
| `width` | int | Ширина |
|
| `width` | int | Ширина |
|
||||||
@@ -216,6 +217,8 @@
|
|||||||
| Свойство | Тип | Описание |
|
| Свойство | Тип | Описание |
|
||||||
|----------|-----|----------|
|
|----------|-----|----------|
|
||||||
| `path` | string | DataPath |
|
| `path` | string | DataPath |
|
||||||
|
| `checkBoxType` | string | Вид флажка. **Нет ключа** → умный дефолт `Auto`. **`""`** → дефолт платформы (тег не пишется). Значения: `auto`, `checkBox`, `switcher`, `tumbler` |
|
||||||
|
| `editMode` | string | Режим редактирования: `EnterOnInput`, `Directly` |
|
||||||
| `titleLocation` | string | Расположение заголовка. **Нет ключа** → умный дефолт `Right` (флажки почти всегда справа). **`""`** → дефолт платформы (`Left`, тег не пишется). Значение (`none`/`left`/`top`/…) → как указано |
|
| `titleLocation` | string | Расположение заголовка. **Нет ключа** → умный дефолт `Right` (флажки почти всегда справа). **`""`** → дефолт платформы (`Left`, тег не пишется). Значение (`none`/`left`/`top`/…) → как указано |
|
||||||
|
|
||||||
#### radio — RadioButtonField
|
#### radio — RadioButtonField
|
||||||
@@ -271,7 +274,8 @@
|
|||||||
| Свойство | Тип | Описание |
|
| Свойство | Тип | Описание |
|
||||||
|----------|-----|----------|
|
|----------|-----|----------|
|
||||||
| `path` | string | DataPath |
|
| `path` | string | DataPath |
|
||||||
| `hyperlink` | bool | Режим гиперссылки |
|
| `hyperlink` | bool | Режим гиперссылки (у LabelField платформенный тег `<Hiperlink>` — опечатка 1С, компилятор учитывает) |
|
||||||
|
| `editMode` | string | Режим редактирования: `EnterOnInput`, `Directly` |
|
||||||
|
|
||||||
#### table — Table
|
#### table — Table
|
||||||
|
|
||||||
|
|||||||
@@ -16,14 +16,16 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"title": "Поля ввода",
|
"title": "Поля ввода",
|
||||||
"elements": [
|
"elements": [
|
||||||
{ "input": "ОбычноеПоле", "path": "ОбычноеПоле", "title": "Обычное поле" },
|
{ "input": "ОбычноеПоле", "path": "ОбычноеПоле", "title": "Обычное поле", "editMode": "EnterOnInput" },
|
||||||
|
{ "labelField": "Ссылка", "path": "ОбычноеПоле", "hyperlink": true },
|
||||||
{ "input": "МногострочноеПоле", "path": "МногострочноеПоле", "multiLine": true, "height": 5, "title": "Комментарий" },
|
{ "input": "МногострочноеПоле", "path": "МногострочноеПоле", "multiLine": true, "height": 5, "title": "Комментарий" },
|
||||||
{ "input": "ПолеПароля", "path": "ПолеПароля", "passwordMode": true, "title": "Пароль" },
|
{ "input": "ПолеПароля", "path": "ПолеПароля", "passwordMode": true, "title": "Пароль" },
|
||||||
{ "input": "ПолеСКнопками", "path": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "title": "Выбор" },
|
{ "input": "ПолеСКнопками", "path": "ПолеСКнопками", "choiceButton": true, "clearButton": true, "title": "Выбор" },
|
||||||
{ "input": "ПолеПодсказка", "path": "ПолеПодсказка", "inputHint": "Введите значение...", "title": "Подсказка" },
|
{ "input": "ПолеПодсказка", "path": "ПолеПодсказка", "inputHint": "Введите значение...", "title": "Подсказка" },
|
||||||
{ "check": "Флаг", "path": "Флаг", "title": "Включено" },
|
{ "check": "Флаг", "path": "Флаг", "title": "Включено" },
|
||||||
{ "check": "ФлагПлатформенный", "path": "ФлагПлатформенный", "title": "Слева", "titleLocation": "" },
|
{ "check": "ФлагПлатформенный", "path": "ФлагПлатформенный", "title": "Слева", "titleLocation": "" },
|
||||||
{ "check": "ФлагЯвный", "path": "ФлагЯвный", "title": "Сверху", "titleLocation": "top" }
|
{ "check": "ФлагЯвный", "path": "ФлагЯвный", "title": "Сверху", "titleLocation": "top" },
|
||||||
|
{ "check": "ФлагТумблер", "path": "ФлагТумблер", "title": "Тумблер", "checkBoxType": "switcher" }
|
||||||
],
|
],
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{ "name": "Объект", "type": "DataProcessorObject.ПоляВвода", "main": true },
|
{ "name": "Объект", "type": "DataProcessorObject.ПоляВвода", "main": true },
|
||||||
@@ -34,7 +36,8 @@
|
|||||||
{ "name": "ПолеПодсказка", "type": "string" },
|
{ "name": "ПолеПодсказка", "type": "string" },
|
||||||
{ "name": "Флаг", "type": "boolean" },
|
{ "name": "Флаг", "type": "boolean" },
|
||||||
{ "name": "ФлагПлатформенный", "type": "boolean" },
|
{ "name": "ФлагПлатформенный", "type": "boolean" },
|
||||||
{ "name": "ФлагЯвный", "type": "boolean" }
|
{ "name": "ФлагЯвный", "type": "boolean" },
|
||||||
|
{ "name": "ФлагТумблер", "type": "boolean" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -53,6 +53,7 @@
|
|||||||
</InputField>
|
</InputField>
|
||||||
<CheckBoxField name="ПерваяСтрокаЗаголовок" id="10">
|
<CheckBoxField name="ПерваяСтрокаЗаголовок" id="10">
|
||||||
<DataPath>ПерваяСтрокаЗаголовок</DataPath>
|
<DataPath>ПерваяСтрокаЗаголовок</DataPath>
|
||||||
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
<TitleLocation>Right</TitleLocation>
|
<TitleLocation>Right</TitleLocation>
|
||||||
<ContextMenu name="ПерваяСтрокаЗаголовокКонтекстноеМеню" id="11"/>
|
<ContextMenu name="ПерваяСтрокаЗаголовокКонтекстноеМеню" id="11"/>
|
||||||
<ExtendedTooltip name="ПерваяСтрокаЗаголовокРасширеннаяПодсказка" id="12"/>
|
<ExtendedTooltip name="ПерваяСтрокаЗаголовокРасширеннаяПодсказка" id="12"/>
|
||||||
|
|||||||
+64
-30
@@ -17,10 +17,17 @@
|
|||||||
<v8:content>Обычное поле</v8:content>
|
<v8:content>Обычное поле</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
|
<EditMode>EnterOnInput</EditMode>
|
||||||
<ContextMenu name="ОбычноеПолеКонтекстноеМеню" id="2"/>
|
<ContextMenu name="ОбычноеПолеКонтекстноеМеню" id="2"/>
|
||||||
<ExtendedTooltip name="ОбычноеПолеРасширеннаяПодсказка" id="3"/>
|
<ExtendedTooltip name="ОбычноеПолеРасширеннаяПодсказка" id="3"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
<InputField name="МногострочноеПоле" id="4">
|
<LabelField name="Ссылка" id="4">
|
||||||
|
<DataPath>ОбычноеПоле</DataPath>
|
||||||
|
<Hiperlink>true</Hiperlink>
|
||||||
|
<ContextMenu name="СсылкаКонтекстноеМеню" id="5"/>
|
||||||
|
<ExtendedTooltip name="СсылкаРасширеннаяПодсказка" id="6"/>
|
||||||
|
</LabelField>
|
||||||
|
<InputField name="МногострочноеПоле" id="7">
|
||||||
<DataPath>МногострочноеПоле</DataPath>
|
<DataPath>МногострочноеПоле</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -31,10 +38,10 @@
|
|||||||
<MultiLine>true</MultiLine>
|
<MultiLine>true</MultiLine>
|
||||||
<AutoMaxWidth>false</AutoMaxWidth>
|
<AutoMaxWidth>false</AutoMaxWidth>
|
||||||
<Height>5</Height>
|
<Height>5</Height>
|
||||||
<ContextMenu name="МногострочноеПолеКонтекстноеМеню" id="5"/>
|
<ContextMenu name="МногострочноеПолеКонтекстноеМеню" id="8"/>
|
||||||
<ExtendedTooltip name="МногострочноеПолеРасширеннаяПодсказка" id="6"/>
|
<ExtendedTooltip name="МногострочноеПолеРасширеннаяПодсказка" id="9"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
<InputField name="ПолеПароля" id="7">
|
<InputField name="ПолеПароля" id="10">
|
||||||
<DataPath>ПолеПароля</DataPath>
|
<DataPath>ПолеПароля</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -43,10 +50,10 @@
|
|||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
<PasswordMode>true</PasswordMode>
|
<PasswordMode>true</PasswordMode>
|
||||||
<ContextMenu name="ПолеПароляКонтекстноеМеню" id="8"/>
|
<ContextMenu name="ПолеПароляКонтекстноеМеню" id="11"/>
|
||||||
<ExtendedTooltip name="ПолеПароляРасширеннаяПодсказка" id="9"/>
|
<ExtendedTooltip name="ПолеПароляРасширеннаяПодсказка" id="12"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
<InputField name="ПолеСКнопками" id="10">
|
<InputField name="ПолеСКнопками" id="13">
|
||||||
<DataPath>ПолеСКнопками</DataPath>
|
<DataPath>ПолеСКнопками</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -55,10 +62,10 @@
|
|||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
<ClearButton>true</ClearButton>
|
<ClearButton>true</ClearButton>
|
||||||
<ContextMenu name="ПолеСКнопкамиКонтекстноеМеню" id="11"/>
|
<ContextMenu name="ПолеСКнопкамиКонтекстноеМеню" id="14"/>
|
||||||
<ExtendedTooltip name="ПолеСКнопкамиРасширеннаяПодсказка" id="12"/>
|
<ExtendedTooltip name="ПолеСКнопкамиРасширеннаяПодсказка" id="15"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
<InputField name="ПолеПодсказка" id="13">
|
<InputField name="ПолеПодсказка" id="16">
|
||||||
<DataPath>ПолеПодсказка</DataPath>
|
<DataPath>ПолеПодсказка</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -72,10 +79,10 @@
|
|||||||
<v8:content>Введите значение...</v8:content>
|
<v8:content>Введите значение...</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</InputHint>
|
</InputHint>
|
||||||
<ContextMenu name="ПолеПодсказкаКонтекстноеМеню" id="14"/>
|
<ContextMenu name="ПолеПодсказкаКонтекстноеМеню" id="17"/>
|
||||||
<ExtendedTooltip name="ПолеПодсказкаРасширеннаяПодсказка" id="15"/>
|
<ExtendedTooltip name="ПолеПодсказкаРасширеннаяПодсказка" id="18"/>
|
||||||
</InputField>
|
</InputField>
|
||||||
<CheckBoxField name="Флаг" id="16">
|
<CheckBoxField name="Флаг" id="19">
|
||||||
<DataPath>Флаг</DataPath>
|
<DataPath>Флаг</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -83,11 +90,12 @@
|
|||||||
<v8:content>Включено</v8:content>
|
<v8:content>Включено</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
<TitleLocation>Right</TitleLocation>
|
<TitleLocation>Right</TitleLocation>
|
||||||
<ContextMenu name="ФлагКонтекстноеМеню" id="17"/>
|
<ContextMenu name="ФлагКонтекстноеМеню" id="20"/>
|
||||||
<ExtendedTooltip name="ФлагРасширеннаяПодсказка" id="18"/>
|
<ExtendedTooltip name="ФлагРасширеннаяПодсказка" id="21"/>
|
||||||
</CheckBoxField>
|
</CheckBoxField>
|
||||||
<CheckBoxField name="ФлагПлатформенный" id="19">
|
<CheckBoxField name="ФлагПлатформенный" id="22">
|
||||||
<DataPath>ФлагПлатформенный</DataPath>
|
<DataPath>ФлагПлатформенный</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -95,10 +103,11 @@
|
|||||||
<v8:content>Слева</v8:content>
|
<v8:content>Слева</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
<ContextMenu name="ФлагПлатформенныйКонтекстноеМеню" id="20"/>
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
<ExtendedTooltip name="ФлагПлатформенныйРасширеннаяПодсказка" id="21"/>
|
<ContextMenu name="ФлагПлатформенныйКонтекстноеМеню" id="23"/>
|
||||||
|
<ExtendedTooltip name="ФлагПлатформенныйРасширеннаяПодсказка" id="24"/>
|
||||||
</CheckBoxField>
|
</CheckBoxField>
|
||||||
<CheckBoxField name="ФлагЯвный" id="22">
|
<CheckBoxField name="ФлагЯвный" id="25">
|
||||||
<DataPath>ФлагЯвный</DataPath>
|
<DataPath>ФлагЯвный</DataPath>
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
@@ -106,19 +115,33 @@
|
|||||||
<v8:content>Сверху</v8:content>
|
<v8:content>Сверху</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
<TitleLocation>Top</TitleLocation>
|
<TitleLocation>Top</TitleLocation>
|
||||||
<ContextMenu name="ФлагЯвныйКонтекстноеМеню" id="23"/>
|
<ContextMenu name="ФлагЯвныйКонтекстноеМеню" id="26"/>
|
||||||
<ExtendedTooltip name="ФлагЯвныйРасширеннаяПодсказка" id="24"/>
|
<ExtendedTooltip name="ФлагЯвныйРасширеннаяПодсказка" id="27"/>
|
||||||
|
</CheckBoxField>
|
||||||
|
<CheckBoxField name="ФлагТумблер" id="28">
|
||||||
|
<DataPath>ФлагТумблер</DataPath>
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Тумблер</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<CheckBoxType>Switcher</CheckBoxType>
|
||||||
|
<TitleLocation>Right</TitleLocation>
|
||||||
|
<ContextMenu name="ФлагТумблерКонтекстноеМеню" id="29"/>
|
||||||
|
<ExtendedTooltip name="ФлагТумблерРасширеннаяПодсказка" id="30"/>
|
||||||
</CheckBoxField>
|
</CheckBoxField>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
<Attributes>
|
<Attributes>
|
||||||
<Attribute name="Объект" id="25">
|
<Attribute name="Объект" id="31">
|
||||||
<Type>
|
<Type>
|
||||||
<v8:Type>cfg:DataProcessorObject.ПоляВвода</v8:Type>
|
<v8:Type>cfg:DataProcessorObject.ПоляВвода</v8:Type>
|
||||||
</Type>
|
</Type>
|
||||||
<MainAttribute>true</MainAttribute>
|
<MainAttribute>true</MainAttribute>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ОбычноеПоле" id="26">
|
<Attribute name="ОбычноеПоле" id="32">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -133,7 +156,7 @@
|
|||||||
</v8:StringQualifiers>
|
</v8:StringQualifiers>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="МногострочноеПоле" id="27">
|
<Attribute name="МногострочноеПоле" id="33">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -148,7 +171,7 @@
|
|||||||
</v8:StringQualifiers>
|
</v8:StringQualifiers>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ПолеПароля" id="28">
|
<Attribute name="ПолеПароля" id="34">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -163,7 +186,7 @@
|
|||||||
</v8:StringQualifiers>
|
</v8:StringQualifiers>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ПолеСКнопками" id="29">
|
<Attribute name="ПолеСКнопками" id="35">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -178,7 +201,7 @@
|
|||||||
</v8:StringQualifiers>
|
</v8:StringQualifiers>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ПолеПодсказка" id="30">
|
<Attribute name="ПолеПодсказка" id="36">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -193,7 +216,7 @@
|
|||||||
</v8:StringQualifiers>
|
</v8:StringQualifiers>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="Флаг" id="31">
|
<Attribute name="Флаг" id="37">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -204,7 +227,7 @@
|
|||||||
<v8:Type>xs:boolean</v8:Type>
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ФлагПлатформенный" id="32">
|
<Attribute name="ФлагПлатформенный" id="38">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -215,7 +238,7 @@
|
|||||||
<v8:Type>xs:boolean</v8:Type>
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="ФлагЯвный" id="33">
|
<Attribute name="ФлагЯвный" id="39">
|
||||||
<Title>
|
<Title>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
<v8:lang>ru</v8:lang>
|
<v8:lang>ru</v8:lang>
|
||||||
@@ -226,5 +249,16 @@
|
|||||||
<v8:Type>xs:boolean</v8:Type>
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
|
<Attribute name="ФлагТумблер" id="40">
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Флаг тумблер</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Type>
|
||||||
|
<v8:Type>xs:boolean</v8:Type>
|
||||||
|
</Type>
|
||||||
|
</Attribute>
|
||||||
</Attributes>
|
</Attributes>
|
||||||
</Form>
|
</Form>
|
||||||
|
|||||||
+1
@@ -60,6 +60,7 @@
|
|||||||
<v8:content>Флаг</v8:content>
|
<v8:content>Флаг</v8:content>
|
||||||
</v8:item>
|
</v8:item>
|
||||||
</Title>
|
</Title>
|
||||||
|
<CheckBoxType>Auto</CheckBoxType>
|
||||||
<TitleLocation>Right</TitleLocation>
|
<TitleLocation>Right</TitleLocation>
|
||||||
<ContextMenu name="ТаблицаДанныхКартинкаФлагКонтекстноеМеню" id="20"/>
|
<ContextMenu name="ТаблицаДанныхКартинкаФлагКонтекстноеМеню" id="20"/>
|
||||||
<ExtendedTooltip name="ТаблицаДанныхКартинкаФлагРасширеннаяПодсказка" id="21"/>
|
<ExtendedTooltip name="ТаблицаДанныхКартинкаФлагРасширеннаяПодсказка" id="21"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user