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

8.8 KiB
Raw Blame History

Программа доказательного 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.

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 адаптера и не является разрешением подбирать либо сохранять пароли.