Complete name-first 1C adapter saved-state support
This commit is contained in:
@@ -223,6 +223,7 @@ Current live methods:
|
||||
- `metadata.objects.list`
|
||||
- `metadata.object.get`
|
||||
- `metadata.object.properties`
|
||||
- `metadata.object.property.write`
|
||||
- `metadata.object.decode`
|
||||
- `metadata.object.parts`
|
||||
- `metadata.object.modules`
|
||||
@@ -260,6 +261,13 @@ qualified metadata names such as `Обработка.<Name>` or `Document.<Name>
|
||||
Client, MCP, and agent code must not add conditions for concrete object names;
|
||||
the adapter owns generic selector normalization.
|
||||
|
||||
Saved-state client calls use the same name-first selectors together with
|
||||
`layer=base_saved_state|extension_saved_state`. SQL tables, file names, GUID
|
||||
owners, and module handles are diagnostic continuations exposed only with
|
||||
`include_storage=true`. Every public RPC follow-up is shaped as
|
||||
`{"method": "...", "params": {...}}`; `payload` is not the arguments field of
|
||||
`next_call` or `next_resolution`.
|
||||
|
||||
Layer write policy:
|
||||
|
||||
- `Config` and `ConfigCAS` are **active-applied** and must be treated as read-only in adapter workflows.
|
||||
@@ -293,6 +301,26 @@ metadata kind. It selects a kind-specific SQL decoder for `Configuration`,
|
||||
semantic profile. XML exports are analysis evidence only and are never a
|
||||
runtime source for this method or any other adapter method.
|
||||
|
||||
`metadata.object.property.write` is the name-first saved-state writer for the
|
||||
standard identity properties `synonym` and `comment`. Pass a public object
|
||||
`ref` or `kind` + `name`. For an existing attribute, tabular section,
|
||||
dimension, or resource, also pass `member_ref` or `member_kind` +
|
||||
`member_name`; the adapter resolves the exact parent/member GUIDs and
|
||||
serialized tree path internally. The method supports `plan`, `apply`,
|
||||
`apply_and_verify`, and `apply_and_rollback`, requires explicit saved-state
|
||||
gates, and never writes active `Config`/`ConfigCAS`. Renaming an object and
|
||||
member, adding/removing collection items, and adding a new synonym locale
|
||||
remain intentionally disabled.
|
||||
|
||||
`metadata.object.member.add` adds one new object requisite or tabular-section
|
||||
column (`Attribute`) by cloning an existing attribute in the same collection.
|
||||
The caller passes only
|
||||
`template_member_ref`, `new_member_name`, and optionally synonym/comment; the
|
||||
adapter generates the GUID, preserves the template's type/settings, appends to
|
||||
the exact declared collection, and verifies the new identity after apply.
|
||||
Arbitrary type construction and deletion are not supported by this first
|
||||
structural route.
|
||||
|
||||
Managed form bodies in base `Config` are resolved from the public form GUID to
|
||||
the sibling `<guid>.0` SQL payload. Command-bar buttons expose public command
|
||||
names when their SQL binding points to a common command or a recognized
|
||||
@@ -468,7 +496,17 @@ capabilities).
|
||||
|
||||
`metadata.adapter.audit` reports recognized metadata kinds, public kind counts,
|
||||
missing supported kinds when `include_missing=true`, and unmapped DBNames roles
|
||||
when `include_unmapped=true`.
|
||||
when `include_unmapped=true`. Missing entries are marked
|
||||
`presence_status=supported_absent_in_selected_base`; this is a statement about
|
||||
the selected infobase, not a claim that the adapter lacks that kind.
|
||||
|
||||
Use `python scripts/check_1c_metadata_kind_fixtures.py --live` from the
|
||||
repository root to check the reproducible rare-kind fixtures. The checker does
|
||||
not write SQL or create metadata. The fixture manifest pins the exact Designer
|
||||
version and external reference commit. The companion
|
||||
`scripts/export_1c_extension_sources.ps1` performs a read-only `test2` source
|
||||
export with operating-system integrated authentication and exposes no
|
||||
infobase-user or credential arguments.
|
||||
|
||||
`codec.decode` and `codec.encode` are low-level lossless helpers. A no-op encode
|
||||
from a live source keeps the original bytes exactly; modified text/tree payloads
|
||||
|
||||
Reference in New Issue
Block a user