diff --git a/tests/skills/integration/build-webtest-config.test.mjs b/tests/skills/integration/build-webtest-config.test.mjs index 1dfabc70..1b8b3b45 100644 --- a/tests/skills/integration/build-webtest-config.test.mjs +++ b/tests/skills/integration/build-webtest-config.test.mjs @@ -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ОбщиеФункции.ЗаполнитьФикстурыЕслиНужно(); +КонецПроцедуры `, },