Files
llm/docs/1c-sql-protocol/research/report-template-codec-program.md
T
2026-08-14 11:57:30 +03:00

100 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Программа доказательного 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`.
## Долгосрочный план и критерии готовности
| Этап | Результат | Критерий перехода |
| --- | --- | --- |
| 1. Инвентарь | Реестр `Report → Template` с identity, container, SHA-1 и состоянием active/saved | У каждого fixture есть подтверждённая цепочка owner → template → payload, без имени формы в качестве подстановки. |
| 2. СКД read | Lossless контейнерный decoder с XML-путями для datasets, links, calculated fields, resources, parameters, layouts, nested schemas и settings | XML корректно читается на нескольких живых схемах; неизвестные XML узлы сохраняются в raw-carrier и не теряются. |
| 3. СКД write | Минимальный scalar writer (`dataset.query`, expression) и resolver `Report + Template` | `plan`, точная проверка SHA-1 и `apply_and_rollback` проходят на выделенной fixture; активность подтверждает человек в Configurator. |
| 4. Оформление СКД | Отдельный decoder/encoder XML оформления: regions, style rules, fonts, colors, borders, indents | Не используется путь `scd.patch`; один контролируемый before/after fixture доказывает carrier и round-trip. |
| 5. Прочие типы | Отдельная карточка codec-а на каждый из десяти platform types | Для Spreadsheet/Text/HTML/Geo/Graphical доказан собственный round-trip или выставлен explicit `unsupported`; Binary/Active/AddIn остаются opaque до отдельного доказательства. |
| 6. Report aggregate | API `report.inspect` возвращает identity, modules/forms/templates, main-SCD relation, overlay state и capability по каждому компоненту | Отчёт без подтверждённой СКД возвращает `unresolved`, а не выбирает форму или первый поток. |
| 7. Регрессия и выпуск | Fixture manifest, hash-baselines, unit tests, live SQL smoke и документация публичного контракта | Каждый write codec проходит план → rollback → SQL readback; ни один результат не заявляет применение в Configurator без ручного подтверждения. |
Работа выполняется последовательно по этому реестру: новый тип не получает
write endpoint до собственной fixture и доказанного обратного carrier codec-а.
## Ближайшая реализация
Первый кодовый результат — resolver, который умеет различать форму и макет,
а затем находит `MainDataCompositionSchema` по подтверждённой template identity
в extension active/saved layer. При отсутствии доказанного template payload он
возвращает `unresolved`, а не fallback на форму или stream `.0`.
## Среда Configurator и текущий блокер fixture-изменений
На рабочей станции подтверждены локальные исполняемые файлы Configurator:
`C:\\Program Files\\1cv8\\8.3.24.1548\\bin\\1cv8.exe` и
`C:\\Program Files\\1cv8\\8.5.1.1236\\bin\\1cv8.exe`. В списке информационных
баз зарегистрирован `upo_test` с соединением `Srvr="wsr";Ref="upo_test"`.
14.08.2026 выполнена только read-only попытка
`DESIGNER /DumpConfigToFiles` в отдельный каталог отчётов. Сервер вернул
`Пользователь ИБ не идентифицирован`; выгрузка не началась и база не
изменялась. Поэтому автоматизированные before/after изменения в
Configurator пока не запускаются: требуется штатная учётная запись ИБ или
интерактивный вход человека. Это не ослабляет SQL-only правило runtime
адаптера и не является разрешением подбирать либо сохранять пароли.