read_form_descriptor
Introspects a live 1C managed form into field name/value descriptors, replaying the native form-analysis query. Opens any form by nav-link, so no per-form capture is needed.
Instructions
Introspect a live form into a full element descriptor natively — the get_form_analysis equivalent. Opens
the form then replays the genuine form-analysis QUERY sweep (a per-field value-read of every element) on one
connection, decoding each element's name->value with extract_form_field_values (the canonical «стал равен»
value; markers fa/9a single-byte, 97 UTF-16 checkbox Да/Нет, 8b short-number, 81 empty; ASCII + Cyrillic field
names). Returns {fields {name: value}, field_count, queried}; with gherkin (default) also a Gherkin state
block (И элемент формы с именем 'X' стал равен "V"). Both ASCII-named (PF_*) and Cyrillic-named
fields are swept — Cyrillic group/leaf paths ride the 0x97 UTF-16 envelope, so e.g. the fixture's
Контрагент / ПолеСоСпискомВыбораСтрока are read. SCOPE (honest): captures the EditField value surface —
form DECORATIONS (static Label captions) are not field values and are omitted (the 3 PF_DECORATION_LABEL* are
a separate Label-kind gap). The fixture descriptor is validated against a genuine analysis oracle.
enumerate_live: by default the field list comes from capture_dir's value-read query paths (the
one-time per-form capture). With enumerate_live=True the field list is enumerated LIVE off the open form by
splice-replaying the genuine get_form_analysis descriptor query (_enumerate_live_fields ->
extract_descriptor_fields), so introspection needs NO per-form capture for the field list. With
open_link the engine OPENS that form by nav-link (e.g. "e1cib/list/Справочник.Контрагенты") — navigate +
resolve its SecondaryFrame.ManagedForm, point the session at it — and introspects IT (no per-form capture at
all): introspect ANY form by its nav-link. The descriptor query enumerates EditFields + Buttons/Tables/Groups;
a list form has its content in a dynlist Table (few form-level EditFields).
The open_link open is CONFIG-AGNOSTIC (no fixture required): the engine bootstraps to the bare desktop,
window-lists the LIVE desktop MainFrame, and navigates straight to the target form — it does NOT open the suite
fixture first. Every splice rides a header built with NO form open (_splice_header_no_form: the header's only
live fields are the bootstrap ack_guid + sequence; the form GUIDs are after the marker the splice discards), and
the navigate is retargeted onto the live desktop. So open_link introspects any form on ANY real config that
has no suite fixture. Live-verified (fixture config: 46 EditFields incl. Cyrillic; Контрагенты opened +
introspected to 79 elements with NO fixture open).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 127.0.0.1 | |
| port | No | ||
| gherkin | No | ||
| open_link | No | ||
| capture_dir | No | tm-v1-ro-batchQ3 | |
| enumerate_live | No | ||
| manager_templates | No | /app/src/qa_mcp/_bundled/8.3/templates/value_read_templates.json |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||