Initial project import

This commit is contained in:
2026-08-14 09:40:51 +03:00
parent 00040e5ce4
commit d7099bf80d
146 changed files with 30509 additions and 1055 deletions
+124
View File
@@ -0,0 +1,124 @@
# Структура метаданных конфигурации 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-адаптер не открывает формы, не запускает
обработчики и не выдаёт созданные СКД во время работы элементы за статические
метаданные.