From 29f288fe1db7b794d112bb3971b9a7ad141497bb Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 9 Jun 2026 22:40:48 +0300 Subject: [PATCH] =?UTF-8?q?feat(form-decompile,form-compile):=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8F=20=D0=B4=D0=B8=D0=B0=D0=B3=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=BC=20=D0=B8=D0=B7=20ring-3=20(Chart/Gantt/GraphicalSchema/P?= =?UTF-8?q?lanner/Period/Dendrogram)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Снят fast-fail на 6 chart-полях. Все — простые скелеты (как document/gauge), кроме GanttChart с вложенной (ключ ganttTable, переиспользует Decompile/Emit-Element — устранена коллизия тип-ключа table). Типы реквизитов уже в special-type ns-карте (d5p1:Chart/GanttChart/FlowchartContextType/ GeographicalSchema, pl:Planner) + v8:StandardPeriod. Edit/WarningOnEditRepresentation у GraphicalSchema — через готовые GENERIC_SCALARS. Guard: реквизит с design-time конфигом диаграммы/планировщика ( — третий вид Settings после TypeDescription/DynamicList) → честный fail-ring3 (не теряем молча). Planner несёт Settings всегда; Chart/Gantt — при настройке. Поля без Settings (диаграмма из кода/график-схема/период/дендрограмма/гео) роундтрипятся полностью. Выборка 2.17: ring3 4→0 (весь ring3 разобран!). Кейс chart-fields (chart+graphicalSchema+period+ganttChart с ganttTable) сертифицирован в 1С. Зеркало py байт-в-байт. Регресс 41/41 (ps1+py). Co-Authored-By: Claude Opus 4.8 --- .../form-compile/scripts/form-compile.ps1 | 45 +++- .../form-compile/scripts/form-compile.py | 47 +++- .../form-decompile/scripts/form-decompile.ps1 | 27 +- docs/form-dsl-spec.md | 15 +- .../cases/form-compile/chart-fields.json | 33 +++ .../snapshots/chart-fields/Configuration.xml | 252 ++++++++++++++++++ .../chart-fields/DataProcessors/Диаграммы.xml | 34 +++ .../Диаграммы/Ext/ManagerModule.bsl | 0 .../Диаграммы/Ext/ObjectModule.bsl | 0 .../DataProcessors/Диаграммы/Forms/Форма.xml | 22 ++ .../Диаграммы/Forms/Форма/Ext/Form.xml | 121 +++++++++ .../Диаграммы/Forms/Форма/Ext/Form/Module.bsl | 19 ++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../chart-fields/Languages/Русский.xml | 16 ++ 14 files changed, 640 insertions(+), 9 deletions(-) create mode 100644 tests/skills/cases/form-compile/chart-fields.json create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/Configuration.xml create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы.xml create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма.xml create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form.xml create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/DataProcessors/Диаграммы/Forms/Форма/Ext/Form/Module.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/form-compile/snapshots/chart-fields/Languages/Русский.xml 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" } +# 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}') +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 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + + +
\ 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 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Диаграммы</v8:content> + </v8:item> + + false + + + + Диаграмма + None + + + + + Схема + None + false + + + + + Период + None + + + + + Ганта + None + + +
+ Ганта + 3 + + + + + + ТаблицаГанта + SearchStringRepresentation + + + + + + + ТаблицаГанта + ViewStatusRepresentation + + + + + + + ТаблицаГанта + SearchControl + + + + +
+ + + + + + cfg:DataProcessorObject.Диаграммы + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Диаграмма</v8:content> + </v8:item> + + + d5p1:Chart + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Схема</v8:content> + </v8:item> + + + d5p1:FlowchartContextType + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Период</v8:content> + </v8:item> + + + v8:StandardPeriod + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Ганта</v8:content> + </v8:item> + + + d5p1:GanttChart + + + + 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