mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-23 13:11:05 +03:00
Резолверов колонок было пять, все независимые, и каждый ломался по-своему:
readTable (геометрия X + Y-подряды), clickElement (геометрия X, без Y),
поиск строки {кол: знач} (геометрия X, без Y и fixed-гарда), filterList
(порядковый индекс шапки), fillTableRow (colindex — единственный целый).
Механика поломки (снята живьём на списке задач ERP): шапка «Исполнитель»
широкая (x 1085..1515) и накрывает «Срок» (1085..1251) и «Выполнена»
(1251..1515). Ячейка «Исполнитель» имеет центр 1300 → приписывается к группе
«Выполнена» → та получает лишний под-ряд → срабатывает эвристика «объединённая
шапка» → фантомные «Выполнена 1/2», а значения соседей склеиваются через ' / '.
Теперь COLUMN_MODEL_FN (dom/_shared.mjs) — единственный источник правды:
buildColumnModel / columnForCell / cellForColumn / resolveColumnByName. Идентичность
колонки — colindex (собственный id колонки в 1С, есть и на шапке, и на ячейке);
геометрия работает только там, где своей шапки у ячейки нет — под-ряды
объединённой шапки («Субконто Дт» над тремя ячейками). Путь записи пришёл к этому
решению раньше (grid-edit.mjs: «reliable across merged headers») — остальные
выровнены по нему.
Следствие: имя колонки из readTable теперь годится для клика/заполнения/фильтра —
раньше readTable отдавал «Субконто Дт 2», а клик про такое имя не знал.
Попутно закрыт второй дефект: безымянная picture-колонка определялась по ПЕРВОЙ
строке, а picField над Boolean не рисует картинку при Ложь → колонка пропадала из
columns целиком. Модель сэмплит до 10 строк и ищет ячейку по colindex.
Проверено:
- 24-multirow-header (стенд, оба паттерна ERP) — зелёный; до правки красный;
- клик проверяется по факту (DOM select+focus), а не по эху clicked.column:
до правки клик по «Срок» молча жал «Исполнитель 2» и рапортовал успех;
- живьём на ERP: список задач — 9 честных колонок вместо фантомов, значения на
местах; форма операции (шапка 2 этажа, строка 3 под-ряда) — «Субконто Дт/Кт 1..3»
сохранены, ничего не поехало;
- полный регресс 28/28.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
// web-test dom v1.20 — facade re-exporting injectable DOM scripts from dom/
|
|
// Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
|
/**
|
|
* Facade: re-exports DOM selector & semantic mapping script generators.
|
|
* Внутренности живут в dom/*. Публичный набор имён неизменен.
|
|
*
|
|
* All functions return JavaScript strings for page.evaluate().
|
|
* They produce clean semantic structures — no DOM IDs or CSS classes leak out.
|
|
* Only non-default property values are included to minimize response size.
|
|
*/
|
|
|
|
export {
|
|
detectFormScript,
|
|
closeCrossScript,
|
|
readFormScript,
|
|
findClickTargetScript,
|
|
findFieldButtonScript,
|
|
resolveFieldsScript,
|
|
detectNewFormScript,
|
|
findSearchInputScript,
|
|
findNamedButtonScript,
|
|
findCompareTypeRadioScript,
|
|
isFormVisibleScript,
|
|
findPatternInputIdScript,
|
|
isTypeDialogScript,
|
|
isNotInListCloudVisibleScript,
|
|
clickShowAllInNotInListCloudScript,
|
|
findChildFormByButtonScript,
|
|
readTypeDialogVisibleRowsScript,
|
|
} from './dom/forms.mjs';
|
|
|
|
export {
|
|
findFirstGridCellCoordsScript,
|
|
findColumnFirstCellCoordsScript,
|
|
readFieldSelectorInfoScript,
|
|
pickFieldInSelectorDropdownScript,
|
|
readFilterDialogInfoScript,
|
|
findFilterBadgeCloseScript,
|
|
findFirstFilterBadgeCloseScript,
|
|
} from './dom/filter.mjs';
|
|
|
|
export {
|
|
isInputFocusedScript,
|
|
isInputFocusedInGridScript,
|
|
findOpenPopupScript,
|
|
} from './dom/edit-state.mjs';
|
|
|
|
export {
|
|
readEddScript,
|
|
isEddVisibleScript,
|
|
clickEddItemViaDispatchScript,
|
|
clickShowAllInEddScript,
|
|
} from './dom/edd.mjs';
|
|
|
|
export { getFormStateScript } from './dom/form-state.mjs';
|
|
|
|
export {
|
|
resolveGridScript,
|
|
readTableScript,
|
|
countGridRowsScript,
|
|
isTreeGridScript,
|
|
findGridHeadCenterCoordsScript,
|
|
getSelectedOrLastRowIndexScript,
|
|
findGridCellScript,
|
|
findFocusCellScript,
|
|
snapshotGridScript,
|
|
resolveCellTargetScript,
|
|
} from './dom/grid.mjs';
|
|
|
|
export {
|
|
sortFieldKeysByColindexScript,
|
|
findCellCoordsByFieldsScript,
|
|
findNextCellCoordsByKeyScript,
|
|
findCheckboxAtPointScript,
|
|
findRowCommitClickCoordsScript,
|
|
getGridEditCheckScript,
|
|
readActiveGridCellScript,
|
|
getElementCenterCoordsByIdScript,
|
|
} from './dom/grid-edit.mjs';
|
|
|
|
export {
|
|
readSectionsScript,
|
|
readTabsScript,
|
|
switchTabScript,
|
|
readCommandsScript,
|
|
navigateSectionScript,
|
|
openCommandScript,
|
|
} from './dom/nav.mjs';
|
|
|
|
export {
|
|
readSubmenuScript,
|
|
clickPopupItemScript,
|
|
readCloudDDScript,
|
|
} from './dom/submenu.mjs';
|
|
|
|
export { checkErrorsScript } from './dom/errors.mjs';
|