diff --git a/tests/skills/integration/build-webtest-config.test.mjs b/tests/skills/integration/build-webtest-config.test.mjs index f3837a2b..6b952ddc 100644 --- a/tests/skills/integration/build-webtest-config.test.mjs +++ b/tests/skills/integration/build-webtest-config.test.mjs @@ -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: 'Номенклатура' }, diff --git a/tests/web-test/03-fillfields.test.mjs b/tests/web-test/03-fillfields.test.mjs index 39b4f47e..119d7cca 100644 --- a/tests/web-test/03-fillfields.test.mjs +++ b/tests/web-test/03-fillfields.test.mjs @@ -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 }); + }); }