feat(form-decompile,form-compile): поля диаграмм из ring-3 (Chart/Gantt/GraphicalSchema/Planner/Period/Dendrogram)

Снят fast-fail на 6 chart-полях. Все — простые скелеты (как document/gauge),
кроме GanttChart с вложенной <Table> (ключ 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 xsi:type="d4p1:GanttChart"/"pl:Planner"/…> — третий вид 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 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-09 22:40:48 +03:00
parent 5ebc02d0b3
commit 29f288fe1d
14 changed files with 640 additions and 9 deletions
+14 -1
View File
@@ -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` — вложенная `<Table>` (полноценная таблица, та же грамматика) |
| `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-типа может нести
> `<Settings xsi:type="d4p1:GanttChart"/"pl:Planner"/…>` — встроенный конфиг диаграммы (серии/оси/цвета/планировщик).
> Planner несёт Settings ВСЕГДА (даже дефолтный), Chart/Gantt — при design-time настройке. Этот блок пока НЕ
> воспроизводится → декомпилятор делает честный fail-ring3 (не теряет молча). Поля без Settings (диаграмма,
> заполняемая в коде; график-схема; период) роундтрипятся полностью.
#### autoCmdBar — командная панель формы
Командная панель самой формы (`<AutoCommandBar id="-1">`). Задаётся как элемент в `elements`; компилятор автоматически вынимает его из дерева. Нужен только если в панель помещаются **явные** кнопки/группы или меняется выравнивание/автозаполнение — иначе панель формируется автоматически.