# Контролируемые fixtures: типы макетов 1С

## Цель

Зафиксировать platform-dependent таблицу `Template descriptor type code ->
TemplateType` для конкретной сборки 1С. До выполнения каждого опыта код не
является именем типа, а carrier payload не является источником типа.

## Условия опыта

- База: `upo_test`; изменения допускаются только в отдельном расширении
  `codex_TemplateCodecFixtures`.
- Для каждого типа создаётся ровно один пустой макет с именем
  `CodecFixture_<EnglishType>` и один минимальный, но непустой вариант.
- До создания, после создания и после сохранения конфигурации снимаются
  descriptor `{GUID}` и все части `{GUID}.*` из SQL saved state.
- Для каждого снимка сохраняются SHA-1, размер, compression, descriptor tree,
  descriptor type code, XML root/сигнатура carrier и экспорт Конфигуратора.
- Обратная запись запрещена, пока для того же типа не доказан byte-preserving
  round trip и не подтверждён результат человеком в Конфигураторе.

## Матрица

| Fixture suffix | Тип из мастера | Минимальное содержимое | Нужный артефакт |
| --- | --- | --- | --- |
| `Spreadsheet` | Табличный документ | Одна ячейка `X` | `.mxl` + SQL carrier |
| `Text` | Текстовый документ | `X` | `.txt` + SQL carrier |
| `Binary` | Двоичные данные | 3 байта `01 02 03` | `.bin` + SQL carrier |
| `Active` | Active document | минимальный выбранный Active object | SQL carrier, тип OLE |
| `Html` | HTML документ | `<p>X</p>` | `.htm` + SQL carrier |
| `Geo` | Географическая схема | пустая схема | `.geo` + SQL carrier |
| `Graphical` | Графическая схема | один прямоугольник | `.grs` + SQL carrier |
| `Dcs` | Схема компоновки данных | параметр `P` и пустой dataset | XML + SQL carrier |
| `DcsAppearance` | Макет оформления компоновки данных | одно правило оформления | XML + SQL carrier |
| `AddIn` | Внешняя компонента | тестовый ZIP с манифестом | ZIP + SQL carrier |

## Критерий принятия одной строки таблицы

Строка считается `proven` только когда одновременно совпали:

1. тип, выбранный в мастере Конфигуратора;
2. descriptor type code из сохранённого объекта;
3. снимок carrier `{GUID}.0` и export соответствующего редактора;
4. повторное открытие и сохранение fixture в Конфигураторе без ошибки.

Любое отсутствие пункта оставляет строку `unresolved_mapping`. Имена макетов,
XML root и архивная сигнатура являются вспомогательными evidence и не заменяют
эти условия.
