mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-18 00:29:42 +03:00
feat(web-test): readTable отдаёт состояние строки по ведущей иконке
readTable матчил только спрайты pictureCollection (именованные pic-колонки), а ведущая иконка состояния приходит из convertPicture?url=e1csys/<dir>/<file>.zip&gx=N и молча дропалась. Проверить «помечен на удаление» можно было только выводом колонки через «Настроить список» в каждом тесте. Строка списка объектов теперь отдаёт плоские булевы _deleted / _posted / _predefined / _completed / _started / _finished и сырьё _rowPic для диагностики. Ключ словаря — ПОЛНЫЙ путь спрайта, не имя файла: basic/folder.zip и accnt/folder.zip — разные файлы с одинаковым именем и разной раскладкой gx (в basic gx=1 элемент, в accnt gx=1 предопределённый). Отсутствие булева значит «не знаю», а не false: ось неприменима либо кадр не расшифрован. Дефолт false отвергнут — врал бы молча в зелёную сторону. Пути и раскладки сняты живьём на ERP; у Task/BusinessProcess раскладка сверена с данными списка. Кадры 4/5 basic/folder.zip (второе измерение — иерархия элементов) расшифрованы по байтовому равенству кадров: gx4 ≡ gx1, gx5 ≡ gx3. Стенд: документы в заданных состояниях + помеченный элемент справочника + безымянная picture-колонка ПЕРЕД значком состояния — воспроизводит ловушку «первый .gridBoxImg не тот» (проверено подменой на наивный экстрактор). Тест 22-row-state; полный регресс 27/27. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -260,6 +260,23 @@ console.log('Расшифровка:', JSON.stringify(drilldown.rows));
|
||||
- `_selected: true` — строка выделена (подсвечена). Используйте с `clickElement({ modifier: 'ctrl'|'shift' })` для проверки мультиселекции
|
||||
- На объекте результата: `hierarchical: true`, `viewMode: 'tree'`
|
||||
|
||||
Состояние строки — в списках объектов, расшифровывается по иконке состояния (выводить колонку в список не нужно):
|
||||
|
||||
- `_deleted: true|false` — помечен на удаление (справочники, документы, задачи, бизнес-процессы, планы счетов и видов расчёта)
|
||||
- `_posted: true|false` — документы
|
||||
- `_predefined: true|false` — справочники, планы счетов и видов расчёта
|
||||
- `_completed: true|false` — задачи
|
||||
- `_started`, `_finished` — бизнес-процессы
|
||||
- `_rowPic: '<иконка>:<N>'` — сырой идентификатор иконки, для диагностики
|
||||
|
||||
```js
|
||||
const t = await readTable();
|
||||
const doc = t.rows.find(r => r['Номер'] === 'ТД00-000005');
|
||||
if (doc._deleted === true) { /* помечен на удаление */ }
|
||||
```
|
||||
|
||||
**Отсутствие поля состояния значит «не знаю», а не `false`** — свойство может быть неприменимо (у документов нет `_predefined`) либо иконка не распознана. Поэтому `if (!row._deleted)` небезопасно: «не знаю» читается как «не помечен». Сравнивайте явно (`=== true` / `=== false`), а `undefined` считайте третьим исходом. У строк вне списков объектов (табличные части форм, списки значений) полей состояния нет вовсе. Если `_rowPic` есть, а булевых нет — пришлите его значение, для этой иконки нужна поддержка расшифровки.
|
||||
|
||||
**Виртуализация и `hasMore`.** 1С виртуализирует и динамические списки, и табличные части — в DOM лежит только окно видимых строк. Поля `total` / `shown` — это размер DOM-окна, а **не** размер коллекции. Чтобы понять, есть ли строки за пределами окна, используйте `hasMore`:
|
||||
|
||||
```js
|
||||
|
||||
Reference in New Issue
Block a user