feat(web-test): M5-pre #3 — textEdit:false поле + 03-fillfields/direct-edit-form

Расширение синтетики: реквизит Поставщик типа CatalogRef.Контрагенты
добавлен в шапку ПриходнаяНакладная. Элемент формы Поставщик скомпилирован
с textEdit:false (новый DSL ключ form-compile v1.21 из коммита 32bf9c1):
ручной ввод запрещён, селект-кнопки нет, выбор только через форму выбора
по pick-кнопке.

Новый шаг 03-fillfields/direct-edit-form (~7s) — fillFields на Поставщик
('ООО Юг') возвращает method:'form', минуя обычные paste/typeahead/dropdown
ветки. fillFields внутренне детектит textEdit:false и сразу идёт через
форму выбора (selectValue path).

Полный регресс **18/18 зелёный** (8m 40.6s).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-12 16:11:46 +03:00
parent ddebd7b6df
commit 62e864e474
2 changed files with 27 additions and 0 deletions
@@ -147,6 +147,10 @@ export const steps = [
// Источник — составной тип (для 03-fillfields/composite).
// Платформа покажет селектор типа в UI перед выбором значения.
{ name: 'Источник', type: 'CatalogRef.Контрагенты + CatalogRef.Номенклатура + CatalogRef.Организации' },
// Поставщик — обычная ссылка, но на форме элемент с textEdit:false
// (для 03-fillfields/direct-edit-form). Ручной ввод запрещён,
// выбор только через pick-кнопку → форма выбора.
{ name: 'Поставщик', type: 'CatalogRef.Контрагенты' },
{ name: 'Комментарий', type: 'String', length: 200 },
],
tabularSections: [{
@@ -601,6 +605,8 @@ export const steps = [
{ input: 'Контрагент', path: 'Объект.Контрагент', title: 'Контрагент' },
{ input: 'Склад', path: 'Объект.Склад', title: 'Склад' },
{ input: 'Источник', path: 'Объект.Источник', title: 'Источник' },
// textEdit:false — ручной ввод запрещён, только pick → форма выбора
{ input: 'Поставщик', path: 'Объект.Поставщик', title: 'Поставщик', textEdit: false },
{ input: 'Комментарий', path: 'Объект.Комментарий', title: 'Комментарий' },
{ table: 'Товары', path: 'Объект.Товары', title: 'Товары', changeRowSet: true, columns: [
{ input: 'Номенклатура', path: 'Объект.Товары.Номенклатура', title: 'Номенклатура' },
+21
View File
@@ -154,4 +154,25 @@ export default async function({ navigateSection, openCommand, clickElement, fill
await closeForm({ save: false });
});
await step('direct-edit-form: textEdit:false → fillFields method=form', async () => {
// ПриходнаяНакладная.Поставщик — обычный CatalogRef.Контрагенты, но
// элемент формы с textEdit:false: ручной ввод запрещён, выбор только
// через форму выбора (не через paste/typeahead/dropdown).
await navigateSection('Склад');
await openCommand('Приходная накладная');
await clickElement('Создать');
const r = await fillFields({ 'Поставщик': 'ООО Юг' });
log('Поставщик method=' + r.filled[0]?.method);
assert.equal(r.filled[0]?.ok, true, 'Поставщик заполнен');
assert.equal(r.filled[0]?.method, 'form',
'textEdit:false принуждает к method=form (минуя paste/typeahead/dropdown)');
const state = await getFormState();
const p = state.fields?.find(f => f.name === 'Поставщик');
assert.equal(p?.value, 'ООО Юг', 'значение Поставщик установилось');
await closeForm({ save: false });
});
}