8.6 KiB
Структура метаданных конфигурации 1С
Этот документ задаёт модель, которой должны следовать агенты и публичные ответы SQL-адаптера. Он описывает семантические метаданные, а не физические имена SQL-записей, пути контейнеров или номера потоков.
Главное правило
У конфигурации нет единого шаблона дочерних узлов для всех классов объектов. Набор узлов определяется классом объекта и подтверждается двумя источниками:
- документацией платформы 1С для соответствующего класса;
- живым чтением выбранного объекта через адаптер.
Не добавляйте в ответ ни табличную часть, ни форму, ни модуль только потому, что они есть у другого объекта. Если живой декодер не подтвердил конкретный дочерний объект, верните явный неполный результат, а не пустой вымышленный узел.
Связь объекта и формы
Форма — самостоятельный объект метаданных, на который владелец ссылается в
своей коллекции Формы. В кратком описании владельца возвращается только
ссылка/идентичность формы: имя, GUID и доступный публичный селектор. Полное
описание формы читается отдельным запросом.
Отчет
└─ Формы
└─ <ссылка на Форму>
Форма
├─ Реквизиты
├─ Параметры
├─ Команды
├─ Модуль формы
└─ Элементы
Параметры формы не являются её реквизитами. Это декларация параметризации при открытии формы. Команда формы не имеет отдельного модуля: её имя обработчика является свойством команды и разрешается в модуле формы. Аналогично имя обработчика события элемента — свойство элемента, а не дочерний узел дерева.
Подчинённая команда владельца (Отчет.Команды.<Имя>) отличается от команды
формы. Если документация и живая база подтверждают модуль команды, его надо
сообщать как свойство этой команды, не выдавая за форму или за модуль формы.
Отчёт
Официальная методическая документация 1С подтверждает, что отчёт может иметь реквизиты и табличные части. Табличная часть, в свою очередь, имеет реквизиты. Для отчёта допустима следующая классовая схема; конкретные экземпляры показываются только после живого чтения:
Отчет
├─ Реквизиты
├─ Табличные части
│ └─ Реквизиты табличной части
├─ Формы → отдельные описания Форм
├─ Команды
├─ Макеты
├─ Модуль объекта
└─ Модуль менеджера
СКД — это тип/содержимое макета, а не обязательная отдельная ветвь любого отчёта. Не создавайте узел СКД, если в живом объекте не подтверждён соответствующий макет.
Публичные маршруты адаптера
Для объекта Отчет.<Имя> адаптер использует следующие раздельные операции:
metadata.object.forms— читает подтверждённые ссылки отчёта на формы; возвращаемые строки содержат идентичность формы, а не её элементы, реквизиты, параметры или текст модуля.metadata.object.form.details— по владельцу и имени формы получает развёрнутое описание формы.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
- Отчёты, реквизиты и табличные части — методическая поддержка 1С
- Формы: реквизиты, параметры, команды и модуль — руководство разработчика 1С
- Явное объявление параметров формы — стандарт 1С
Проверка перед изменением
Перед тем как менять форму или модуль, агент обязан выполнить публичное
чтение владельца, затем получить форму её собственным селектором. Отсутствие
SQL-подключения, нераспознанный контейнер или неоднозначная связь — это
unresolved/protocol_incomplete, а не разрешение достроить структуру по
документации.
metadata.form.decode с view=structure возвращает компактные доказанные
факты по статическим элементам. Пока SQL-кодек логического родителя не
доказан, поля parent и children имеют статус unresolved; нельзя строить
их из технической глубины или пути сериализованного контейнера.
Запросы runtime.form.elements.inspect и runtime.form.inspect возвращают
runtime_inspection_unsupported. SQL-адаптер не открывает формы, не запускает
обработчики и не выдаёт созданные СКД во время работы элементы за статические
метаданные.