diff --git a/.claude/skills/form-compile/SKILL.md b/.claude/skills/form-compile/SKILL.md
index 79a4a3b0..564a56fb 100644
--- a/.claude/skills/form-compile/SKILL.md
+++ b/.claude/skills/form-compile/SKILL.md
@@ -62,8 +62,10 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| DSL ключ | XML элемент | Значение ключа |
|--------------|-------------------|---------------------------------------------------|
| `"group"` | UsualGroup | `"horizontal"` / `"vertical"` / `"alwaysHorizontal"` / `"alwaysVertical"` / `"collapsible"` |
+| `"columnGroup"` | ColumnGroup | `"horizontal"` / `"vertical"` / `"inCell"` — только внутри `columns` таблицы |
| `"input"` | InputField | имя элемента |
| `"check"` | CheckBoxField | имя |
+| `"radio"` | RadioButtonField | имя |
| `"label"` | LabelDecoration | имя (текст задаётся через `title`) |
| `"labelField"` | LabelField | имя |
| `"table"` | Table | имя |
@@ -97,7 +99,7 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
**input / picField**: `OnChange`, `StartChoice`, `ChoiceProcessing`, `AutoComplete`, `TextEditEnd`, `Clearing`, `Creating`, `EditTextChange`
-**check**: `OnChange`
+**check / radio**: `OnChange`
**table**: `OnStartEdit`, `OnEditEnd`, `OnChange`, `Selection`, `ValueChoice`, `BeforeAddRow`, `BeforeDeleteRow`, `AfterDeleteRow`, `BeforeRowChange`, `BeforeEditEnd`, `OnActivateRow`, `OnActivateCell`, `Drag`, `DragStart`, `DragCheck`, `DragEnd`
@@ -125,7 +127,8 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| `skipOnInput: true` | Пропускать при обходе Tab | |
| `inputHint` | Подсказка в пустом поле | `"Введите наименование..."` |
| `width` / `height` | Размер | числа |
-| `autoMaxWidth: false` | Отключить авто-ширину | для фиксированных полей |
+| `autoMaxWidth: false` | Снять авто-ограничение ширины (поле растянется) | |
+| `maxWidth` / `maxHeight` | Жёсткое ограничение размера | числа; обычно вместе с `autoMaxWidth: false` |
| `horizontalStretch: true` | Растягивать по ширине | |
### Чекбокс (check)
@@ -135,6 +138,37 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| `path` | DataPath |
| `titleLocation` | Размещение заголовка |
+### Поле переключателя (radio)
+
+Радиокнопки или тумблер для выбора одного значения из списка.
+
+| Ключ | Описание | Пример |
+|------|----------|--------|
+| `path` | DataPath — привязка к реквизиту | `"СпособКурса"` |
+| `radioButtonType` | Вид переключателя | `"Auto"` (по умолчанию), `"RadioButtons"`, `"Tumbler"` |
+| `columnsCount` | Число колонок раскладки | `1`, `2`, ... |
+| `titleLocation` | Размещение заголовка | по умолчанию `"none"` |
+| `choiceList` | Список вариантов: массив `{value, presentation}` | см. ниже |
+
+`choiceList[*]`:
+
+| Ключ | Описание |
+|------|----------|
+| `value` | Значение варианта. Строка/число/булево; для перечисления — `"Enum.ИмяТипа.EnumValue.ИмяЗначения"` |
+| `presentation` | Текст рядом с переключателем. Строка (русский) либо объект `{ru, en, ...}` для мультиязычности |
+
+```json
+{
+ "radio": "СпособКурса",
+ "path": "Объект.СпособУстановкиКурса",
+ "radioButtonType": "Auto",
+ "choiceList": [
+ { "value": "Enum.СпособыКурса.EnumValue.Авто", "presentation": { "ru": "Автоматически", "en": "Automatic" } },
+ { "value": "Enum.СпособыКурса.EnumValue.Ручной", "presentation": "вручную" }
+ ]
+}
+```
+
### Надпись-декорация (label)
| Ключ | Описание |
@@ -150,7 +184,8 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| Ключ | Описание |
|------|----------|
| `showTitle: true` | Показывать заголовок группы |
-| `united: false` | Не объединять рамку |
+| `united: false` | Левый край полей ввода выравнивается только в пределах этой группы (по умолчанию `true` — сквозное выравнивание по самому длинному заголовку, в т.ч. с соседними группами) |
+| `collapsed: true` | Только для `"group": "collapsible"` — группа создаётся свёрнутой |
| `representation` | `"none"`, `"normal"`, `"weak"`, `"strong"` |
| `children: [...]` | Вложенные элементы |
@@ -176,6 +211,35 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| `rowPictureDataPath` | Путь к картинке строки (напр. `"Список.DefaultPicture"`) |
| `tableAutofill: false` | Управление Autofill внутреннего AutoCommandBar |
+Колонки можно группировать через `columnGroup` (см. ниже).
+
+### Группа колонок (columnGroup)
+
+Используется только внутри `columns` таблицы. Значение ключа задаёт ориентацию: `"horizontal"`, `"vertical"`, `"inCell"` (склеивает колонки в одну ячейку шапки). Допускается вложение `columnGroup` в `columnGroup`.
+
+| Ключ | Описание |
+|------|----------|
+| `name` | Имя элемента (рекомендуется задавать явно) |
+| `title` | Заголовок группы |
+| `showTitle: false` | Скрыть заголовок |
+| `showInHeader: true/false` | Показывать ли группу в шапке таблицы |
+| `width` | Ширина |
+| `horizontalStretch: false` | Растягивание |
+| `children: [...]` | Колонки внутри группы (`input`, `labelField`, `picField`, вложенный `columnGroup` …) |
+
+```json
+{ "table": "Список", "path": "Список", "columns": [
+ { "columnGroup": "horizontal", "name": "ГруппаДата", "title": "Срок", "children": [
+ { "input": "СрокИсполнения", "path": "Список.СрокИсполнения" },
+ { "labelField": "Просрочено", "path": "Список.Просрочено" }
+ ]},
+ { "columnGroup": "inCell", "name": "ГруппаИсполнитель", "showInHeader": true, "children": [
+ { "input": "Исполнитель", "path": "Список.Исполнитель" }
+ ]},
+ { "input": "Комментарий", "path": "Список.Комментарий" }
+]}
+```
+
### Страницы (pages + page)
| Ключ (pages) | Описание |
@@ -196,7 +260,7 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
| `command` | Имя команды формы → `Form.Command.Имя` |
| `stdCommand` | Стандартная команда: `"Close"` → `Form.StandardCommand.Close`; с точкой: `"Товары.Add"` → `Form.Item.Товары.StandardCommand.Add` |
| `defaultButton: true` | Кнопка по умолчанию |
-| `type` | `"usual"`, `"hyperlink"`, `"commandBar"` |
+| `type` | `"usual"`, `"hyperlink"`. По умолчанию `"usual"`. Конкретный XML-вид (UsualButton/Hyperlink/CommandBarButton/CommandBarHyperlink) подставляется автоматически по контексту |
| `picture` | Картинка кнопки |
| `representation` | `"Auto"`, `"Text"`, `"Picture"`, `"PictureAndText"` |
| `locationInCommandBar` | `"Auto"`, `"InCommandBar"`, `"InAdditionalSubmenu"` |
@@ -227,6 +291,8 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
]}
```
+Кнопки основных действий формы и подменю размещают здесь, а не в отдельной группе на форме. Отдельной кнопкой в layout — только если она логически привязана к конкретному полю или группе.
+
### Выпадающее меню (popup)
| Ключ | Описание |
@@ -369,9 +435,9 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
{ "check": "ПерваяСтрокаЗаголовок", "path": "ПерваяСтрокаЗаголовок" }
]},
{ "input": "Результат", "path": "Результат", "multiLine": true, "height": 8, "readOnly": true, "title": "Лог" },
- { "group": "horizontal", "name": "ГруппаКнопок", "children": [
+ { "autoCmdBar": "ФормаКоманднаяПанель", "children": [
{ "button": "Загрузить", "command": "Загрузить", "defaultButton": true },
- { "button": "Закрыть", "stdCommand": "Close" }
+ { "button": "Закрыть", "stdCommand": "Close" }
]}
],
"attributes": [
diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1
index e821095d..1e2ca8aa 100644
--- a/.claude/skills/form-compile/scripts/form-compile.ps1
+++ b/.claude/skills/form-compile/scripts/form-compile.ps1
@@ -1,4 +1,4 @@
-# form-compile v1.15 — Compile 1C managed form from JSON or object metadata
+# form-compile v1.20 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -1774,6 +1774,7 @@ function Get-ElementName {
$script:knownEvents = @{
"input" = @("OnChange","StartChoice","ChoiceProcessing","AutoComplete","TextEditEnd","Clearing","Creating","EditTextChange")
"check" = @("OnChange")
+ "radio" = @("OnChange")
"label" = @("Click","URLProcessing")
"labelField"= @("OnChange","StartChoice","ChoiceProcessing","Click","URLProcessing","Clearing")
"table" = @("Selection","BeforeAddRow","AfterDeleteRow","BeforeDeleteRow","OnActivateRow","OnEditEnd","OnStartEdit","BeforeRowChange","BeforeEditEnd","ValueChoice","OnActivateCell","OnActivateField","Drag","DragStart","DragCheck","DragEnd","OnGetDataAtServer","BeforeLoadUserSettingsAtServer","OnUpdateUserSettingSetAtServer","OnChange")
@@ -1824,11 +1825,47 @@ function Emit-Companion {
}
function Emit-Element {
- param($el, [string]$indent)
+ param($el, [string]$indent, [bool]$inCmdBar = $false)
- # Silent synonyms: commandBar -> cmdBar, autoCommandBar -> autoCmdBar
- # (autoCmdBar inside def.elements is normally extracted in pre-pass; this is a safety net for nested cases)
- $synonyms = @{ "commandBar" = "cmdBar"; "autoCommandBar" = "autoCmdBar" }
+ # Silent synonyms: model often writes XML name or Russian (ПолеПереключателя/RadioButtonField → radio).
+ # Maps any synonym to canonical short DSL key.
+ $synonyms = @{
+ "commandBar" = "cmdBar"
+ "autoCommandBar" = "autoCmdBar"
+ "КоманднаяПанель" = "cmdBar"
+ "InputField" = "input"
+ "ПолеВвода" = "input"
+ "CheckBoxField" = "check"
+ "ПолеФлажка" = "check"
+ "RadioButtonField" = "radio"
+ "ПолеПереключателя" = "radio"
+ "radioButton" = "radio"
+ "PictureField" = "picField"
+ "ПолеКартинки" = "picField"
+ "LabelField" = "labelField"
+ "ПолеНадписи" = "labelField"
+ "CalendarField" = "calendar"
+ "ПолеКалендаря" = "calendar"
+ "LabelDecoration" = "label"
+ "Надпись" = "label"
+ "PictureDecoration" = "picture"
+ "Картинка" = "picture"
+ "UsualGroup" = "group"
+ "Группа" = "group"
+ "ОбычнаяГруппа" = "group"
+ "ColumnGroup" = "columnGroup"
+ "ГруппаКолонок" = "columnGroup"
+ "Pages" = "pages"
+ "ГруппаСтраниц" = "pages"
+ "Page" = "page"
+ "Страница" = "page"
+ "Table" = "table"
+ "Таблица" = "table"
+ "Button" = "button"
+ "Кнопка" = "button"
+ "Popup" = "popup"
+ "ВсплывающееМеню" = "popup"
+ }
foreach ($pair in $synonyms.GetEnumerator()) {
if ($null -ne $el.PSObject.Properties[$pair.Key] -and $null -eq $el.PSObject.Properties[$pair.Value]) {
$val = $el.($pair.Key)
@@ -1841,7 +1878,7 @@ function Emit-Element {
$typeKey = $null
$xmlTag = $null
- foreach ($key in @("group","input","check","label","labelField","table","pages","page","button","picture","picField","calendar","cmdBar","popup")) {
+ foreach ($key in @("columnGroup","group","input","check","radio","label","labelField","table","pages","page","button","picture","picField","calendar","cmdBar","popup")) {
if ($el.$key -ne $null) {
$typeKey = $key
break
@@ -1856,8 +1893,12 @@ function Emit-Element {
# Validate known keys — warn about typos and unknown properties
$knownKeys = @{
# type keys
- "group"=1;"input"=1;"check"=1;"label"=1;"labelField"=1;"table"=1;"pages"=1;"page"=1
+ "group"=1;"columnGroup"=1;"input"=1;"check"=1;"radio"=1;"label"=1;"labelField"=1;"table"=1;"pages"=1;"page"=1
"button"=1;"picture"=1;"picField"=1;"calendar"=1;"cmdBar"=1;"popup"=1
+ # columnGroup-specific
+ "showInHeader"=1
+ # radio-specific
+ "radioButtonType"=1;"choiceList"=1;"columnsCount"=1
# naming & binding
"name"=1;"path"=1;"title"=1
# visibility & state
@@ -1867,13 +1908,14 @@ function Emit-Element {
# layout
"titleLocation"=1;"representation"=1;"width"=1;"height"=1
"horizontalStretch"=1;"verticalStretch"=1;"autoMaxWidth"=1;"autoMaxHeight"=1
+ "maxWidth"=1;"maxHeight"=1
# input-specific
"multiLine"=1;"passwordMode"=1;"choiceButton"=1;"clearButton"=1
"spinButton"=1;"dropListButton"=1;"markIncomplete"=1;"skipOnInput"=1;"inputHint"=1
# label/hyperlink
"hyperlink"=1
# group-specific
- "showTitle"=1;"united"=1
+ "showTitle"=1;"united"=1;"collapsed"=1
# hierarchy
"children"=1;"columns"=1
# table-specific
@@ -1901,14 +1943,16 @@ function Emit-Element {
switch ($typeKey) {
"group" { Emit-Group -el $el -name $name -id $id -indent $indent }
+ "columnGroup" { Emit-ColumnGroup -el $el -name $name -id $id -indent $indent }
"input" { Emit-Input -el $el -name $name -id $id -indent $indent }
"check" { Emit-Check -el $el -name $name -id $id -indent $indent }
+ "radio" { Emit-Radio -el $el -name $name -id $id -indent $indent }
"label" { Emit-Label -el $el -name $name -id $id -indent $indent }
"labelField" { Emit-LabelField -el $el -name $name -id $id -indent $indent }
"table" { Emit-Table -el $el -name $name -id $id -indent $indent }
"pages" { Emit-Pages -el $el -name $name -id $id -indent $indent }
"page" { Emit-Page -el $el -name $name -id $id -indent $indent }
- "button" { Emit-Button -el $el -name $name -id $id -indent $indent }
+ "button" { Emit-Button -el $el -name $name -id $id -indent $indent -inCmdBar $inCmdBar }
"picture" { Emit-PictureDecoration -el $el -name $name -id $id -indent $indent }
"picField" { Emit-PictureField -el $el -name $name -id $id -indent $indent }
"calendar" { Emit-Calendar -el $el -name $name -id $id -indent $indent }
@@ -1983,6 +2027,7 @@ function Emit-Group {
if ($groupVal -eq "collapsible") {
X "$innerVertical"
X "$innerCollapsible"
+ if ($el.collapsed -eq $true) { X "$innertrue" }
}
# Representation
@@ -2020,6 +2065,48 @@ function Emit-Group {
X "$indent"
}
+function Emit-ColumnGroup {
+ param($el, [string]$name, [int]$id, [string]$indent)
+
+ X "$indent"
+ $inner = "$indent`t"
+
+ Emit-Title -el $el -name $name -indent $inner
+
+ # Group orientation (horizontal / vertical / inCell — последнее только здесь)
+ $groupVal = "$($el.columnGroup)"
+ $orientation = switch ($groupVal) {
+ "horizontal" { "Horizontal" }
+ "vertical" { "Vertical" }
+ "inCell" { "InCell" }
+ default { $null }
+ }
+ if ($orientation) { X "$inner$orientation" }
+
+ if ($el.showTitle -eq $false) { X "$innerfalse" }
+ if ($null -ne $el.showInHeader) {
+ $shVal = if ($el.showInHeader) { "true" } else { "false" }
+ X "$inner$shVal"
+ }
+ if ($el.width) { X "$inner$($el.width)" }
+
+ Emit-CommonFlags -el $el -indent $inner
+
+ # Companion: ExtendedTooltip
+ Emit-Companion -tag "ExtendedTooltip" -name "${name}РасширеннаяПодсказка" -indent $inner
+
+ # Children
+ if ($el.children -and $el.children.Count -gt 0) {
+ X "$inner"
+ foreach ($child in $el.children) {
+ Emit-Element -el $child -indent "$inner`t"
+ }
+ X "$inner"
+ }
+
+ X "$indent"
+}
+
function Emit-Input {
param($el, [string]$name, [int]$id, [string]$indent)
@@ -2057,7 +2144,9 @@ function Emit-Input {
} elseif ($el.multiLine -eq $true) {
X "$innerfalse"
}
+ if ($null -ne $el.maxWidth) { X "$inner$($el.maxWidth)" }
if ($el.autoMaxHeight -eq $false) { X "$innerfalse" }
+ if ($null -ne $el.maxHeight) { X "$inner$($el.maxHeight)" }
if ($el.width) { X "$inner$($el.width)" }
if ($el.height) { X "$inner$($el.height)" }
if ($el.horizontalStretch -eq $true) { X "$innertrue" }
@@ -2099,6 +2188,224 @@ function Emit-Check {
X "$indent"
}
+# Maps Russian/English root of a typed reference path to canonical English root.
+# Used to normalize ChoiceList values like "Перечисление.X.Y" → "Enum.X.EnumValue.Y".
+$script:refRootSynonyms = @{
+ "Перечисление" = "Enum"
+ "Справочник" = "Catalog"
+ "Документ" = "Document"
+ "ПланСчетов" = "ChartOfAccounts"
+ "ПланВидовХарактеристик" = "ChartOfCharacteristicTypes"
+ "ПланВидовРасчета" = "ChartOfCalculationTypes"
+ "ПланВидовРасчёта" = "ChartOfCalculationTypes"
+ "ПланОбмена" = "ExchangePlan"
+ "БизнесПроцесс" = "BusinessProcess"
+ "Задача" = "Task"
+ "РегистрСведений" = "InformationRegister"
+ "РегистрНакопления" = "AccumulationRegister"
+ "РегистрБухгалтерии" = "AccountingRegister"
+ "РегистрРасчета" = "CalculationRegister"
+ "РегистрРасчёта" = "CalculationRegister"
+}
+$script:enumValueSynonyms = @("EnumValue","ЗначениеПеречисления")
+
+# Normalize a choiceList item value: returns @{ XsiType = "..."; Text = "..." }
+function Normalize-ChoiceValue {
+ param($value)
+
+ # Booleans
+ if ($value -is [bool]) {
+ return @{ XsiType = "xs:boolean"; Text = if ($value) { "true" } else { "false" } }
+ }
+ # Numbers (int / decimal / double)
+ if ($value -is [int] -or $value -is [long] -or $value -is [double] -or $value -is [decimal]) {
+ return @{ XsiType = "xs:decimal"; Text = "$value" }
+ }
+
+ $s = "$value"
+ if ([string]::IsNullOrEmpty($s)) {
+ return @{ XsiType = "xs:string"; Text = "" }
+ }
+
+ # Try to detect typed reference path: ".[..]"
+ $parts = $s -split '\.'
+ if ($parts.Count -ge 2) {
+ $root = $parts[0]
+ $canonRoot = $null
+ if ($script:refRootSynonyms.ContainsKey($root)) { $canonRoot = $script:refRootSynonyms[$root] }
+ elseif ($script:refRootSynonyms.Values -contains $root) { $canonRoot = $root }
+
+ if ($canonRoot) {
+ $typeName = $parts[1]
+ $normalized = $null
+
+ if ($canonRoot -eq "Enum") {
+ if ($parts.Count -eq 2) {
+ # "Enum.X" alone — not a value, treat as string
+ } elseif ($parts.Count -eq 3) {
+ # "Enum.X.Y" — insert .EnumValue.
+ $normalized = "Enum.$typeName.EnumValue.$($parts[2])"
+ } else {
+ # "Enum.X..Y..." — replace member with EnumValue (handles ЗначениеПеречисления too)
+ $member = $parts[2]
+ if ($script:enumValueSynonyms -contains $member) {
+ $rest = $parts[3..($parts.Count-1)] -join '.'
+ $normalized = "Enum.$typeName.EnumValue.$rest"
+ } else {
+ $rest = $parts[2..($parts.Count-1)] -join '.'
+ $normalized = "Enum.$typeName.EnumValue.$rest"
+ }
+ }
+ } else {
+ # Other ref roots: just translate root, keep tail as-is
+ if ($parts.Count -ge 3) {
+ $tail = $parts[1..($parts.Count-1)] -join '.'
+ $normalized = "$canonRoot.$tail"
+ }
+ }
+
+ if ($normalized) {
+ return @{ XsiType = "xr:DesignTimeRef"; Text = $normalized }
+ }
+ }
+ }
+
+ return @{ XsiType = "xs:string"; Text = $s }
+}
+
+# Emit Presentation block for a choiceList item.
+# Accepts string (ru only), or hashtable/PSCustomObject {ru, en, ...}.
+# Empty/null → emits empty .
+function Emit-ChoicePresentation {
+ param($pres, [string]$indent)
+ if ($null -eq $pres -or ($pres -is [string] -and [string]::IsNullOrEmpty($pres))) {
+ X "$indent"
+ return
+ }
+
+ $pairs = @()
+ if ($pres -is [string]) {
+ $pairs += ,@("ru", $pres)
+ } elseif ($pres -is [hashtable] -or $pres -is [System.Collections.IDictionary]) {
+ foreach ($k in $pres.Keys) { $pairs += ,@("$k", "$($pres[$k])") }
+ } elseif ($pres.PSObject -and $pres.PSObject.Properties) {
+ foreach ($p in $pres.PSObject.Properties) { $pairs += ,@("$($p.Name)", "$($p.Value)") }
+ } else {
+ $pairs += ,@("ru", "$pres")
+ }
+
+ X "$indent"
+ foreach ($pair in $pairs) {
+ X "$indent`t"
+ X "$indent`t`t$($pair[0])"
+ X "$indent`t`t$(Esc-Xml $pair[1])"
+ X "$indent`t"
+ }
+ X "$indent"
+}
+
+function Emit-Radio {
+ param($el, [string]$name, [int]$id, [string]$indent)
+
+ X "$indent"
+ $inner = "$indent`t"
+
+ if ($el.path) { X "$inner$($el.path)" }
+
+ Emit-Title -el $el -name $name -indent $inner -auto:(-not $el.path)
+ Emit-CommonFlags -el $el -indent $inner
+
+ # TitleLocation default is None for radio (matches typical configurator behavior)
+ $tl = if ($el.titleLocation) {
+ switch ("$($el.titleLocation)") {
+ "none" { "None" }
+ "left" { "Left" }
+ "right" { "Right" }
+ "top" { "Top" }
+ "bottom" { "Bottom" }
+ default { "$($el.titleLocation)" }
+ }
+ } else { "None" }
+ X "$inner$tl"
+
+ # RadioButtonType: Auto | RadioButtons | Tumbler. Accept synonyms.
+ $rbtRaw = if ($el.radioButtonType) { "$($el.radioButtonType)".Trim() } else { "Auto" }
+ $rbt = switch -Regex ($rbtRaw.ToLower()) {
+ '^(auto|авто)$' { "Auto"; break }
+ '^(radiobuttons?|переключатель|радио)$' { "RadioButtons"; break }
+ '^(tumbler|тумблер)$' { "Tumbler"; break }
+ default { $rbtRaw }
+ }
+ X "$inner$rbt"
+
+ if ($null -ne $el.columnsCount) {
+ X "$inner$($el.columnsCount)"
+ }
+
+ # ChoiceList
+ if ($el.choiceList -and $el.choiceList.Count -gt 0) {
+ X "$inner"
+ $itemIndent = "$inner`t"
+ foreach ($item in $el.choiceList) {
+ # Pull value (and tolerate Russian synonym "значение")
+ $valRaw = $null
+ if ($item -is [hashtable] -or $item -is [System.Collections.IDictionary]) {
+ if ($item.Contains("value")) { $valRaw = $item["value"] }
+ elseif ($item.Contains("значение")) { $valRaw = $item["значение"] }
+ } else {
+ if ($item.PSObject.Properties["value"]) { $valRaw = $item.value }
+ elseif ($item.PSObject.Properties["значение"]) { $valRaw = $item."значение" }
+ }
+
+ # Pull presentation (presentation OR title synonym)
+ $presRaw = $null
+ $hasPres = $false
+ if ($item -is [hashtable] -or $item -is [System.Collections.IDictionary]) {
+ if ($item.Contains("presentation")) { $presRaw = $item["presentation"]; $hasPres = $true }
+ elseif ($item.Contains("представление")) { $presRaw = $item["представление"]; $hasPres = $true }
+ elseif ($item.Contains("title")) { $presRaw = $item["title"]; $hasPres = $true }
+ } else {
+ if ($item.PSObject.Properties["presentation"]) { $presRaw = $item.presentation; $hasPres = $true }
+ elseif ($item.PSObject.Properties["представление"]) { $presRaw = $item."представление"; $hasPres = $true }
+ elseif ($item.PSObject.Properties["title"]) { $presRaw = $item.title; $hasPres = $true }
+ }
+
+ $norm = Normalize-ChoiceValue -value $valRaw
+
+ # Auto-derive presentation if missing
+ if (-not $hasPres) {
+ if ($norm.XsiType -eq "xr:DesignTimeRef") {
+ $tail = ($norm.Text -split '\.')[-1]
+ $presRaw = Title-FromName -name $tail
+ } elseif ($norm.XsiType -eq "xs:string") {
+ $presRaw = $norm.Text
+ } else {
+ $presRaw = $norm.Text
+ }
+ }
+
+ X "$itemIndent"
+ $valIndent = "$itemIndent`t"
+ X "$valIndent"
+ X "$valIndent0"
+ X "$valIndent"
+ Emit-ChoicePresentation -pres $presRaw -indent "$valIndent`t"
+ X "$valIndent`t$(Esc-Xml $norm.Text)"
+ X "$valIndent"
+ X "$itemIndent"
+ }
+ X "$inner"
+ }
+
+ # Companions
+ Emit-Companion -tag "ContextMenu" -name "${name}КонтекстноеМеню" -indent $inner
+ Emit-Companion -tag "ExtendedTooltip" -name "${name}РасширеннаяПодсказка" -indent $inner
+
+ Emit-Events -el $el -elementName $name -indent $inner -typeKey "radio"
+
+ X "$indent"
+}
+
function Emit-Label {
param($el, [string]$name, [int]$id, [string]$indent)
@@ -2120,7 +2427,9 @@ function Emit-Label {
if ($el.hyperlink -eq $true) { X "$innertrue" }
if ($el.autoMaxWidth -eq $false) { X "$innerfalse" }
+ if ($null -ne $el.maxWidth) { X "$inner$($el.maxWidth)" }
if ($el.autoMaxHeight -eq $false) { X "$innerfalse" }
+ if ($null -ne $el.maxHeight) { X "$inner$($el.maxHeight)" }
if ($el.width) { X "$inner$($el.width)" }
if ($el.height) { X "$inner$($el.height)" }
@@ -2282,19 +2591,48 @@ function Emit-Page {
}
function Emit-Button {
- param($el, [string]$name, [int]$id, [string]$indent)
+ param($el, [string]$name, [int]$id, [string]$indent, [bool]$inCmdBar = $false)
X "$indent
-
+
ru
@@ -108,7 +107,7 @@
xs:boolean
-
+
ru
@@ -125,7 +124,7 @@
-
+
ru
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Configuration.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Configuration.xml
new file mode 100644
index 00000000..e67bb82b
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Configuration.xml
@@ -0,0 +1,253 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ СпособыКурса
+ ТестРадио
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио.xml
new file mode 100644
index 00000000..78fb5410
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+
+ ТестРадио
+
+
+ ru
+ Тест радио
+
+
+
+ false
+ DataProcessor.ТестРадио.Form.Форма
+
+ false
+
+
+
+
+
+
+ СпособКурса
+
+
+ ru
+ Способ курса
+
+
+
+
+ d5p1:EnumRef.СпособыКурса
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма.xml
new file mode 100644
index 00000000..dffeea01
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form.xml
new file mode 100644
index 00000000..31d5522f
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form.xml
@@ -0,0 +1,78 @@
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form/Module.bsl
new file mode 100644
index 00000000..8ead4cec
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/DataProcessors/ТестРадио/Forms/Форма/Ext/Form/Module.bsl
@@ -0,0 +1,19 @@
+#Область ОбработчикиСобытийФормы
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовФормы
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+#КонецОбласти
+
+#Область ОбработчикиОповещений
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Enums/СпособыКурса.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Enums/СпособыКурса.xml
new file mode 100644
index 00000000..f55fded3
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Enums/СпособыКурса.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+
+ СпособыКурса
+
+
+ ru
+ Способы курса
+
+
+
+ false
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ true
+ BothWays
+
+
+
+
+
+
+
+ Auto
+
+
+
+
+ Авто
+
+
+ ru
+ Авто
+
+
+
+
+
+
+
+ Ручной
+
+
+ ru
+ Ручной
+
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Enums/СпособыКурса/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Enums/СпособыКурса/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-auto-enum/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/Configuration.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Configuration.xml
new file mode 100644
index 00000000..1eb33e88
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Configuration.xml
@@ -0,0 +1,253 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ СпособыКурса
+ ТестСинонимы
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы.xml
new file mode 100644
index 00000000..841accc1
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+
+ ТестСинонимы
+
+
+ ru
+ Тест синонимы
+
+
+
+ false
+ DataProcessor.ТестСинонимы.Form.Форма
+
+ false
+
+
+
+
+
+
+ СпособКурса
+
+
+ ru
+ Способ курса
+
+
+
+
+ d5p1:EnumRef.СпособыКурса
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма.xml
new file mode 100644
index 00000000..dffeea01
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form.xml
new file mode 100644
index 00000000..6a2903ae
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form.xml
@@ -0,0 +1,73 @@
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form/Module.bsl
new file mode 100644
index 00000000..8ead4cec
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/DataProcessors/ТестСинонимы/Forms/Форма/Ext/Form/Module.bsl
@@ -0,0 +1,19 @@
+#Область ОбработчикиСобытийФормы
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовФормы
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+#КонецОбласти
+
+#Область ОбработчикиОповещений
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/Enums/СпособыКурса.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Enums/СпособыКурса.xml
new file mode 100644
index 00000000..f55fded3
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Enums/СпособыКурса.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+
+ СпособыКурса
+
+
+ ru
+ Способы курса
+
+
+
+ false
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ DontCheck
+ false
+ false
+ Auto
+
+
+ false
+
+
+ Auto
+ Auto
+
+ false
+ Use
+ false
+
+
+
+ Use
+
+
+
+
+
+
+
+ true
+ BothWays
+
+
+
+
+
+
+
+ Auto
+
+
+
+
+ Авто
+
+
+ ru
+ Авто
+
+
+
+
+
+
+
+ Ручной
+
+
+ ru
+ Ручной
+
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/Enums/СпособыКурса/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Enums/СпособыКурса/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-synonyms/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-synonyms/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Configuration.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Configuration.xml
new file mode 100644
index 00000000..db203c52
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Configuration.xml
@@ -0,0 +1,252 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ ТестТумблер
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер.xml
new file mode 100644
index 00000000..a63b7a5e
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+
+ ТестТумблер
+
+
+ ru
+ Тест тумблер
+
+
+
+ false
+ DataProcessor.ТестТумблер.Form.Форма
+
+ false
+
+
+
+
+
+
+ ОтборСтрок
+
+
+ ru
+ Отбор строк
+
+
+
+
+ xs:string
+
+ 50
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма.xml
new file mode 100644
index 00000000..dffeea01
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form.xml
new file mode 100644
index 00000000..f6919e89
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form.xml
@@ -0,0 +1,71 @@
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form/Module.bsl
new file mode 100644
index 00000000..8ead4cec
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/DataProcessors/ТестТумблер/Forms/Форма/Ext/Form/Module.bsl
@@ -0,0 +1,19 @@
+#Область ОбработчикиСобытийФормы
+
+#КонецОбласти
+
+#Область ОбработчикиСобытийЭлементовФормы
+
+#КонецОбласти
+
+#Область ОбработчикиКомандФормы
+
+#КонецОбласти
+
+#Область ОбработчикиОповещений
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/radio-tumbler-strings/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/synonyms/DataProcessors/Тест/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/synonyms/DataProcessors/Тест/Forms/Форма/Ext/Form.xml
index 3d2e6f3b..7347dec6 100644
--- a/tests/skills/cases/form-compile/snapshots/synonyms/DataProcessors/Тест/Forms/Форма/Ext/Form.xml
+++ b/tests/skills/cases/form-compile/snapshots/synonyms/DataProcessors/Тест/Forms/Форма/Ext/Form.xml
@@ -10,6 +10,7 @@
+ CommandBarButton
Form.Command.Кн1
@@ -24,6 +25,7 @@
+ CommandBarButton
Form.Command.Кн2
diff --git a/tests/skills/cases/meta-compile/snapshots/batch/Catalogs/Валюты.xml b/tests/skills/cases/meta-compile/snapshots/batch/Catalogs/Валюты.xml
index e6edf1af..6c669c51 100644
--- a/tests/skills/cases/meta-compile/snapshots/batch/Catalogs/Валюты.xml
+++ b/tests/skills/cases/meta-compile/snapshots/batch/Catalogs/Валюты.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.Валюты.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-basic/Catalogs/Валюты.xml b/tests/skills/cases/meta-compile/snapshots/catalog-basic/Catalogs/Валюты.xml
index e6edf1af..6c669c51 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-basic/Catalogs/Валюты.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-basic/Catalogs/Валюты.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.Валюты.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-hierarchical/Catalogs/Подразделения.xml b/tests/skills/cases/meta-compile/snapshots/catalog-hierarchical/Catalogs/Подразделения.xml
index f1cfe8a5..a37c6a46 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-hierarchical/Catalogs/Подразделения.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-hierarchical/Catalogs/Подразделения.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.Подразделения.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-minimal/Catalogs/А.xml b/tests/skills/cases/meta-compile/snapshots/catalog-minimal/Catalogs/А.xml
index 087d6edd..8a49fdf4 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-minimal/Catalogs/А.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-minimal/Catalogs/А.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.А.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml b/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
index 369b3a6f..8a0ff68d 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-mixed-types/Catalogs/Контрагенты.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.Контрагенты.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/catalog-tabparts/Catalogs/Товары.xml b/tests/skills/cases/meta-compile/snapshots/catalog-tabparts/Catalogs/Товары.xml
index 09ff98e9..2d0410d5 100644
--- a/tests/skills/cases/meta-compile/snapshots/catalog-tabparts/Catalogs/Товары.xml
+++ b/tests/skills/cases/meta-compile/snapshots/catalog-tabparts/Catalogs/Товары.xml
@@ -287,7 +287,7 @@
Auto
InDialog
- true
+ false
BothWays
Catalog.Товары.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/chart-of-accounts/ChartsOfAccounts/Хозрасчетный.xml b/tests/skills/cases/meta-compile/snapshots/chart-of-accounts/ChartsOfAccounts/Хозрасчетный.xml
index 6b826fc2..264225e9 100644
--- a/tests/skills/cases/meta-compile/snapshots/chart-of-accounts/ChartsOfAccounts/Хозрасчетный.xml
+++ b/tests/skills/cases/meta-compile/snapshots/chart-of-accounts/ChartsOfAccounts/Хозрасчетный.xml
@@ -426,7 +426,7 @@
Auto
- true
+ false
BothWays
ChartOfAccounts.Хозрасчетный.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/chart-of-calculation-types/ChartsOfCalculationTypes/ВидыНачислений.xml b/tests/skills/cases/meta-compile/snapshots/chart-of-calculation-types/ChartsOfCalculationTypes/ВидыНачислений.xml
index ebc76ee0..580202c5 100644
--- a/tests/skills/cases/meta-compile/snapshots/chart-of-calculation-types/ChartsOfCalculationTypes/ВидыНачислений.xml
+++ b/tests/skills/cases/meta-compile/snapshots/chart-of-calculation-types/ChartsOfCalculationTypes/ВидыНачислений.xml
@@ -252,7 +252,7 @@
Auto
InDialog
- true
+ false
BothWays
ChartOfCalculationTypes.ВидыНачислений.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml b/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml
index da7389fe..96f9fb02 100644
--- a/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml
+++ b/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml
@@ -277,7 +277,7 @@
Auto
InDialog
- true
+ false
BothWays
ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Description
diff --git a/tests/skills/cases/meta-compile/snapshots/exchange-plan/ExchangePlans/ОбменСФилиалами.xml b/tests/skills/cases/meta-compile/snapshots/exchange-plan/ExchangePlans/ОбменСФилиалами.xml
index 4ef5524e..142f6198 100644
--- a/tests/skills/cases/meta-compile/snapshots/exchange-plan/ExchangePlans/ОбменСФилиалами.xml
+++ b/tests/skills/cases/meta-compile/snapshots/exchange-plan/ExchangePlans/ОбменСФилиалами.xml
@@ -226,7 +226,7 @@
true
false
- true
+ false
BothWays
ExchangePlan.ОбменСФилиалами.StandardAttribute.Description