# Структура метаданных конфигурации 1С

Этот документ задаёт модель, которой должны следовать агенты и публичные
ответы SQL-адаптера. Он описывает семантические метаданные, а не физические
имена SQL-записей, пути контейнеров или номера потоков.

## Главное правило

У конфигурации нет единого шаблона дочерних узлов для всех классов объектов.
Набор узлов определяется классом объекта и подтверждается двумя источниками:

1. документацией платформы 1С для соответствующего класса;
2. живым чтением выбранного объекта через адаптер.

Не добавляйте в ответ ни табличную часть, ни форму, ни модуль только потому,
что они есть у другого объекта. Если живой декодер не подтвердил конкретный
дочерний объект, верните явный неполный результат, а не пустой вымышленный
узел.

## Связь объекта и формы

Форма — самостоятельный объект метаданных, на который владелец ссылается в
своей коллекции `Формы`. В кратком описании владельца возвращается только
ссылка/идентичность формы: имя, GUID и доступный публичный селектор. Полное
описание формы читается отдельным запросом.

```text
Отчет
└─ Формы
   └─ <ссылка на Форму>

Форма
├─ Реквизиты
├─ Параметры
├─ Команды
├─ Модуль формы
└─ Элементы
```

Параметры формы не являются её реквизитами. Это декларация параметризации при
открытии формы. Команда формы не имеет отдельного модуля: её имя обработчика
является свойством команды и разрешается в модуле формы. Аналогично имя
обработчика события элемента — свойство элемента, а не дочерний узел дерева.

Подчинённая команда владельца (`Отчет.Команды.<Имя>`) отличается от команды
формы. Если документация и живая база подтверждают модуль команды, его надо
сообщать как свойство этой команды, не выдавая за форму или за модуль формы.

## Отчёт

Официальная методическая документация 1С подтверждает, что отчёт может иметь
реквизиты и табличные части. Табличная часть, в свою очередь, имеет реквизиты.
Для отчёта допустима следующая *классовая* схема; конкретные экземпляры
показываются только после живого чтения:

```text
Отчет
├─ Реквизиты
├─ Табличные части
│  └─ Реквизиты табличной части
├─ Формы → отдельные описания Форм
├─ Команды
├─ Макеты
├─ Модуль объекта
└─ Модуль менеджера
```

СКД — это тип/содержимое макета, а не обязательная отдельная ветвь любого
отчёта. Не создавайте узел СКД, если в живом объекте не подтверждён
соответствующий макет.

## Публичные маршруты адаптера

Для объекта `Отчет.<Имя>` адаптер использует следующие раздельные операции:

1. `metadata.object.forms` — читает подтверждённые ссылки отчёта на формы;
   возвращаемые строки содержат идентичность формы, а не её элементы,
   реквизиты, параметры или текст модуля.
2. `metadata.object.form.details` — по владельцу и имени формы получает
   развёрнутое описание формы.
3. `metadata.form.decode` — декодирует одну конкретную форму и возвращает её
   параметры, реквизиты, элементы, команды, события и сводку встроенного
   модуля.

Передавайте `configuration_view=effective_working` либо не передавайте view:
MCP установит этот режим сам. Он означает логическую рабочую конфигурацию с
учётом базовой конфигурации, сохранённых изменений и расширений; он не
разрешает агенту выбирать `ConfigSave` или `ConfigCASSave`.

Таким образом, ссылка `Отчет → Форма` не должна заменяться копией описания
формы внутри объекта отчёта. Агрегированный `metadata.object.full` удобен для
обзора, но для работы с формой агент обязан сохранять её отдельный публичный
селектор и при необходимости вызвать один из двух form-методов выше.

Текущая реализация подтверждает маршрут для `Report`: в
`RELATED_SECTION_RULES` форма имеет категорию `Form`, а
`metadata.object.forms` возвращает только `guid`, `name`, `synonyms` и счётчики
частей. Детали добавляет только `metadata.object.form.details` через отдельный
вызов `metadata.form.decode`.

## Источники

- [Иерархия объектов конфигурации и подчинённые объекты — 1С:EDT](https://its.1c.ru/db/content/edtdoc/src/topics/i030.html)
- [Отчёты, реквизиты и табличные части — методическая поддержка 1С](https://its.1c.ru/db/content/metod8dev/src/platform81/startersdev/i8102579.htm)
- [Формы: реквизиты, параметры, команды и модуль — руководство разработчика 1С](https://its.1c.ru/db/v8310doc/bookmark/dev/TI000000391)
- [Явное объявление параметров формы — стандарт 1С](https://its.1c.ru/db/content/v8std/src/1%C2%A0200/700/i8100741.htm)

## Проверка перед изменением

Перед тем как менять форму или модуль, агент обязан выполнить публичное
чтение владельца, затем получить форму её собственным селектором. Отсутствие
SQL-подключения, нераспознанный контейнер или неоднозначная связь — это
`unresolved`/`protocol_incomplete`, а не разрешение достроить структуру по
документации.

`metadata.form.decode` с `view=structure` возвращает компактные доказанные
факты по статическим элементам. Пока SQL-кодек логического родителя не
доказан, поля `parent` и `children` имеют статус `unresolved`; нельзя строить
их из технической глубины или пути сериализованного контейнера.

Запросы `runtime.form.elements.inspect` и `runtime.form.inspect` возвращают
`runtime_inspection_unsupported`. SQL-адаптер не открывает формы, не запускает
обработчики и не выдаёт созданные СКД во время работы элементы за статические
метаданные.
