3.5 KiB
Граф составляющих объекта конфигурации
Объект конфигурации — это корень, а не минимальная единица работы. Его составляющие: модуль объекта, формы и их модули, макеты, схема компоновки данных (СКД), а после декодирования СКД — наборы данных, запросы, поля, ресурсы и варианты. Для записи нужен адрес именно составляющей и доказанный физический носитель этой составляющей.
Публичная инвентаризация
metadata.object.components — read-only фасад над уже доказанными SQL
декодерами. Он принимает обычный селектор владельца (ref либо kind и
name, при необходимости extension) и возвращает граф:
- корень
metadata_object; - только реально найденные
module,form,templateиscd; - публичные
pathиread_selectorкаждого потомка; unresolvedдля областей, которые не были подтверждены.
Метод не создаёт потомок потому, что он обычно есть у такого типа объекта.
Например, пустой ответ metadata.object.modules у общей формы означает
«модуль этим маршрутом не найден», а не повод назвать форму модулем.
Пример запроса:
{
"method": "metadata.object.components",
"payload": {
"base_id": "upo_test",
"extension": "test2",
"ref": "Report.tt_Отчет",
"include_storage": false
}
}
read_selector можно передать следующему read-only методу. Это не является
разрешением на запись: запись выбирает компонент по его path, повторно
подтверждает конкретный carrier/stream и разрешается только для семейства
контейнеров с доказанным byte-preserving кодеком.
Иерархия и кодеки
Логический BSL один и тот же независимо от владельца, но его физический носитель может различаться. Поэтому не нужны отдельные эвристики «для формы» и «для отчёта»: нужен реестр семейств carrier-кодеков. Один кодек применяется к нескольким типам объектов лишь после доказательства одинаковых границ, непрозрачных атомов и round-trip проверки.
Текущий пример: модуль общего формы в upo_test/test2 имеет доказанный
write-кодек saved-state; обнаруженный поток модуля отчёта — только
read-only structural codec. Второй компонент может быть найден и прочитан,
но не получит разрешение на SQL-запись, пока его служебный хвост не будет
декодирован.