mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-11 00:14:56 +03:00
feat(web-test): первоначальное заполнение фикстур (M1 Step 5)
Покрытие matrix #9 — данные для smoke-тестов: - Константа ДанныеЗаполнены (Boolean) — флаг идемпотентности - ОбщиеФункции.ЗаполнитьФикстурыЕслиНужно() — транзакционно создаёт: * 4 контрагента (ООО Север/Юг/Восток, АО Запад) * 25 номенклатуры в группах Товары (15) и Услуги (10) * 3 приходных накладных по 3 строки - Ext/ManagedApplicationModule.bsl с ПриНачалеРаботыСистемы — вызывает заполнение при первом старте тонкого клиента Платформенная верификация компилирует BSL (43 шага, 23.7s). Реальное выполнение заполнения произойдёт при первом подключении web-test runner-а к синтетической базе. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -159,6 +159,18 @@ export const steps = [
|
||||
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'Constants/ОсновнаяВалюта' },
|
||||
},
|
||||
|
||||
// Константа ДанныеЗаполнены — флаг первоначального заполнения фикстур
|
||||
{
|
||||
name: 'meta-compile: Константа ДанныеЗаполнены',
|
||||
script: 'meta-compile/scripts/meta-compile',
|
||||
input: {
|
||||
type: 'Constant', name: 'ДанныеЗаполнены',
|
||||
valueType: 'Boolean',
|
||||
},
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}' },
|
||||
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'Constants/ДанныеЗаполнены' },
|
||||
},
|
||||
|
||||
// Общий модуль ОбщиеФункции
|
||||
{
|
||||
name: 'meta-compile: Общий модуль ОбщиеФункции',
|
||||
@@ -180,6 +192,104 @@ export const steps = [
|
||||
Процедура ВызватьТестовоеИсключение() Экспорт
|
||||
\tВызватьИсключение "Тестовое исключение";
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаполнитьФикстурыЕслиНужно() Экспорт
|
||||
\tЕсли Константы.ДанныеЗаполнены.Получить() Тогда
|
||||
\t\tВозврат;
|
||||
\tКонецЕсли;
|
||||
\tНачатьТранзакцию();
|
||||
\tПопытка
|
||||
\t\tЗаполнитьКонтрагентов();
|
||||
\t\tЗаполнитьНоменклатуру();
|
||||
\t\tЗаполнитьДокументы();
|
||||
\t\tКонстанты.ДанныеЗаполнены.Установить(Истина);
|
||||
\t\tЗафиксироватьТранзакцию();
|
||||
\tИсключение
|
||||
\t\tОтменитьТранзакцию();
|
||||
\t\tВызватьИсключение;
|
||||
\tКонецПопытки;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаполнитьКонтрагентов()
|
||||
\tСписок = Новый Массив;
|
||||
\tСписок.Добавить(Новый Структура("Имя,ИНН", "ООО Север", "7700000001"));
|
||||
\tСписок.Добавить(Новый Структура("Имя,ИНН", "ООО Юг", "7700000002"));
|
||||
\tСписок.Добавить(Новый Структура("Имя,ИНН", "ООО Восток", "7700000003"));
|
||||
\tСписок.Добавить(Новый Структура("Имя,ИНН", "АО Запад", "7700000004"));
|
||||
\tДля Каждого Запись Из Список Цикл
|
||||
\t\tЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
|
||||
\t\tЭлемент.Наименование = Запись.Имя;
|
||||
\t\tЭлемент.ИНН = Запись.ИНН;
|
||||
\t\tЭлемент.Записать();
|
||||
\tКонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаполнитьНоменклатуру()
|
||||
\tГруппаТовары = СоздатьГруппуНоменклатуры("Товары");
|
||||
\tГруппаУслуги = СоздатьГруппуНоменклатуры("Услуги");
|
||||
\tДля Сч = 1 По 15 Цикл
|
||||
\t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
|
||||
\t\tЭлемент.Родитель = ГруппаТовары;
|
||||
\t\tЭлемент.Наименование = "Товар " + Формат(Сч, "ЧЦ=2; ЧВН=");
|
||||
\t\tЭлемент.Артикул = "T" + Формат(Сч, "ЧЦ=4; ЧВН=");
|
||||
\t\tЭлемент.Цена = 100 * Сч;
|
||||
\t\tЭлемент.Активен = Истина;
|
||||
\t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар;
|
||||
\t\tЭлемент.Записать();
|
||||
\tКонецЦикла;
|
||||
\tДля Сч = 1 По 10 Цикл
|
||||
\t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
|
||||
\t\tЭлемент.Родитель = ГруппаУслуги;
|
||||
\t\tЭлемент.Наименование = "Услуга " + Формат(Сч, "ЧЦ=2; ЧВН=");
|
||||
\t\tЭлемент.Артикул = "U" + Формат(Сч, "ЧЦ=4; ЧВН=");
|
||||
\t\tЭлемент.Цена = 500 * Сч;
|
||||
\t\tЭлемент.Активен = Истина;
|
||||
\t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга;
|
||||
\t\tЭлемент.Записать();
|
||||
\tКонецЦикла;
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СоздатьГруппуНоменклатуры(Имя)
|
||||
\tГруппа = Справочники.Номенклатура.СоздатьГруппу();
|
||||
\tГруппа.Наименование = Имя;
|
||||
\tГруппа.Записать();
|
||||
\tВозврат Группа.Ссылка;
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьДокументы()
|
||||
\tЗапросК = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 5 Контрагенты.Ссылка КАК Контрагент ИЗ Справочник.Контрагенты КАК Контрагенты");
|
||||
\tКонтрагенты = ЗапросК.Выполнить().Выгрузить().ВыгрузитьКолонку("Контрагент");
|
||||
\tЗапросН = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 10 Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа");
|
||||
\tНоменклатура = ЗапросН.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
|
||||
\tЕсли Контрагенты.Количество() = 0 Или Номенклатура.Количество() = 0 Тогда
|
||||
\t\tВозврат;
|
||||
\tКонецЕсли;
|
||||
\tДля Сч = 1 По 3 Цикл
|
||||
\t\tДок = Документы.ПриходнаяНакладная.СоздатьДокумент();
|
||||
\t\tДок.Дата = ТекущаяДата();
|
||||
\t\tДок.Контрагент = Контрагенты[(Сч - 1) % Контрагенты.Количество()];
|
||||
\t\tДок.Склад = "Основной";
|
||||
\t\tДля Поз = 1 По 3 Цикл
|
||||
\t\t\tСтрока = Док.Товары.Добавить();
|
||||
\t\t\tСтрока.Номенклатура = Номенклатура[(Сч * Поз) % Номенклатура.Количество()];
|
||||
\t\t\tСтрока.Количество = Поз * 10;
|
||||
\t\t\tСтрока.Цена = Поз * 100;
|
||||
\t\t\tСтрока.Сумма = Строка.Количество * Строка.Цена;
|
||||
\t\tКонецЦикла;
|
||||
\t\tДок.Записать(РежимЗаписиДокумента.Запись);
|
||||
\tКонецЦикла;
|
||||
КонецПроцедуры
|
||||
`,
|
||||
},
|
||||
|
||||
// ManagedApplicationModule — вызывает заполнение фикстур при первом запуске
|
||||
{
|
||||
name: 'writeFile: ManagedApplicationModule.bsl',
|
||||
writeFile: 'Ext/ManagedApplicationModule.bsl',
|
||||
content: `&НаКлиенте
|
||||
Процедура ПриНачалеРаботыСистемы()
|
||||
\tОбщиеФункции.ЗаполнитьФикстурыЕслиНужно();
|
||||
КонецПроцедуры
|
||||
`,
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user