feat(form-decompile,form-compile): Planner design-time Settings из ring-3 (Фаза 1 кластера Chart-Settings)

Реквизит planner-типа несёт <Settings xsi:type="pl:Planner"> — встроенный конфиг
поля-планировщика (элементы расписания + оформление/поведение + шкала времени).
Раньше декомпилятор делал fail-ring3 (третий вид Settings после TypeDescription/
DynamicList). Корпус 8.3.24: Planner Settings = 1 реальная форма (КонтактныеЛица/
ФормаЛиды), всё chart-семейство = 38 форм. Решение (с пользователем): структурный
DSL ради возможности модели СОЗДАВАТЬ дашборды/планировщики, не только раундтрипить.

DSL: ключ planner:{…} на реквизите (docs/form-dsl-spec.md):
- items[] (элементы расписания) + appearance/поведение-скаляры + timeScale
  (placement/levels[]/colors) + period;
- цвета verbatim, шрифт {kind:AutoFont}/ref, граница {width,style}, ML-форматы;
- компилятор подставляет дефолты для пропущенных ключей (краткий авторинг),
  декомпилятор — полный захват (раундтрип бит-в-бит).

Снят fail-ring3 для pl:Planner (Chart/GanttChart остаются — Фазы 2/3).
Заодно фикс: d5p1:Dendrogram отсутствовал в specialTypeNs (эмитился без
xmlns-префикса) — добавлен в карту (ps1+py).

Раундтрип бит-в-бит: синтетика upload/epf/Диаграммы (с items+period) +
реальная ФормаЛиды (без items/period, иные значения скаляров). Зеркало py
(ps1==py байт-в-байт). Кейс chart-fields расширен (+planner +dendrogram),
сертифицирован загрузкой в 1С. Регресс 41/41 (ps1+py).

Ограничение Phase 1: dimensions/item.dimensionValues пока всегда пустые.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-10 13:35:10 +03:00
parent 29f288fe1d
commit f064d53eb2
6 changed files with 664 additions and 19 deletions
@@ -1,5 +1,5 @@
{
"name": "Форма с полями диаграмм (без design-time Settings)",
"name": "Форма с полями диаграмм + design-time Settings планировщика",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
@@ -20,14 +20,23 @@
{ "graphicalSchema": "Схема", "path": "Схема", "titleLocation": "none", "edit": false },
{ "periodField": "Период", "path": "Период", "titleLocation": "none" },
{ "ganttChart": "Ганта", "path": "Ганта", "titleLocation": "none",
"ganttTable": { "table": "ТаблицаГанта", "path": "Ганта", "height": 3 } }
"ganttTable": { "table": "ТаблицаГанта", "path": "Ганта", "height": 3 } },
{ "dendrogram": "Дендро", "path": "Дендро", "titleLocation": "none" },
{ "planner": "Планировщик", "path": "Планировщик", "titleLocation": "none" }
],
"attributes": [
{ "name": "Объект", "type": "DataProcessorObject.Диаграммы", "main": true },
{ "name": "Диаграмма", "type": "d5p1:Chart" },
{ "name": "Схема", "type": "d5p1:FlowchartContextType" },
{ "name": "Период", "type": "v8:StandardPeriod" },
{ "name": "Ганта", "type": "d5p1:GanttChart" }
{ "name": "Ганта", "type": "d5p1:GanttChart" },
{ "name": "Дендро", "type": "d5p1:Dendrogram" },
{ "name": "Планировщик", "type": "pl:Planner", "planner": {
"items": [
{ "text": "Встреча", "begin": "2026-06-09T01:00:00", "end": "2026-06-09T04:00:00" }
],
"period": { "begin": "2026-06-09T00:00:00", "end": "2026-06-09T23:59:59" }
} }
]
}
}