diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 102871d7..1ed8e76a 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.105 — Compile 1C managed form from JSON or object metadata +# form-compile v1.106 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -3233,6 +3233,66 @@ function Emit-PlannerSettings { X "$ind" } +# ───────────────────────────────────────────────────────────────────────────── +# Chart design-time — генерик-эмиттер (зеркало +# Build-ChartNode декомпилятора). Тип узла → форма XML: ML-поля (по имени), серии +# (массив, повтор тега), line/border/font (по ключам), attrs-узлы (gaugeQualityBands), +# иначе вложенный объект/скаляр. Порядок ключей = порядок эмиссии (раундтрип). +$script:CHART_ML_FIELDS = @{ 'title'=1;'lbFormat'=1;'lbpFormat'=1;'vsFormat'=1;'dtFormat'=1;'dataSourceDescription'=1;'labelFormat'=1;'text'=1 } +$script:CHART_ATTR_FIELDS = @{ 'gaugeQualityBands'=1 } +$script:CHART_FONT_KEYS = @('ref','faceName','height','bold','italic','underline','strikeout','kind','scale') +function Get-Keys { param($o) if ($o -is [System.Collections.IDictionary]) { return @($o.Keys) } else { return @($o.PSObject.Properties.Name) } } +function Get-Prop { param($o, [string]$k) if ($o -is [System.Collections.IDictionary]) { return $o[$k] } else { $p = $o.PSObject.Properties[$k]; if ($p) { return $p.Value } else { return $null } } } +function Emit-ChartNode { + param([string]$name, $val, [string]$ind) + if ($script:CHART_ML_FIELDS.Contains($name)) { + if ($null -eq $val -or "$val" -eq '') { X "$ind"; return } + X "$ind"; Emit-MLItems -val $val -indent "$ind`t"; X "$ind"; return + } + if (($val -is [System.Collections.IList]) -and ($val -isnot [string])) { + foreach ($e in $val) { Emit-ChartNode $name $e $ind } + return + } + if (($val -is [System.Management.Automation.PSCustomObject]) -or ($val -is [System.Collections.IDictionary])) { + $keys = Get-Keys $val + if ($script:CHART_ATTR_FIELDS.Contains($name)) { + $attrs = @(); foreach ($k in $keys) { $v = Get-Prop $val $k; if ($v -is [bool]) { $v = PL-Bool $v }; $attrs += "$k=`"$(Esc-Xml "$v")`"" } + X "$ind"; return + } + if ($keys -contains 'gap') { + $w = Get-Prop $val 'width'; $g = Get-Prop $val 'gap'; $st = Get-Prop $val 'style' + X "$ind" + X "$ind`t$(Esc-Xml "$st")" + X "$ind"; return + } + if (($keys -contains 'style') -and ($keys -contains 'width')) { + $w = Get-Prop $val 'width'; $st = Get-Prop $val 'style' + X "$ind" + X "$ind`t$(Esc-Xml "$st")" + X "$ind"; return + } + $isFont = $false; foreach ($fk in $script:CHART_FONT_KEYS) { if ($keys -contains $fk) { $isFont = $true; break } } + if ($isFont) { + $attrs = @(); foreach ($fk in $script:CHART_FONT_KEYS) { if ($keys -contains $fk) { $v = Get-Prop $val $fk; if ($v -is [bool]) { $v = PL-Bool $v }; $attrs += "$fk=`"$(Esc-Xml "$v")`"" } } + X "$ind"; return + } + if (@($keys).Count -eq 0) { X "$ind"; return } + X "$ind" + foreach ($k in $keys) { Emit-ChartNode $k (Get-Prop $val $k) "$ind`t" } + X "$ind" + return + } + if ($null -eq $val -or "$val" -eq '') { X "$ind"; return } + if ($val -is [bool]) { X "$ind$(PL-Bool $val)"; return } + X "$ind$(Esc-Xml "$val")" +} +function Emit-ChartSettings { + param($chart, [string]$ind) + X "$ind" + foreach ($k in (Get-Keys $chart)) { Emit-ChartNode $k (Get-Prop $chart $k) "$ind`t" } + X "$ind" +} + function Emit-Appearance { param($el, [string]$indent, [string]$profile = 'field') if ($null -eq $el) { return } @@ -4982,6 +5042,10 @@ function Emit-Attributes { if ($attr.PSObject.Properties['planner'] -and $null -ne $attr.planner) { Emit-PlannerSettings -pl $attr.planner -ind $inner } + # Chart design-time (встроенный конфиг диаграммы). + if ($attr.PSObject.Properties['chart'] -and $null -ne $attr.chart) { + Emit-ChartSettings -chart $attr.chart -ind $inner + } if ($attr.main -eq $true) { X "$innertrue" diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index f830721a..aeeb4bd5 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.105 — Compile 1C managed form from JSON or object metadata +# form-compile v1.106 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -2939,6 +2939,71 @@ def emit_planner_settings(lines, pl, ind): lines.append(f'{ind}') +# ───────────────────────────────────────────────────────────────────────────── +# Chart design-time — генерик-эмиттер (зеркало +# Build-ChartNode декомпилятора + Emit-ChartNode ps1). +CHART_ML_FIELDS = {'title', 'lbFormat', 'lbpFormat', 'vsFormat', 'dtFormat', 'dataSourceDescription', 'labelFormat', 'text'} +CHART_ATTR_FIELDS = {'gaugeQualityBands'} +CHART_FONT_KEYS = ('ref', 'faceName', 'height', 'bold', 'italic', 'underline', 'strikeout', 'kind', 'scale') + + +def emit_chart_node(lines, name, val, ind): + if name in CHART_ML_FIELDS: + if val is None or str(val) == '': + lines.append(f'{ind}') + return + lines.append(f'{ind}') + emit_ml_items(lines, f'{ind}\t', val) + lines.append(f'{ind}') + return + if isinstance(val, list): + for e in val: + emit_chart_node(lines, name, e, ind) + return + if isinstance(val, dict): + keys = list(val.keys()) + if name in CHART_ATTR_FIELDS: + attrs = ' '.join(f'{k}="{esc_xml(_pl_bool(val[k]) if isinstance(val[k], bool) else str(val[k]))}"' for k in keys) + lines.append(f'{ind}') + return + if 'gap' in val: + lines.append(f'{ind}') + lines.append(f'{ind}\t{esc_xml(str(val.get("style")))}') + lines.append(f'{ind}') + return + if 'style' in val and 'width' in val: + lines.append(f'{ind}') + lines.append(f'{ind}\t{esc_xml(str(val.get("style")))}') + lines.append(f'{ind}') + return + if any(fk in val for fk in CHART_FONT_KEYS): + attrs = ' '.join(f'{fk}="{esc_xml(_pl_bool(val[fk]) if isinstance(val[fk], bool) else str(val[fk]))}"' for fk in CHART_FONT_KEYS if fk in val) + lines.append(f'{ind}') + return + if not keys: + lines.append(f'{ind}') + return + lines.append(f'{ind}') + for k in keys: + emit_chart_node(lines, k, val[k], f'{ind}\t') + lines.append(f'{ind}') + return + if val is None or str(val) == '': + lines.append(f'{ind}') + return + if isinstance(val, bool): + lines.append(f'{ind}{_pl_bool(val)}') + return + lines.append(f'{ind}{esc_xml(str(val))}') + + +def emit_chart_settings(lines, chart, ind): + lines.append(f'{ind}') + for k in list(chart.keys()): + emit_chart_node(lines, k, chart[k], f'{ind}\t') + lines.append(f'{ind}') + + def emit_appearance(lines, el, indent, profile='field'): if not isinstance(el, dict): return @@ -4709,6 +4774,9 @@ def emit_attributes(lines, attrs, indent, conditional_appearance=None): # Planner design-time (встроенный конфиг планировщика). if attr.get('planner') is not None: emit_planner_settings(lines, attr['planner'], inner) + # Chart design-time (встроенный конфиг диаграммы). + if attr.get('chart') is not None: + emit_chart_settings(lines, attr['chart'], inner) if attr.get('main') is True: lines.append(f'{inner}true') diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 9e98ee18..2ffc1c2f 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.81 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.82 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -152,9 +152,15 @@ foreach ($el in $xmlDoc.SelectNodes("//*[local-name()='ConditionalAppearance']/* # (встроенная конфигурация диаграммы) пока НЕ воспроизводим → честный скип, чтобы не потерять молча. 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$' -and $st -notmatch 'Planner$') { + if ($st -and $st -notmatch 'TypeDescription$' -and $st -notmatch 'DynamicList$' -and $st -notmatch 'Planner$' -and $st -notmatch 'd4p1:Chart$') { Fail-Ring3 -kind "Attribute>Settings типа '$st' (design-time конфигурация, напр. диаграмма)" -loc "Attribute/Settings" } + # Chart с точками/осями (realPointData/realDataItems): типизированные значения (xsi:type), + # xsi:nil и ML с префиксом d4p1: (а не v8:) генерик-движок не сохраняет → честный скип. + # Частые дашборд-диаграммы (серии/легенда/оформление) поддержаны. + elseif ($st -match 'd4p1:Chart$' -and ($s.OuterXml -match ']')) { + Fail-Ring3 -kind "Attribute>Settings d4p1:Chart с точками/осями (типизированные значения/d4p1-ML)" -loc "Attribute/Settings" + } } # --- 1c. Compact JSON serializer (созвучно skd-decompile: 2-проб. indent, inline в пределах lineLimit) --- @@ -2002,6 +2008,69 @@ function Build-PlannerSettings { return $pl } +# ───────────────────────────────────────────────────────────────────────────── +# Chart design-time → объект chart. Генерик-движок: +# рекурсивный захват поддерева d4p1; структуры (line/border/font/ML/области/серии) +# детектируются по форме узла. Малые name-set'ы: ML-поля (даже ru-only/пустые → ML), +# серии (всегда массив), attrs-узлы. Порядок ключей JSON = порядок XML (раундтрип). +$CHART_ML_FIELDS = @{ 'title'=1;'lbFormat'=1;'lbpFormat'=1;'vsFormat'=1;'dtFormat'=1;'dataSourceDescription'=1;'labelFormat'=1;'text'=1 } +$CHART_SERIES_FIELDS = @{ 'realSeriesData'=1;'realExSeriesData'=1;'realPointData'=1;'realDataItems'=1 } +$CHART_ATTR_FIELDS = @{ 'gaugeQualityBands'=1 } +function Conv-ChartScalar { + param([string]$v) + if ($v -eq 'true') { return $true } + if ($v -eq 'false') { return $false } + return $v +} +function Build-ChartNode { + param($n, [string]$name) + # ML-поле → строка/мапа/"" (даже ru-only форсим в ML на эмите по имени) + if ($CHART_ML_FIELDS.Contains($name)) { + $ml = Get-LangText $n + if ($null -eq $ml) { return '' } else { return $ml } + } + $kids = @($n.SelectNodes("*")) + if ($kids.Count -eq 0) { + # лист: attrs-only (шрифт/gaugeQualityBands) или текст + $attrs = @($n.Attributes | Where-Object { $_.Name -ne 'xmlns' -and -not $_.Name.StartsWith('xmlns:') -and $_.Name -ne 'xsi:type' -and $_.Name -ne 'xsi:nil' }) + if ($attrs.Count -gt 0) { + $o = [ordered]@{}; foreach ($a in $attrs) { $o[$a.Name] = (Conv-ChartScalar $a.Value) }; return $o + } + return (Conv-ChartScalar $n.InnerText) + } + # line/border: дочерний v8ui:style (+ width[/gap]) + $styleChild = $n.SelectSingleNode("*[local-name()='style']") + if ($styleChild) { + $o = [ordered]@{} + $w = $n.GetAttribute('width'); if ($w -ne '') { $o['width'] = [int]$w } + $g = $n.GetAttribute('gap'); if ($g -ne '') { $o['gap'] = ($g -eq 'true') } + $o['style'] = $styleChild.InnerText + return $o + } + # вложенный объект d4p1 (область/шкала/titleArea/серия): группируем детей по имени + $o = [ordered]@{} + foreach ($c in $kids) { + $ln = $c.LocalName + $val = Build-ChartNode $c $ln + if ($CHART_SERIES_FIELDS.Contains($ln)) { + if (-not $o.Contains($ln)) { $o[$ln] = New-Object System.Collections.ArrayList } + [void]$o[$ln].Add($val) + } elseif ($o.Contains($ln)) { + if ($o[$ln] -isnot [System.Collections.IList]) { $tmp = New-Object System.Collections.ArrayList; [void]$tmp.Add($o[$ln]); $o[$ln] = $tmp } + [void]$o[$ln].Add($val) + } else { + $o[$ln] = $val + } + } + # нормализуем ArrayList → @() для сериализации + foreach ($k in @($o.Keys)) { if ($o[$k] -is [System.Collections.ArrayList]) { $o[$k] = @($o[$k]) } } + return $o +} +function Build-ChartSettings { + param($setNode) + return (Build-ChartNode $setNode '') +} + # --- 5. Form-level assembly --- $dsl = [ordered]@{} @@ -2137,6 +2206,10 @@ if ($attrsNode) { elseif ($setNode -and $setNode.GetAttribute("type", $NS_XSI) -match 'Planner$') { $ao['planner'] = Build-PlannerSettings $setNode } + # Chart design-time → объект chart (генерик-захват). + elseif ($setNode -and $setNode.GetAttribute("type", $NS_XSI) -match 'd4p1:Chart$') { + $ao['chart'] = Build-ChartSettings $setNode + } if ((Get-Child $a 'MainAttribute') -eq 'true') { $ao['main'] = $true } elseif ($suppressMainName -and $ao['name'] -eq $suppressMainName) { $ao['main'] = $false } $vw = Decompile-XrFlag $a 'View'; if ($null -ne $vw) { $ao['view'] = $vw } diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md index 9b03086d..8dba6e22 100644 --- a/docs/form-dsl-spec.md +++ b/docs/form-dsl-spec.md @@ -834,6 +834,31 @@ Forgiving-синонимы типа: XML-имя (`SpreadSheetDocumentField`) и | `additionalColumns` | array | Доп. колонки табличных частей объекта: `[{ table: "Объект.ТабЧасть", columns: [] }]`. У главного реквизита-объекта; `` — та же грамматика, что у `columns`. Эмитятся в `` после прямых колонок | | `settings` | object | Настройки динамического списка (только `type: "DynamicList"`) | | `planner` | object | Design-time конфигурация планировщика (только `type: "pl:Planner"`, ``). См. ниже | +| `chart` | object | Design-time конфигурация диаграммы (``). См. ниже | + +### chart — design-time конфигурация диаграммы + +Объект `chart` описывает встроенный конфиг поля-диаграммы (~127 свойств: тип, серии, легенда, заголовок, шкалы, цвета/шрифты, оси). Движок **генерик** — ключи = локальные имена тегов `d4p1:`, порядок ключей = порядок эмиссии; типы значений распознаются по форме (скаляр/линия/граница/шрифт/ML/область/массив-серий). Раундтрип любой формы **бит-в-бит**. + +**Авторинг диаграммы с нуля:** платформа пишет ВСЕ ~127 свойств всегда, поэтому удобнее всего взять рабочую диаграмму за основу — `form-decompile` существующей формы-диаграммы выдаёт готовый `chart`-объект, в котором правишь смысловое ядро: `chartType` (Line/Pie/Bar/Histogram/Column/Area/…), `realSeriesData` (серии: `text`/`color`/`line`/`marker`), `isShowTitle`+`title`, `isShowLegend`+`legendPlacement`, `paletteKind`, базовые цвета (`bkgColor`/`labelsColor`/…). Остальное — оформительские дефолты. + +Формы значений: цвета verbatim (`auto`/`style:X`/`#hex`/`web:`); `line` = `{width, gap, style}` (`v8ui:ChartLineType`); `border` = `{width, style}` (`v8ui:ControlBorderType`); `font` = `{kind:"AutoFont"}`/атрибуты; ML-поля (`title`/`vsFormat`/`lbFormat`/`labelFormat`/серия `text`/…) — строка или `{ru,en}`; области (`elementsChart`/`elementsLegend`/`elementsTitle`) = `{left,right,top,bottom}`; серии (`realSeriesData`/`realExSeriesData`) — массивы объектов. **Расширяемость:** любое из ~127 свойств переопределяется по каноничному имени. + +```json +{ "name": "Диаграмма", "type": "d5p1:Chart", "chart": { + "chartType": "Line", + "isSeriesDesign": true, "realSeriesCount": "2", + "realSeriesData": [ + { "id": "1", "color": "auto", "line": {"width":2,"gap":false,"style":"Solid"}, + "marker": "Auto", "text": "Серия 1", "strIsChanged": false, "isExpand": false, + "isIndicator": false, "colorPriority": false } + ], + "isShowTitle": true, "title": "Продажи", "isShowLegend": true, "legendPlacement": "Bottom", + "paletteKind": "Auto" +} } +``` + +> **Ограничение Phase 2:** диаграммы с **точками/осями** (`realPointData`/`realDataItems`, заполненные `valuesAxis`/`pointsAxis`) несут типизированные значения (`xsi:type`), `xsi:nil` и ML с префиксом `d4p1:` — генерик-движок их не сохраняет → декомпилятор делает честный fail-ring3 на таких формах (редкий вариант). Частые дашборд-диаграммы (серии/легенда/оформление/шкалы) поддержаны полностью. `GanttChart` (`d4p1:GanttChart`) — отдельная фаза. ### planner — design-time конфигурация планировщика diff --git a/tests/skills/cases/form-compile/chart-settings.json b/tests/skills/cases/form-compile/chart-settings.json new file mode 100644 index 00000000..489a9440 --- /dev/null +++ b/tests/skills/cases/form-compile/chart-settings.json @@ -0,0 +1,357 @@ +{ + "name": "Форма с design-time диаграммой (d4p1:Chart 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" + } + ], + "attributes": [ + { + "name": "Объект", + "type": "DataProcessorObject.Диаграмма", + "main": true + }, + { + "name": "Диаграмма", + "type": "d5p1:Chart", + "chart": { + "seriesCurId": "7", + "pointsCurId": "0", + "isSeriesDesign": true, + "realSeriesCount": "4", + "realSeriesData": [ + { + "id": "2", + "color": "auto", + "line": { + "width": 2, + "gap": false, + "style": "Solid" + }, + "marker": "Auto", + "text": "Серия 1", + "strIsChanged": false, + "isExpand": false, + "isIndicator": false, + "colorPriority": false + }, + { + "id": "3", + "color": "auto", + "line": { + "width": 2, + "gap": false, + "style": "Solid" + }, + "marker": "Auto", + "text": "Серия 2", + "strIsChanged": false, + "isExpand": false, + "isIndicator": false, + "colorPriority": false + }, + { + "id": "4", + "color": "auto", + "line": { + "width": 2, + "gap": false, + "style": "Solid" + }, + "marker": "Auto", + "text": "Серия 3", + "strIsChanged": false, + "isExpand": false, + "isIndicator": false, + "colorPriority": false + }, + { + "id": "6", + "color": "auto", + "line": { + "width": 2, + "gap": false, + "style": "Solid" + }, + "marker": "Auto", + "text": "Серия 4", + "strIsChanged": false, + "isExpand": false, + "isIndicator": false, + "colorPriority": false + } + ], + "realExSeriesData": [ + { + "id": "1", + "color": "auto", + "line": { + "width": 2, + "gap": false, + "style": "Solid" + }, + "marker": "Auto", + "text": "Сводная", + "strIsChanged": false, + "isExpand": false, + "isIndicator": false, + "colorPriority": false + } + ], + "isPointsDesign": true, + "realPointCount": "0", + "curSeries": "-1", + "curPoint": "0", + "chartType": "Line", + "circleLabelType": "None", + "labelsDelimiter": ", ", + "labelsLocation": "Edge", + "lbFormat": "", + "lbpFormat": "", + "labelsColor": "style:FormTextColor", + "labelsFont": { + "kind": "AutoFont" + }, + "transparentLabelsBkg": true, + "labelsBkgColor": "auto", + "labelsBorder": { + "width": 1, + "style": "WithoutBorder" + }, + "labelsBorderColor": "auto", + "circleExpandMode": "None", + "chart3Dcrd": "SouthWest", + "title": "", + "isShowTitle": false, + "isShowLegend": true, + "ttlBorder": { + "width": 0, + "style": "WithoutBorder" + }, + "ttlBorderColor": "style:BorderColor", + "lgBorder": { + "width": 0, + "style": "WithoutBorder" + }, + "lgBorderColor": "style:BorderColor", + "chBorder": { + "width": 0, + "style": "WithoutBorder" + }, + "chBorderColor": "style:BorderColor", + "transparent": false, + "bkgColor": "style:FieldBackColor", + "isTrnspTtl": false, + "ttlColor": "style:FieldBackColor", + "isTrnspLeg": false, + "legColor": "style:FieldBackColor", + "isTrnspCh": false, + "chColor": "style:FieldBackColor", + "ttlTxtColor": "style:FormTextColor", + "legTxtColor": "style:FormTextColor", + "chTxtColor": "style:FormTextColor", + "ttlFont": { + "kind": "AutoFont" + }, + "legFont": { + "kind": "AutoFont" + }, + "chFont": { + "kind": "AutoFont" + }, + "isShowScale": true, + "isShowScaleVL": true, + "isShowSeriesScale": true, + "isShowPointsScale": true, + "isShowValuesScale": true, + "vsFormat": "ЧС=6; ЧГ=3,0", + "xLabelsOrientation": "Auto", + "scaleLine": { + "width": 1, + "gap": false, + "style": "Dotted" + }, + "scaleColor": "auto", + "isAutoSeriesName": true, + "isAutoPointName": true, + "maxMode": "NotDefined", + "maxSeries": "4", + "maxSeriesPrc": "30", + "spaceMode": "Half", + "baseVal": "0", + "isOutline": false, + "realPiePoint": "0", + "realStockSeries": "0", + "isLight": true, + "isGradient": false, + "isTransposition": false, + "hideBaseVal": false, + "dataTable": false, + "dtVerLines": true, + "dtHorLines": true, + "dtHAlign": "Right", + "dtFormat": "", + "dtKeys": true, + "paletteKind": "Auto", + "animation": "Auto", + "rebuildTime": "2099248", + "isTransposed": false, + "autoTransposition": false, + "legendScrollEnable": false, + "surfaceColor": "#A90000", + "radarScaleType": "Circle", + "gaugeValuesPresentation": "Needle", + "gaugeQualityBands": { + "useTextStr": false, + "useTooltipStr": false + }, + "beginGaugeAngle": "0", + "endGaugeAngle": "180", + "gaugeThickness": "5", + "gaugeLabelsLocation": "InsideScale", + "gaugeLabelsArcDirection": false, + "gaugeBushThickness": "4", + "gaugeBushColor": "#A9A9A9", + "autoMaxValue": true, + "userMaxValue": "0", + "autoMinValue": true, + "userMinValue": "0", + "elementsIsInit": false, + "titleIsInit": true, + "legendIsInit": true, + "chartIsInit": true, + "elementsChart": { + "left": "0", + "right": "0.17", + "top": "0", + "bottom": "0" + }, + "elementsLegend": { + "left": "0.14968152866242038", + "right": "0.06210191082802548", + "top": "0.9615384615384616", + "bottom": "0" + }, + "elementsTitle": { + "left": "0.83", + "right": "0", + "top": "0", + "bottom": "0.92" + }, + "borderColor": "style:BorderColor", + "border": { + "width": 1, + "style": "WithoutBorder" + }, + "dataSourceDescription": "", + "isDataSourceMode": false, + "isRandomizedNewValues": true, + "splineMode": "SmoothCurve", + "splineStrain": "95", + "translucencePercent": "0", + "funnelNeckHeightPercent": "10", + "funnelNeckWidthPercent": "10", + "funnelGapSumPercent": "3", + "multiStageLinkLine": { + "width": 1, + "gap": false, + "style": "Solid" + }, + "multiStageLinkColor": "#000000", + "valuesAxis": "", + "pointsAxis": "", + "pointsScale": { + "titleArea": { + "font": { + "kind": "AutoFont" + }, + "textColor": "auto", + "backColor": "auto", + "border": { + "width": 1, + "style": "WithoutBorder" + }, + "borderColor": "auto" + }, + "gridLinesShowMode": "Show", + "gridLine": { + "width": 1, + "gap": false, + "style": "Dotted" + }, + "labelColor": "#B4B4B4" + }, + "valuesScale": { + "showTitle": "DontShow", + "titleArea": { + "font": { + "kind": "AutoFont" + }, + "textColor": "auto", + "backColor": "auto", + "border": { + "width": 1, + "style": "WithoutBorder" + }, + "borderColor": "auto" + }, + "labelFormat": "ЧС=6; ЧГ=3,0" + }, + "seriesScale": { + "titleArea": { + "font": { + "kind": "AutoFont" + }, + "textColor": "auto", + "backColor": "auto", + "border": { + "width": 1, + "style": "WithoutBorder" + }, + "borderColor": "auto" + }, + "gridLine": { + "width": 1, + "gap": false, + "style": "Dotted" + }, + "showInChart": "DontShow" + }, + "legendPlacement": "Bottom", + "titleAreaPlacement": "None", + "valuesToolTipShowMode": "ShowOnHover", + "pointsDropLinesShowMode": "DontShow", + "valuesDropLinesShowMode": "DontShow" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/chart-settings/Configuration.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/Configuration.xml new file mode 100644 index 00000000..9e0b8697 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/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-settings/DataProcessors/Диаграмма.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма.xml new file mode 100644 index 00000000..deb584c5 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/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-settings/DataProcessors/Диаграмма/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма.xml new file mode 100644 index 00000000..dffeea01 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма.xml @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..bf7edfc7 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма/Ext/Form.xml @@ -0,0 +1,335 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Диаграмма</v8:content> + </v8:item> + + false + + + + Диаграмма + None + + + + + + + + cfg:DataProcessorObject.Диаграмма + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Диаграмма</v8:content> + </v8:item> + + + d5p1:Chart + + + 7 + 0 + true + 4 + + 2 + auto + + Solid + + Auto + + + ru + Серия 1 + + + false + false + false + false + + + 3 + auto + + Solid + + Auto + + + ru + Серия 2 + + + false + false + false + false + + + 4 + auto + + Solid + + Auto + + + ru + Серия 3 + + + false + false + false + false + + + 6 + auto + + Solid + + Auto + + + ru + Серия 4 + + + false + false + false + false + + + 1 + auto + + Solid + + Auto + + + ru + Сводная + + + false + false + false + false + + true + 0 + -1 + 0 + Line + None + , + Edge + + + style:FormTextColor + + true + auto + + WithoutBorder + + auto + None + SouthWest + + false + true + + WithoutBorder + + style:BorderColor + + WithoutBorder + + style:BorderColor + + WithoutBorder + + style:BorderColor + false + style:FieldBackColor + false + style:FieldBackColor + false + style:FieldBackColor + false + style:FieldBackColor + style:FormTextColor + style:FormTextColor + style:FormTextColor + + + + true + true + true + true + true + + + ru + ЧС=6; ЧГ=3,0 + + + Auto + + Dotted + + auto + true + true + NotDefined + 4 + 30 + Half + 0 + false + 0 + 0 + true + false + false + false + false + true + true + Right + + true + Auto + Auto + 2099248 + false + false + false + #A90000 + Circle + Needle + + 0 + 180 + 5 + InsideScale + false + 4 + #A9A9A9 + true + 0 + true + 0 + false + true + true + true + + 0 + 0.17 + 0 + 0 + + + 0.14968152866242038 + 0.06210191082802548 + 0.9615384615384616 + 0 + + + 0.83 + 0 + 0 + 0.92 + + style:BorderColor + + WithoutBorder + + + false + true + SmoothCurve + 95 + 0 + 10 + 10 + 3 + + Solid + + #000000 + + + + + + auto + auto + + WithoutBorder + + auto + + Show + + Dotted + + #B4B4B4 + + + DontShow + + + auto + auto + + WithoutBorder + + auto + + + + ru + ЧС=6; ЧГ=3,0 + + + + + + + auto + auto + + WithoutBorder + + auto + + + Dotted + + DontShow + + Bottom + None + ShowOnHover + DontShow + DontShow + + + + diff --git a/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/chart-settings/DataProcessors/Диаграмма/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/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-settings/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/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-settings/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/chart-settings/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/chart-settings/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file