diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1
index c13096c2..d337b23b 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.101 — Compile 1C managed form from JSON or object metadata
+# form-compile v1.103 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -2564,6 +2564,18 @@ function Emit-Element {
"ПолеИндикатора" = "progressBar"
"TrackBarField" = "trackBar"
"ПолеПолосыРегулирования" = "trackBar"
+ "ChartField" = "chart"
+ "ПолеДиаграммы" = "chart"
+ "GanttChartField" = "ganttChart"
+ "ПолеДиаграммыГанта" = "ganttChart"
+ "GraphicalSchemaField" = "graphicalSchema"
+ "ПолеГрафическойСхемы" = "graphicalSchema"
+ "PlannerField" = "planner"
+ "ПолеПланировщика" = "planner"
+ "PeriodField" = "periodField"
+ "ПолеПериода" = "periodField"
+ "DendrogramField" = "dendrogram"
+ "ПолеДендрограммы" = "dendrogram"
}
foreach ($pair in $synonyms.GetEnumerator()) {
if ($null -ne $el.PSObject.Properties[$pair.Key] -and $null -eq $el.PSObject.Properties[$pair.Value]) {
@@ -2596,7 +2608,7 @@ function Emit-Element {
# у popup/button/cmdBar. Тип-ключ владельца (popup/button/…) должен выиграть.
# pages/page ПЕРЕД group: у Page/Pages ключ 'group' — это направление раскладки детей
# (Horizontal), а не тип UsualGroup. Реальная UsualGroup ключа page/pages не несёт.
- foreach ($key in @("columnGroup","buttonGroup","pages","page","group","input","check","radio","label","labelField","table","button","calendar","cmdBar","popup","searchString","viewStatus","searchControl","picField","picture","spreadsheet","html","textDoc","formattedDoc","progressBar","trackBar")) {
+ foreach ($key in @("columnGroup","buttonGroup","pages","page","group","input","check","radio","label","labelField","table","button","calendar","cmdBar","popup","searchString","viewStatus","searchControl","picField","picture","spreadsheet","html","textDoc","formattedDoc","progressBar","trackBar","chart","ganttChart","graphicalSchema","planner","periodField","dendrogram")) {
if ($el.$key -ne $null) {
$typeKey = $key
break
@@ -2613,8 +2625,9 @@ function Emit-Element {
# type keys
"group"=1;"columnGroup"=1;"buttonGroup"=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
- # спец-поля (документ/датчик) — тип-ключи + типоспец. скаляры
+ # спец-поля (документ/датчик/диаграмма) — тип-ключи + типоспец. скаляры
"spreadsheet"=1;"html"=1;"textDoc"=1;"formattedDoc"=1;"progressBar"=1;"trackBar"=1
+ "chart"=1;"ganttChart"=1;"graphicalSchema"=1;"planner"=1;"periodField"=1;"dendrogram"=1;"ganttTable"=1
"showPercent"=1;"largeStep"=1;"markingStep"=1;"step"=1
"horizontalScrollBar"=1;"viewScalingMode"=1;"output"=1;"selectionShowMode"=1;"protection"=1
"edit"=1;"showGrid"=1;"showGroups"=1;"showHeaders"=1;"showRowAndColumnNames"=1;"showCellNames"=1
@@ -2739,6 +2752,12 @@ function Emit-Element {
"formattedDoc" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "FormattedDocumentField" -typeKey "formattedDoc" }
"progressBar" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "ProgressBarField" -typeKey "progressBar" }
"trackBar" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "TrackBarField" -typeKey "trackBar" }
+ "chart" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "ChartField" -typeKey "chart" }
+ "graphicalSchema" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "GraphicalSchemaField" -typeKey "graphicalSchema" }
+ "planner" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "PlannerField" -typeKey "planner" }
+ "periodField" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "PeriodField" -typeKey "periodField" }
+ "dendrogram" { Emit-SimpleField -el $el -name $name -id $id -indent $indent -xmlTag "DendrogramField" -typeKey "dendrogram" }
+ "ganttChart" { Emit-GanttChart -el $el -name $name -id $id -indent $indent }
}
}
@@ -4302,6 +4321,26 @@ function Emit-SimpleField {
X "$indent$xmlTag>"
}
+# GanttChartField — скелет поля + вложенная
(полноценная таблица, через Emit-Element).
+# Порядок (по корпусу): path/title/flags/titleLocation/layout/appearance, companions, Table, events.
+function Emit-GanttChart {
+ 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
+ if ($el.titleLocation) { X "$inner$(Map-TitleLoc "$($el.titleLocation)")" }
+ Emit-Layout -el $el -indent $inner
+ Emit-Appearance -el $el -indent $inner -profile 'field'
+ Emit-CompanionPanel -tag "ContextMenu" -name "${name}КонтекстноеМеню" -indent $inner -panel $el.contextMenu
+ Emit-Companion -tag "ExtendedTooltip" -name "${name}РасширеннаяПодсказка" -indent $inner -content $el.extendedTooltip
+ # Вложенная таблица диаграммы Ганта (стандартный Table — переиспользуем Emit-Element)
+ if ($el.ganttTable) { Emit-Element -el $el.ganttTable -indent $inner }
+ Emit-Events -el $el -elementName $name -indent $inner -typeKey "ganttChart"
+ X "$indent"
+}
+
function Emit-CommandBar {
param($el, [string]$name, [int]$id, [string]$indent)
diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py
index 1297b97b..35fee7c8 100644
--- a/.claude/skills/form-compile/scripts/form-compile.py
+++ b/.claude/skills/form-compile/scripts/form-compile.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# form-compile v1.101 — Compile 1C managed form from JSON or object metadata
+# form-compile v1.103 — Compile 1C managed form from JSON or object metadata
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import copy
@@ -1832,8 +1832,9 @@ KNOWN_KEYS = {
"choiceForm", "choiceHistoryOnInput", "footerDataPath", "minValue", "maxValue",
# Button — пометка toggle-кнопки
"checked",
- # спец-поля (документ/датчик) — тип-ключи + типоспец. скаляры
+ # спец-поля (документ/датчик/диаграмма) — тип-ключи + типоспец. скаляры
"spreadsheet", "html", "textDoc", "formattedDoc", "progressBar", "trackBar",
+ "chart", "ganttChart", "graphicalSchema", "planner", "periodField", "dendrogram", "ganttTable",
"showPercent", "largeStep", "markingStep", "step",
"horizontalScrollBar", "viewScalingMode", "output", "selectionShowMode", "protection",
"edit", "showGrid", "showGroups", "showHeaders", "showRowAndColumnNames", "showCellNames",
@@ -1853,7 +1854,8 @@ KNOWN_KEYS = {
# (Horizontal), а не тип UsualGroup. Реальная UsualGroup ключа page/pages не несёт.
TYPE_KEYS = ["columnGroup", "buttonGroup", "pages", "page", "group", "input", "check", "radio", "label", "labelField", "table",
"button", "calendar", "cmdBar", "popup", "searchString", "viewStatus", "searchControl", "picField", "picture",
- "spreadsheet", "html", "textDoc", "formattedDoc", "progressBar", "trackBar"]
+ "spreadsheet", "html", "textDoc", "formattedDoc", "progressBar", "trackBar",
+ "chart", "ganttChart", "graphicalSchema", "planner", "periodField", "dendrogram"]
# Synonyms: model often writes XML name or Russian (ПолеПереключателя/RadioButtonField → radio)
ELEMENT_TYPE_SYNONYMS = {
@@ -1919,6 +1921,18 @@ ELEMENT_TYPE_SYNONYMS = {
"ПолеИндикатора": "progressBar",
"TrackBarField": "trackBar",
"ПолеПолосыРегулирования": "trackBar",
+ "ChartField": "chart",
+ "ПолеДиаграммы": "chart",
+ "GanttChartField": "ganttChart",
+ "ПолеДиаграммыГанта": "ganttChart",
+ "GraphicalSchemaField": "graphicalSchema",
+ "ПолеГрафическойСхемы": "graphicalSchema",
+ "PlannerField": "planner",
+ "ПолеПланировщика": "planner",
+ "PeriodField": "periodField",
+ "ПолеПериода": "periodField",
+ "DendrogramField": "dendrogram",
+ "ПолеДендрограммы": "dendrogram",
}
# Тип-синонимы, применяемые ТОЛЬКО к строковому значению (имя элемента); объект/массив
@@ -3163,6 +3177,12 @@ def emit_element(lines, el, indent, in_cmd_bar=False):
'formattedDoc': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'FormattedDocumentField', 'formattedDoc'),
'progressBar': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'ProgressBarField', 'progressBar'),
'trackBar': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'TrackBarField', 'trackBar'),
+ 'chart': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'ChartField', 'chart'),
+ 'graphicalSchema': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'GraphicalSchemaField', 'graphicalSchema'),
+ 'planner': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'PlannerField', 'planner'),
+ 'periodField': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'PeriodField', 'periodField'),
+ 'dendrogram': lambda lines, el, name, eid, indent: emit_simple_field(lines, el, name, eid, indent, 'DendrogramField', 'dendrogram'),
+ 'ganttChart': emit_gantt_chart,
}
emitter = emitters.get(type_key)
@@ -3952,6 +3972,27 @@ def emit_simple_field(lines, el, name, eid, indent, xml_tag, type_key):
lines.append(f'{indent}{xml_tag}>')
+def emit_gantt_chart(lines, el, name, eid, indent):
+ # GanttChartField — скелет поля + вложенная (полноценная таблица, через emit_element).
+ lines.append(f'{indent}')
+ inner = f'{indent}\t'
+ if el.get('path'):
+ lines.append(f'{inner}{el["path"]}')
+ emit_title(lines, el, name, inner, auto=not el.get('path'))
+ emit_common_flags(lines, el, inner)
+ if el.get('titleLocation'):
+ lines.append(f'{inner}{map_title_loc(el["titleLocation"])}')
+ emit_layout(lines, el, inner)
+ emit_appearance(lines, el, inner, 'field')
+ emit_companion_panel(lines, 'ContextMenu', f'{name}КонтекстноеМеню', inner, el.get('contextMenu'))
+ emit_companion(lines, 'ExtendedTooltip', f'{name}РасширеннаяПодсказка', inner, el.get('extendedTooltip'))
+ # Вложенная таблица диаграммы Ганта (стандартный Table — переиспользуем emit_element)
+ if el.get('ganttTable'):
+ emit_element(lines, el['ganttTable'], inner)
+ emit_events(lines, el, name, inner, 'ganttChart')
+ lines.append(f'{indent}')
+
+
def emit_calendar(lines, el, name, eid, indent):
lines.append(f'{indent}')
inner = f'{indent}\t'
diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1
index 87ededa7..496979ac 100644
--- a/.claude/skills/form-decompile/scripts/form-decompile.ps1
+++ b/.claude/skills/form-decompile/scripts/form-decompile.ps1
@@ -1,4 +1,4 @@
-# form-decompile v0.77 — Decompile 1C managed Form.xml to JSON DSL (draft)
+# form-decompile v0.79 — Decompile 1C managed Form.xml to JSON DSL (draft)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
param(
@@ -147,6 +147,15 @@ function Fail-Ring3 {
}
# ConditionalAppearance со scope (привязка к области) пока не воспроизводим — fail-ring3 только в этом случае.
foreach ($el in $xmlDoc.SelectNodes("//*[local-name()='ConditionalAppearance']/*[local-name()='item']/*[local-name()='scope'][node()]")) { Fail-Ring3 -kind "ConditionalAppearance со scope" -loc "form/ConditionalAppearance/item/scope" }
+# Реквизит с design-time конфигурацией ( chart-типа: Диаграмма/ДиаграммаГанта/… —
+# d4p1:GanttChart и т.п.). Поддержаны только TypeDescription (valueType) и DynamicList; прочие
+# (встроенная конфигурация диаграммы) пока НЕ воспроизводим → честный скип, чтобы не потерять молча.
+foreach ($s in $xmlDoc.SelectNodes("//*[local-name()='Attribute']/*[local-name()='Settings']")) {
+ $st = $s.GetAttribute("type", $NS_XSI)
+ if ($st -and $st -notmatch 'TypeDescription$' -and $st -notmatch 'DynamicList$') {
+ Fail-Ring3 -kind "Attribute>Settings типа '$st' (design-time конфигурация, напр. диаграмма)" -loc "Attribute/Settings"
+ }
+}
# --- 1c. Compact JSON serializer (созвучно skd-decompile: 2-проб. indent, inline в пределах lineLimit) ---
function Convert-StringToJsonLiteral {
@@ -1187,7 +1196,9 @@ $ELEMENT_KEY = @{
'Table'='table'; 'Pages'='pages'; 'Page'='page'; 'Button'='button'; 'CommandBar'='cmdBar'; 'Popup'='popup';
'SearchStringAddition'='searchString'; 'ViewStatusAddition'='viewStatus'; 'SearchControlAddition'='searchControl';
'SpreadSheetDocumentField'='spreadsheet'; 'HTMLDocumentField'='html'; 'TextDocumentField'='textDoc';
- 'FormattedDocumentField'='formattedDoc'; 'ProgressBarField'='progressBar'; 'TrackBarField'='trackBar'
+ 'FormattedDocumentField'='formattedDoc'; 'ProgressBarField'='progressBar'; 'TrackBarField'='trackBar';
+ 'ChartField'='chart'; 'GraphicalSchemaField'='graphicalSchema'; 'PlannerField'='planner';
+ 'PeriodField'='periodField'; 'DendrogramField'='dendrogram'; 'GanttChartField'='ganttChart'
}
# Простые скаляры элемента (pass-through, зеркало $script:genericScalars компилятора). kind bool/value.
@@ -1761,6 +1772,18 @@ function Decompile-Element {
'FormattedDocumentField' { Decompile-SimpleField $obj $node $name $key }
'ProgressBarField' { Decompile-SimpleField $obj $node $name $key; Add-GaugeScalars $obj $node @('MinValue','MaxValue') }
'TrackBarField' { Decompile-SimpleField $obj $node $name $key; Add-GaugeScalars $obj $node @('MinValue','MaxValue','LargeStep','MarkingStep','Step') }
+ 'ChartField' { Decompile-SimpleField $obj $node $name $key }
+ 'GraphicalSchemaField' { Decompile-SimpleField $obj $node $name $key }
+ 'PlannerField' { Decompile-SimpleField $obj $node $name $key }
+ 'PeriodField' { Decompile-SimpleField $obj $node $name $key }
+ 'DendrogramField' { Decompile-SimpleField $obj $node $name $key }
+ 'GanttChartField' {
+ Decompile-SimpleField $obj $node $name $key
+ # Вложенная (полноценная таблица) — переиспользуем общий Decompile-Element.
+ # Ключ ganttTable (не 'table' — во избежание коллизии с тип-ключом таблицы в диспетчере).
+ $tblNode = $node.SelectSingleNode("lf:Table", $ns)
+ if ($tblNode) { $obj['ganttTable'] = Decompile-Element $tblNode }
+ }
}
# DisplayImportance — атрибут открывающего тега (адаптивная важность отображения), захват «как есть».
$di = $node.GetAttribute("DisplayImportance"); if ($di) { $obj['displayImportance'] = $di }
diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md
index 88e81316..d7d73b54 100644
--- a/docs/form-dsl-spec.md
+++ b/docs/form-dsl-spec.md
@@ -761,15 +761,28 @@ flags/layout/оформление/companions/события общий), плю
| `formattedDoc` | FormattedDocumentField | `fd:FormattedDocument` | `editMode` |
| `progressBar` | ProgressBarField | число | `showPercent`, `minValue`/`maxValue` (без `xsi:type`, ≠ типизированных у `input`) |
| `trackBar` | TrackBarField | число | `minValue`/`maxValue`/`largeStep`/`markingStep`/`step` (числовые), `markingAppearance` |
+| `chart` | ChartField | `d5p1:Chart` (Диаграмма) | — (скелет; `TitleFont`/`MaxWidth` через общий механизм) |
+| `ganttChart` | GanttChartField | `d5p1:GanttChart` (ДиаграммаГанта) | `ganttTable` — вложенная `` (полноценная таблица, та же грамматика) |
+| `graphicalSchema` | GraphicalSchemaField | `d5p1:FlowchartContextType` (ГрафическаяСхема) | `edit`, `warningOnEditRepresentation` |
+| `planner` | PlannerField | `pl:Planner` (Планировщик) | — |
+| `periodField` | PeriodField | `v8:StandardPeriod` (Период) | — |
+| `dendrogram` | DendrogramField | (Дендрограмма) | — |
```json
{ "spreadsheet": "ТаблицаОтчета", "path": "ТаблицаОтчета", "titleLocation": "none", "readOnly": true, "output": "Disable", "protection": true }
{ "trackBar": "Масштаб", "path": "Масштаб", "minValue": 20, "maxValue": 400, "markingStep": 20 }
+{ "ganttChart": "Ганта", "path": "Ганта", "ganttTable": { "table": "ТаблицаГанта", "path": "Ганта", "height": 3 } }
```
-Forgiving-синонимы типа: XML-имя (`SpreadSheetDocumentField`) и рус. (`ПолеТабличногоДокумента`, `ПолеИндикатора`, …).
+Forgiving-синонимы типа: XML-имя (`SpreadSheetDocumentField`) и рус. (`ПолеТабличногоДокумента`, `ПолеИндикатора`, `ПолеДиаграммы`, `ПолеДиаграммыГанта`, …).
Скаляры `output`/`protection`/… — generic pass-through; bool как `true`/`false`, enum verbatim.
+> **Ограничение — design-time конфигурация диаграмм/планировщика.** Реквизит chart-типа может нести
+> `` — встроенный конфиг диаграммы (серии/оси/цвета/планировщик).
+> Planner несёт Settings ВСЕГДА (даже дефолтный), Chart/Gantt — при design-time настройке. Этот блок пока НЕ
+> воспроизводится → декомпилятор делает честный fail-ring3 (не теряет молча). Поля без Settings (диаграмма,
+> заполняемая в коде; график-схема; период) роундтрипятся полностью.
+
#### autoCmdBar — командная панель формы
Командная панель самой формы (``). Задаётся как элемент в `elements`; компилятор автоматически вынимает его из дерева. Нужен только если в панель помещаются **явные** кнопки/группы или меняется выравнивание/автозаполнение — иначе панель формируется автоматически.
diff --git a/tests/skills/cases/form-compile/chart-fields.json b/tests/skills/cases/form-compile/chart-fields.json
new file mode 100644
index 00000000..fccdcbb6
--- /dev/null
+++ b/tests/skills/cases/form-compile/chart-fields.json
@@ -0,0 +1,33 @@
+{
+ "name": "Форма с полями диаграмм (без design-time Settings)",
+ "preRun": [
+ {
+ "script": "meta-compile/scripts/meta-compile",
+ "input": { "type": "DataProcessor", "name": "Диаграммы" },
+ "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
+ },
+ {
+ "script": "form-add/scripts/form-add",
+ "args": { "-ObjectPath": "{workDir}/DataProcessors/Диаграммы.xml", "-FormName": "Форма" }
+ }
+ ],
+ "params": { "outputPath": "DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml" },
+ "validatePath": "DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml",
+ "input": {
+ "title": "Диаграммы",
+ "elements": [
+ { "chart": "Диаграмма", "path": "Диаграмма", "titleLocation": "none" },
+ { "graphicalSchema": "Схема", "path": "Схема", "titleLocation": "none", "edit": false },
+ { "periodField": "Период", "path": "Период", "titleLocation": "none" },
+ { "ganttChart": "Ганта", "path": "Ганта", "titleLocation": "none",
+ "ganttTable": { "table": "ТаблицаГанта", "path": "Ганта", "height": 3 } }
+ ],
+ "attributes": [
+ { "name": "Объект", "type": "DataProcessorObject.Диаграммы", "main": true },
+ { "name": "Диаграмма", "type": "d5p1:Chart" },
+ { "name": "Схема", "type": "d5p1:FlowchartContextType" },
+ { "name": "Период", "type": "v8:StandardPeriod" },
+ { "name": "Ганта", "type": "d5p1:GanttChart" }
+ ]
+ }
+}
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/Configuration.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/Configuration.xml
new file mode 100644
index 00000000..a8f25c62
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/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/chart-fields/DataProcessors/Диаграммы.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы.xml
new file mode 100644
index 00000000..559d0fa9
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+
+ Диаграммы
+
+
+ ru
+ Диаграммы
+
+
+
+ false
+ DataProcessor.Диаграммы.Form.Форма
+
+ false
+
+
+
+
+
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ManagerModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма.xml
new file mode 100644
index 00000000..dffeea01
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml
new file mode 100644
index 00000000..5b97afc2
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml
@@ -0,0 +1,121 @@
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form/Module.bsl
new file mode 100644
index 00000000..8ead4cec
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/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/chart-fields/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/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/chart-fields/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/chart-fields/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/form-compile/snapshots/chart-fields/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file