Initial project import
This commit is contained in:
@@ -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-адаптер не открывает формы, не запускает
|
||||
обработчики и не выдаёт созданные СКД во время работы элементы за статические
|
||||
метаданные.
|
||||
Reference in New Issue
Block a user