mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-19 17:19:42 +03:00
feat(web-test): exact-match при выборе типа в pickFromTypeDialog
Диалог выбора типа матчил по подстроке и падал «multiple types match», даже когда точное совпадение присутствовало в выдаче (напр. поиск «Контрагент» давал «Банковская карта контрагента», «Договор с контрагентом», …, «Контрагент» — и движок ругался, хотя точная строка была видна). pickFromTypeDialog теперь предпочитает точное совпадение (resolveExact: единственный матч, либо единственная строка, равная искомому имени после нормализации регистра/ё) — кликает именно её и жмёт OK. Применяется и в scan-пути (мелкие списки), и после Ctrl+F (большие виртуальные списки). Добавлен ограниченный скролл-скан (PageDown ×3) на случай, когда точная строка чуть ниже первого окна. Ошибка неоднозначности остаётся, только если единственного точного совпадения действительно нет. Стенд: в СписокТипов добавлен подстрочный дубль «Дата документа» рядом с «Дата» для детерминированной проверки exact-match. Тест 16-tree-form покрывает scan-путь (выбирается точное «Дата»). Проверено: регресс web-test 22/22, живой E2E на типовой Консоли запросов (ссылочный тип через Ctrl+F + примитив без регресса). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
80ffed9a28
commit
ffb380187f
@@ -857,6 +857,9 @@ export const steps = [
|
||||
\tСписокТипов.Добавить("Число");
|
||||
\tСписокТипов.Добавить("Дата");
|
||||
\tСписокТипов.Добавить("Булево");
|
||||
\t// Подстрочный дубль «Дата» — для проверки exact-match в pickFromTypeDialog:
|
||||
\t// поиск «Дата» даёт 2 совпадения, движок должен выбрать точное «Дата», не «Дата документа».
|
||||
\tСписокТипов.Добавить("Дата документа");
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
|
||||
@@ -95,6 +95,20 @@ export default async function({ navigateLink, clickElement, closeForm, readTable
|
||||
assert.equal(tovar01['Тип значения'], 'Число', 'ТипЗначения = Число');
|
||||
});
|
||||
|
||||
await step('choice-exact: при подстрочной неоднозначности выбирается точное совпадение', async () => {
|
||||
// СписокТипов содержит «Дата» и «Дата документа». Поиск «Дата» даёт 2 подстрочных
|
||||
// совпадения — pickFromTypeDialog должен предпочесть ТОЧНОЕ «Дата», а не ругаться
|
||||
// на неоднозначность и не выбрать «Дата документа» (Проблема 2 из bug-report).
|
||||
const r = await fillTableRow({ ТипЗначения: 'Дата' }, { row: 1 });
|
||||
const cell = r.filled?.find(f => f.field === 'ТипЗначения');
|
||||
assert.ok(cell, 'поле ТипЗначения в результате');
|
||||
assert.equal(cell.ok, true, 'ok=true (exact-match разрешил неоднозначность)');
|
||||
assert.equal(cell.method, 'choice', 'method=choice');
|
||||
const t = await readTable('Дерево');
|
||||
const tovar01 = t.rows.find(row => row['Номенклатура'] === 'Товар 01');
|
||||
assert.equal(tovar01['Тип значения'], 'Дата', 'выбрано точное «Дата», не «Дата документа»');
|
||||
});
|
||||
|
||||
await step('choice-cell-negative: несуществующий тип → ok:false/not_found (форма не закрывается)', async () => {
|
||||
// not_found гасит только диалог выбора типа (умный dismiss), исходная форма остаётся —
|
||||
// следующие шаги (picture) это подтверждают.
|
||||
|
||||
Reference in New Issue
Block a user