From 5a4139c60760cb593a94a275067c01f809ba8cd7 Mon Sep 17 00:00:00 2001 From: alkoleft <alkoleft@gmail.com> Date: Fri, 19 May 2023 03:17:58 +0300 Subject: [PATCH] #90 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Унификация создания данных Создание групп --- .../src/CommonModules/ЮТОбщий/Module.bsl | 3 +- .../CommonModules/ЮТТестовыеДанные/Module.bsl | 51 +++++++++++++++- .../ЮТТестовыеДанныеВызовСервера/Module.bsl | 60 ++++--------------- .../ОМ_ЮТКонструкторТестовыхДанных/Module.bsl | 12 ++++ .../ОМ_ЮТТестовыеДанные/Module.bsl | 12 +++- 5 files changed, 85 insertions(+), 53 deletions(-) diff --git a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl index fad62160..0ab71e4a 100644 --- a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl @@ -175,12 +175,11 @@ Функция ЗначениеСтруктуры(Знач ИсходнаяСтруктура, ИмяПоля, Знач ЗначениеПоУмолчанию = Неопределено, ПроверятьЗаполненность = Ложь) Экспорт Если ПустаяСтрока(ИмяПоля) Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; ЗначениеПоля = Неопределено; + Если ИсходнаяСтруктура.Свойство(ИмяПоля, ЗначениеПоля) Тогда Если ПроверятьЗаполненность И ЗначениеЗаполнено(ЗначениеПоля) Или Не ПроверятьЗаполненность Тогда Возврат ЗначениеПоля; diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl index 1b4cb406..1f938707 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl @@ -29,8 +29,19 @@ // ЛюбаяСсылка - Ссылка на созданный объект Функция СоздатьЭлемент(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЭлемент(Менеджер, Наименование, Реквизиты); + Если Реквизиты <> Неопределено Тогда + Данные = Реквизиты; + Иначе + Данные = Новый Структура; + КонецЕсли; + + Если ЗначениеЗаполнено(Наименование) Тогда + Данные.Вставить("Наименование", Наименование); + КонецЕсли; + + Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, Неопределено, Ложь); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); + Возврат Ссылка; КонецФункции @@ -45,12 +56,48 @@ // ДокументСсылка - Ссылка на созданный объект Функция СоздатьДокумент(Менеджер, Реквизиты = Неопределено) Экспорт - Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьДокумент(Менеджер, Реквизиты); + Если Реквизиты <> Неопределено Тогда + Данные = Реквизиты; + Иначе + Данные = Новый Структура; + КонецЕсли; + + Если Данные.Свойство("РежимЗаписи") Тогда + ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); + ПараметрыЗаписи.РежимЗаписи = Данные.РежимЗаписи; + Данные.Удалить("РежимЗаписи"); + КонецЕсли; + + Ссылка = ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Менеджер, Данные, ПараметрыЗаписи, Ложь); ЮТТестовыеДанныеСлужебный.ДобавитьТестовуюЗапись(Ссылка); + Возврат Ссылка; КонецФункции +// Создает новую группу +// +// Параметры: +// Менеджер - Произвольный - Менеджер справочника/ПВХ и тд. +// Наименование - Строка, Неопределено - Наименование элемента +// Реквизиты - Структура, Неопределено - Значения реквизитов элемента +// +// Возвращаемое значение: +// ЛюбаяСсылка - Ссылка на созданную группу +Функция СоздатьГруппу(Менеджер, Наименование = Неопределено, Реквизиты = Неопределено) Экспорт + + Если Реквизиты <> Неопределено Тогда + Данные = Реквизиты; + Иначе + Данные = Новый Структура; + КонецЕсли; + + Данные.Вставить("ЭтоГруппа", Истина); + + Возврат СоздатьЭлемент(Менеджер, Наименование, Данные); + +КонецФункции + // Генерирует и возвращает случайное число. // // Параметры: diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl index a8ce26d9..b59bf709 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl @@ -18,49 +18,6 @@ #Область СлужебныйПрограммныйИнтерфейс -Функция СоздатьЭлемент(Знач Менеджер, Знач Наименование, Знач Реквизиты) Экспорт - - Менеджер = ЮТОбщий.Менеджер(Менеджер); - - Объект = Менеджер.СоздатьЭлемент(); - - Если ЗначениеЗаполнено(Наименование) Тогда - Объект.Наименование = Наименование; - ИначеЕсли Объект.Метаданные().ДлинаНаименования > 0 Тогда - Объект.Наименование = ЮТТестовыеДанные.УникальнаяСтрока(); - КонецЕсли; - - Если Реквизиты <> Неопределено Тогда - ЗаполнитьЗначенияСвойств(Объект, Реквизиты); - КонецЕсли; - - Если Объект.Метаданные().ДлинаКода И НЕ ЗначениеЗаполнено(Объект.Код) Тогда - Объект.УстановитьНовыйКод(); - КонецЕсли; - - Возврат ЗаписатьОбъект(Объект); - -КонецФункции - -Функция СоздатьДокумент(Знач Менеджер, Знач Реквизиты) Экспорт - - РежимЗаписи = РежимЗаписиДокумента.Запись; - - Менеджер = ЮТОбщий.Менеджер(Менеджер); - - Объект = Менеджер.СоздатьДокумент(); - Объект.Дата = ТекущаяДатаСеанса(); - Объект.УстановитьНовыйНомер(); - - Если Реквизиты <> Неопределено Тогда - ЗаполнитьЗначенияСвойств(Объект, Реквизиты); - РежимЗаписи = ЮТОбщий.ЗначениеСтруктуры(Реквизиты, "РежимЗаписи", РежимЗаписи); - КонецЕсли; - - Возврат ЗаписатьОбъект(Объект, , РежимЗаписи); - -КонецФункции - Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи, Знач ВернутьОбъект) Экспорт Менеджер = ЮТОбщий.Менеджер(Менеджер); @@ -103,7 +60,7 @@ ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер)); - Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа); + Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа, Данные); ЗаполнитьЗначенияСвойств(Объект, Данные); Если ОписаниеОбъектаМетаданных.ОписаниеТипа.ТабличныеЧасти Тогда @@ -201,7 +158,7 @@ ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя); Менеджер = Новый (ИмяТипаМенеджера); - Объект = СоздатьОбъект(Менеджер, ОписаниеТипа); + Объект = СоздатьОбъект(Менеджер, ОписаниеТипа, РеквизитыЗаполнения); Если ЗначениеЗаполнено(РеквизитыЗаполнения) Тогда ЗаполнитьЗначенияСвойств(Объект, РеквизитыЗаполнения); @@ -223,13 +180,20 @@ // См. ОписаниеМенеджера // Менеджер - Произвольный - Менеджер // ОписаниеТипа - см. ЮТМетаданные.ОписаниеОбъектМетаданных -// +// Данные - Структура // Возвращаемое значение: // Произвольный - Создать объект -Функция СоздатьОбъект(Менеджер, ОписаниеТипа) +Функция СоздатьОбъект(Менеджер, ОписаниеТипа, Данные) Если ОписаниеТипа.Конструктор = "СоздатьЭлемент" Тогда - Результат = Менеджер.СоздатьЭлемент(); + + ЭтоГруппа = ?(Данные = Неопределено, Ложь, ЮТОбщий.ЗначениеСтруктуры(Данные, "ЭтоГруппа", Ложь)); + Если ЭтоГруппа Тогда + Результат = Менеджер.СоздатьГруппу(); + Иначе + Результат = Менеджер.СоздатьЭлемент(); + КонецЕсли; + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьДокумент" Тогда Результат = Менеджер.СоздатьДокумент(); ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьСчет" Тогда diff --git a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl index f8f2364a..5ed0a8ef 100644 --- a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl @@ -25,6 +25,7 @@ .ДобавитьТест("ЗаполнитьДокумент") .ДобавитьТест("Фикция") .ДобавитьТест("ФикцияОбязательныхПолей") + .ДобавитьТест("СоздатьГруппу") ; КонецПроцедуры @@ -178,4 +179,15 @@ .Свойство("Курс").Заполнено(); КонецПроцедуры +Процедура СоздатьГруппу() Экспорт + + Группа = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Установить("ЭтоГруппа", Истина) + .Записать(); + + ЭтоГруппа = ЮТЗапросы.ЗначениеРеквизита(Группа, "ЭтоГруппа"); + ЮТест.ОжидаетЧто(ЭтоГруппа).ЭтоИстина(); + +КонецПроцедуры + #КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl index 1afbd12c..4aa6e819 100644 --- a/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТТестовыеДанные/Module.bsl @@ -24,7 +24,8 @@ .ВТранзакции() .УдалениеТестовыхДанных() .ДобавитьТест("Удалить") - .ДобавитьТест("ВариантыПараметров"); + .ДобавитьТест("ВариантыПараметров") + .ДобавитьТест("СоздатьГруппу") ; КонецПроцедуры @@ -78,5 +79,14 @@ КонецПроцедуры +Процедура СоздатьГруппу() Экспорт + + Группа = ЮТест.Данные().СоздатьГруппу("Справочники.Товары"); + + ЭтоГруппа = ЮТЗапросы.ЗначениеРеквизита(Группа, "ЭтоГруппа"); + ЮТест.ОжидаетЧто(ЭтоГруппа).ЭтоИстина(); + +КонецПроцедуры + #КонецОбласти