read_list_grid
Read all visible rows and columns from a 1C dynamic list in one call, stepping through the grid up to a row limit and refreshing it to return stable data.
Instructions
Read MANY ROWS × columns of a dynamic list (the whole visible grid) in ONE call. Opens the list at
open_link (e.g. e1cib/list/Справочник.Товары), reads the first row's columns (e.g. ["Код", "Наименование"] of the resolved dynlist table), then steps «перехожу к следующей строке» and reads again, up
to max_rows rows or end-of-list. By default the table is resolved from the live descriptor; pass table to
select explicitly. Returns {table, nav_link, row_count, rows: [{column: value}, …], list_refresh,
table_resolution}.
flat (default False) reads the list's CURRENT view/sort order. A HIERARCHICAL catalog (e.g. Товары) defaults
to a grouped view, so the grid then exposes only the TOP-LEVEL folders (Обувь/Продукты/…). Set flat=True to
first switch the list to flat «Список» view (the standard catalog-list-form «ФормаСписок» view-mode command,
baked into the genuine capture) so NESTED items are read too — live-verified on Товары (flat -> Bosch1234/Sony
К3456P/Босоножки/… nested rows, codes vs OData). flat selects the capture; pass capture_dir to override
explicitly.
CURRENCY: a 1C dynamic list is async/eventually-consistent, so refresh=True (default) forces an
«Обновить»/F5 requery and polls-until-stable before reporting — a freshly-created record shows up and a reported
0 rows only ever means a genuinely empty list. refresh=False opts out (records "no refresh applied") for
an absence assertion. wait_for_rows=N blocks until at least N rows are read or the bounded poll timeout
elapses (list_refresh.wait_for_rows_met reports which). list_refresh records the refresh method + poll
outcome. Table-resolution failures return structured list-table-* diagnostics and do NOT run a wrong-table
replay or call the list genuinely empty.
Mechanism: a genuine next-row capture replayed cold (faithful full-replay through the first read — which for the
flat capture also replays the view-switch — then the genuine go-to-next-row block, the decoded next-row action
GUID d267315b…, replayed + the reads, all on the one materialised socket, message-id kept + sequence bumped).
Live-verified the cursor advances. One grid read per fresh launch_test_client (the cold-client boundary). Use
read_list_row for a single row (or a row by value), read_list_column for a single cell,
read_table_cell for FORM tables.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| flat | No | ||
| host | No | 127.0.0.1 | |
| port | No | ||
| table | No | ||
| columns | Yes | ||
| refresh | No | ||
| max_rows | No | ||
| open_link | Yes | ||
| capture_dir | No | ||
| wait_for_rows | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||