Document report template codec program
This commit is contained in:
@@ -0,0 +1,69 @@
|
|||||||
|
# Программа доказательного codec-а отчётов и макетов
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
Построить для SQL-адаптера раздельные, evidence-first decoder/encoder пути
|
||||||
|
для отчёта и каждого типа его макета. Публичный API принимает только имя
|
||||||
|
расширения, отчёта и макета; физические таблицы, ключи и контейнеры остаются
|
||||||
|
внутренними деталями реализации.
|
||||||
|
|
||||||
|
## Первая live-фикстура
|
||||||
|
|
||||||
|
База: `upo_test`; расширение: `фс_Отчеты`;
|
||||||
|
отчёт: `_ПоступлениеТовара`;
|
||||||
|
GUID отчёта: `c428f629-785a-4141-b038-f2192bb4580d`.
|
||||||
|
|
||||||
|
Наблюдаемое состояние на 2026-08-14:
|
||||||
|
|
||||||
|
- extension object search подтверждает сохранённый override в `ConfigCASSave`;
|
||||||
|
- в saved слое присутствуют descriptor, `.0` и extension `__configinfo`;
|
||||||
|
- active manifest содержит только descriptor и `.0` stream;
|
||||||
|
- `metadata.object.components` подтверждает четыре формы, среди них форму
|
||||||
|
`ОсновнаяСхемаКомпоновкиДанных`;
|
||||||
|
- `metadata.object.templates` и `scd.inspect` не подтверждают макет
|
||||||
|
`DataCompositionSchema` для этого объекта.
|
||||||
|
|
||||||
|
Следствие: имя формы не является доказательством существования одноимённого
|
||||||
|
макета СКД. Нельзя направлять запрос или XML-кодек в `.0` stream.
|
||||||
|
|
||||||
|
## Матрица типов макетов
|
||||||
|
|
||||||
|
| Платформенный тип | Состояние codec-а | Допустимое действие до fixture proof |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Табличный документ | частичный MOXCEL decoder | read-only structure/evidence |
|
||||||
|
| Текстовый документ | типизированное текстовое исследование | read-only до round-trip fixture |
|
||||||
|
| Двоичные данные | opaque | hash/size only |
|
||||||
|
| Active document | opaque | hash/size only |
|
||||||
|
| HTML документ | частичное текстовое/HTML evidence | read-only до round-trip fixture |
|
||||||
|
| Географическая схема | opaque typed candidate | read-only |
|
||||||
|
| Графическая схема | opaque typed candidate | read-only |
|
||||||
|
| Схема компоновки данных | XML decoder + scalar byte-preserving patch | write only after public route and saved-state codec proof |
|
||||||
|
| Макет оформления компоновки данных | отдельный XML family | read-only до own fixture proof |
|
||||||
|
| Внешняя компонента | opaque archive | hash/size only |
|
||||||
|
|
||||||
|
Источник taxonomy: [1C:Enterprise Template wizard](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_31._Development_tools/31.14._Template_wizard/).
|
||||||
|
|
||||||
|
## Protocol gates
|
||||||
|
|
||||||
|
1. Создать либо выбрать отдельную live fixture для одного вида макета.
|
||||||
|
2. Снять SQL before snapshot всех связанных payload-ов и их SHA-1.
|
||||||
|
3. Выполнить ровно одно контролируемое изменение через Configurator.
|
||||||
|
4. Снять after snapshot и доказать точное соответствие object → manifest →
|
||||||
|
payload → saved-state overlay.
|
||||||
|
5. Реализовать lossless decoder и обратный encoder только для изменённого
|
||||||
|
участка; неизвестные байты сохраняются дословно.
|
||||||
|
6. Выполнить `apply_and_rollback` в `upo_test`, проверить SQL readback и
|
||||||
|
очистку adapter-created rows.
|
||||||
|
7. Отдельно получить человеческое подтверждение видимости в Configurator.
|
||||||
|
|
||||||
|
Для СКД XML-семантика включает datasets, links, calculated fields, resources,
|
||||||
|
parameters, layouts, nested schemas и settings. Макет оформления — другой XML
|
||||||
|
контракт: регионы, шрифты, цвета, границы и правила оформления; его нельзя
|
||||||
|
обрабатывать методом `scd.patch`.
|
||||||
|
|
||||||
|
## Ближайшая реализация
|
||||||
|
|
||||||
|
Первый кодовый результат — resolver, который умеет различать форму и макет,
|
||||||
|
а затем находит `MainDataCompositionSchema` по подтверждённой template identity
|
||||||
|
в extension active/saved layer. При отсутствии доказанного template payload он
|
||||||
|
возвращает `unresolved`, а не fallback на форму или stream `.0`.
|
||||||
Reference in New Issue
Block a user