feat(form-decompile,form-compile): измерения планировщика (dimensions) — Planner Phase 1

Расширение Phase 1 кластера Chart-Settings: реквизит pl:Planner теперь несёт
измерения планировщика (<pl:dimension> — «Измерения» в конфигураторе) с элементами.

DSL planner.dimensions[]: объект разреза (value — ссылка xr:DesignTimeRef или nil,
text-заголовок, цвета, font) + elements[] (элементы измерения, РЕКУРСИВНЫ — могут
нести вложенные elements, как показывает UI колонкой «Элементы»; поле
showOnlySubordinatesAreas). Тип value авто-выводится: ссылочный вид →
xsi:type="xr:DesignTimeRef", иначе xs:string. Пустой текст → самозакрывающийся
<pl:text/> (как в выгрузке). Общие хелперы Emit/Get-PlannerValue/Text применены
и к элементам расписания (items).

Раундтрип бит-в-бит: синтетика upload/epf/Диаграммы (items + 2 dimensions +
вложенные elements + period). Зеркало py (ps1==py байт-в-байт). Кейс chart-fields
расширен измерением (nil-разрез + xs:string-элемент + showOnlySubordinatesAreas),
сертифицирован загрузкой в 1С. Регресс 41/41 (ps1+py).

Ограничение: 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:57:54 +03:00
parent f064d53eb2
commit f534add7b4
6 changed files with 192 additions and 21 deletions
@@ -35,6 +35,11 @@
"items": [
{ "text": "Встреча", "begin": "2026-06-09T01:00:00", "end": "2026-06-09T04:00:00" }
],
"dimensions": [
{ "text": "Измерение", "elements": [
{ "value": "А", "text": "Элемент А", "showOnlySubordinatesAreas": true }
] }
],
"period": { "begin": "2026-06-09T00:00:00", "end": "2026-06-09T23:59:59" }
} }
]
@@ -171,6 +171,25 @@
</pl:border>
<pl:editMode>EnableEdit</pl:editMode>
</pl:item>
<pl:dimension>
<pl:value xsi:nil="true"/>
<pl:text>Измерение</pl:text>
<pl:borderColor>auto</pl:borderColor>
<pl:backColor>auto</pl:backColor>
<pl:textColor>auto</pl:textColor>
<pl:font kind="AutoFont"/>
<pl:item>
<pl:value xsi:type="xs:string">А</pl:value>
<pl:text>Элемент А</pl:text>
<pl:borderColor>auto</pl:borderColor>
<pl:backColor>auto</pl:backColor>
<pl:textColor>auto</pl:textColor>
<pl:font kind="AutoFont"/>
<pl:showOnlySubordinatesAreas>true</pl:showOnlySubordinatesAreas>
<pl:textFormatted>false</pl:textFormatted>
</pl:item>
<pl:textFormatted>false</pl:textFormatted>
</pl:dimension>
<pl:borderColor>auto</pl:borderColor>
<pl:backColor>auto</pl:backColor>
<pl:textColor>auto</pl:textColor>