feat(web-test): безшапочная таблица для регресса чтения/заполнения/клика

Обработка БезшапочнаяТаблица (подсистема Склад, роль Администратор) с формой,
несущей редактируемую таблицу значений со скрытой шапкой (Header=false):
колонки ссылка (Номенклатура) / число / число / булево-чекбокс, 3 предзаполненные
строки. Покрывает безшапочные гриды для readTable/fillTableRow/clickElement —
цель рефактора deriveGridColumns (сейчас readTable отдаёт hint об отсутствии
gridHead — ожидаемый RED до фазы движка).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-28 14:35:26 +03:00
parent 7af630d727
commit 022ba4e06c
@@ -486,6 +486,20 @@ export const steps = [
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'DataProcessors/МножественныйВыбор' },
},
// Обработка БезшапочнаяТаблица — обычная редактируемая таблица значений со скрытой
// шапкой (<Header>false</Header>) для регресса безшапочных гридов (deriveGridColumns):
// чтение (readTable), заполнение строк (fillTableRow) и клик по строке. Колонки разных
// типов: ссылка / число / булево (чекбокс).
{
name: 'meta-compile: Обработка БезшапочнаяТаблица',
script: 'meta-compile/scripts/meta-compile',
input: {
type: 'DataProcessor', name: 'БезшапочнаяТаблица',
},
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}' },
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'DataProcessors/БезшапочнаяТаблица' },
},
// Отчёт ОстаткиТоваров
{
name: 'meta-compile: Отчёт ОстаткиТоваров',
@@ -1331,6 +1345,61 @@ export const steps = [
`,
},
// Обработка БезшапочнаяТаблица — форма с редактируемой безшапочной таблицей значений.
{
name: 'form-add: Форма БезшапочнаяТаблица',
script: 'form-add/scripts/form-add',
args: { '-ObjectPath': '{workDir}/DataProcessors/БезшапочнаяТаблица.xml', '-FormName': 'ФормаОбработки' },
},
{
name: 'form-compile: Форма БезшапочнаяТаблица',
script: 'form-compile/scripts/form-compile',
input: {
title: 'Безшапочная таблица',
events: { OnCreateAtServer: 'ПриСозданииНаСервере' },
attributes: [
{ name: 'Объект', type: 'DataProcessorObject.БезшапочнаяТаблица', main: true },
{ name: 'Таблица', type: 'ValueTable', columns: [
{ name: 'Товар', type: 'CatalogRef.Номенклатура', title: 'Товар' },
{ name: 'Количество', type: 'Number(15,3)', title: 'Количество' },
{ name: 'Цена', type: 'Number(15,2)', title: 'Цена' },
{ name: 'Активен', type: 'Boolean', title: 'Активен' },
]},
],
elements: [
// header:false → <Header>false</Header>; changeRowSet → строки редактируемы.
// Колонки: ссылка (заполнение через форму выбора) + числа + булево (чекбокс).
{ table: 'Таблица', path: 'Таблица', header: false, changeRowSet: true, columns: [
{ input: 'Товар', path: 'Таблица.Товар', title: 'Товар' },
{ input: 'Количество', path: 'Таблица.Количество', title: 'Количество' },
{ input: 'Цена', path: 'Таблица.Цена', title: 'Цена' },
{ check: 'Активен', path: 'Таблица.Активен', title: 'Активен' },
]},
],
},
args: { '-JsonPath': '{inputFile}', '-OutputPath': '{workDir}/DataProcessors/БезшапочнаяТаблица/Forms/ФормаОбработки/Ext/Form.xml' },
validate: { script: 'form-validate/scripts/form-validate', flag: '-FormPath', path: 'DataProcessors/БезшапочнаяТаблица/Forms/ФормаОбработки/Ext/Form.xml' },
},
{
name: 'writeFile: БезшапочнаяТаблица form Module.bsl',
writeFile: 'DataProcessors/БезшапочнаяТаблица/Forms/ФормаОбработки/Ext/Form/Module.bsl',
content: `&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
\tЗапрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 3 Ссылка КАК Ссылка ИЗ Справочник.Номенклатура ГДЕ НЕ ЭтоГруппа УПОРЯДОЧИТЬ ПО Наименование");
\tВыборка = Запрос.Выполнить().Выбрать();
\tСч = 0;
\tПока Выборка.Следующий() Цикл
\t\tСтрока = Таблица.Добавить();
\t\tСтрока.Товар = Выборка.Ссылка;
\t\tСтрока.Количество = (Сч + 1) * 10;
\t\tСтрока.Цена = (Сч + 1) * 100;
\t\tСтрока.Активен = (Сч % 2 = 0);
\t\tСч = Сч + 1;
\tКонецЦикла;
КонецПроцедуры
`,
},
// ── 4. DCS for report ──
// Сначала добавляем макет ОсновнаяСхемаКомпоновкиДанных к отчёту (регистрируется
// в Reports/ОстаткиТоваров.xml + автоматически выставляется MainDataCompositionSchema),
@@ -1393,6 +1462,7 @@ export const steps = [
'Document.ПриходнаяНакладная',
'Report.ОстаткиТоваров',
'DataProcessor.МножественныйВыбор',
'DataProcessor.БезшапочнаяТаблица',
],
},
args: { '-DefinitionFile': '{inputFile}', '-OutputDir': '{workDir}' },
@@ -1431,6 +1501,7 @@ export const steps = [
'Report.ОстаткиТоваров: Use View',
'DataProcessor.ДеревоНоменклатуры: Use View',
'DataProcessor.МножественныйВыбор: Use View',
'DataProcessor.БезшапочнаяТаблица: Use View',
],
},
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}' },