From 2326d4a3880c7f612aff609763d70e588df37b31 Mon Sep 17 00:00:00 2001 From: alkoleft Date: Sun, 24 Mar 2024 03:16:44 +0300 Subject: [PATCH 1/3] #249 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Установка реквизитов конструктора объекта --- .../Module.bsl | 18 +++++++- .../Forms/КлиентскийКонструктор/Module.bsl | 27 ++++++++++-- .../ObjectModule.bsl | 42 ++++++++++++++----- .../ОМ_ЮТКонструкторТестовыхДанных/Module.bsl | 29 +++++++++++++ 4 files changed, 101 insertions(+), 15 deletions(-) diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl index bc9a51a9..1639bbe7 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанныхСлужебный/Module.bsl @@ -27,6 +27,18 @@ КонецПроцедуры +Процедура УстановитьРеквизиты(Контекст, ЗначенияРеквизитов) Экспорт + + ТекущаяЗапись = ТекущаяЗапись(Контекст); + Для Каждого ЗначениеРеквизита Из ЗначенияРеквизитов Цикл + + ОписаниеРеквизита(Контекст, ЗначениеРеквизита.Ключ); + ТекущаяЗапись.Вставить(ЗначениеРеквизита.Ключ, ЗначениеРеквизита.Значение); + + КонецЦикла; + +КонецПроцедуры + Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, Знач ОграничениеТипа) Экспорт ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина); @@ -71,11 +83,15 @@ КонецПроцедуры -Процедура ДобавитьСтроку(Контекст) Экспорт +Процедура ДобавитьСтроку(Контекст, ЗначенияРеквизитов) Экспорт Запись = Новый Структура(); ДанныеТабличнойЧасти(Контекст).Добавить(Запись); + Если ЗначенияРеквизитов <> Неопределено Тогда + УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + КонецЕсли; + КонецПроцедуры Процедура УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение = Неопределено) Экспорт diff --git a/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl b/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl index adec115e..bc1f2d7b 100644 --- a/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl +++ b/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/Forms/КлиентскийКонструктор/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -46,6 +46,23 @@ КонецФункции +// Устанавливает значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбщийМодуль - Установить реквизиты +&НаКлиенте +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает фиктивное значение реквизита создаваемого объекта. // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части. @@ -122,13 +139,17 @@ КонецФункции // Добавляет новую строку табличной части объекта. +// При необходимости можно выполнить установку реквизитов новой строки +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой строки // // Возвращаемое значение: // ОбщийМодуль - Конструктор &НаКлиенте -Функция ДобавитьСтроку() Экспорт +Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст); + ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст, ЗначенияРеквизитов); Возврат ЭтотОбъект; КонецФункции diff --git a/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl b/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl index 8f338cd2..978555ff 100644 --- a/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl +++ b/exts/yaxunit/src/DataProcessors/ЮТКонструкторТестовыхДанных/ObjectModule.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2023 BIA-Technologies Limited Liability Company +// Copyright 2021-2024 BIA-Technologies Limited Liability Company // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ // Значение - Произвольный - Значение реквизита объекта или табличной части // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Установить(ИмяРеквизита, Значение) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение); @@ -44,6 +44,22 @@ КонецФункции +// Устанавливает значения реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливаются значения реквизитов строки табличной части +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Установить реквизиты +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов); + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает фиктивное значение реквизита создаваемого объекта. // // Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части. @@ -62,7 +78,7 @@ // - Неопределено - Будет сгенерировано значение, на основании типа реквизита, если реквизит составной, то будет использован случайный тип // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа); @@ -82,7 +98,7 @@ // * Для перечислений (в том числе системных) выбирается случайно значение перечисления // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ФикцияОбязательныхПолей() Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст); @@ -96,7 +112,7 @@ // ИмяТабличнойЧасти - Строка - Имя табличной части // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ТабличнаяЧасть(ИмяТабличнойЧасти) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти); @@ -107,7 +123,7 @@ // Переключает конструктор на заполнение объекта. // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция Объект() Экспорт ЮТКонструкторТестовыхДанныхСлужебный.ТабличнаяЧасть(Контекст, Неопределено); @@ -116,12 +132,16 @@ КонецФункции // Добавляет новую строку табличной части объекта. +// При необходимости можно выполнить установку реквизитов новой строки +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой строки // // Возвращаемое значение: -// ОбщийМодуль - Конструктор -Функция ДобавитьСтроку() Экспорт +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор +Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст); + ЮТКонструкторТестовыхДанныхСлужебный.ДобавитьСтроку(Контекст, ЗначенияРеквизитов); Возврат ЭтотОбъект; КонецФункции @@ -133,7 +153,7 @@ // Значение - Произвольный - Значение дополнительного свойства // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение); @@ -167,7 +187,7 @@ // ОбменДаннымиЗагрузка - Булево - Записать объект с признаком `ОбменДанными.Загрузка = Истина` // // Возвращаемое значение: -// ОбщийМодуль - Конструктор +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ДобавитьЗапись(ОбменДаннымиЗагрузка = Ложь) Экспорт ЮТКонструкторТестовыхДанныхСлужебный.Записать(Контекст, Ложь, ОбменДаннымиЗагрузка); diff --git a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl index 44f7685b..97a0e372 100644 --- a/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl @@ -29,6 +29,7 @@ .ДобавитьТест("Фикция_ОбщийРеквизит") .ДобавитьТест("ФикцияОбязательныхПолей") .ДобавитьТест("СоздатьГруппу") + .ДобавитьТест("УстановитьРеквизиты") ; КонецПроцедуры @@ -268,4 +269,32 @@ КонецПроцедуры +Процедура УстановитьРеквизиты() Экспорт + + Поставщик = ЮТест.Данные().СоздатьЭлемент("Справочник.Контрагенты"); + Склад = ЮТест.Данные().СоздатьЭлемент("Справочник.Склады"); + Товар = ЮТест.Данные().СоздатьЭлемент("Справочник.Товары"); + Цена = ЮТест.Данные().СлучайноеЧисло(99, 2); + + Реквизиты = Новый Структура("Поставщик, Склад", Поставщик, Склад); + РеквизитыСтроки = Новый Структура("Товар, Цена", Товар, Цена); + + Данные = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара") + .УстановитьРеквизиты(Реквизиты) + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .УстановитьРеквизиты(РеквизитыСтроки) + .ДобавитьСтроку(РеквизитыСтроки) + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Данные) + .Свойство("Поставщик").Равно(Поставщик) + .Свойство("Склад").Равно(Склад) + .Свойство("Товары[0].Товар").Равно(Товар) + .Свойство("Товары[0].Цена").Равно(Цена) + .Свойство("Товары[1].Товар").Равно(Товар) + .Свойство("Товары[1].Цена").Равно(Цена); + +КонецПроцедуры + #КонецОбласти From d151a810c5f6013b2bd64390b82e7a9628dc1e1c Mon Sep 17 00:00:00 2001 From: alkoleft Date: Sun, 24 Mar 2024 03:19:59 +0300 Subject: [PATCH 2/3] #249 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Установка реквизитов конструктора объекта XDTO --- .../ЮТКонструкторОбъектаXDTO/ObjectModule.bsl | 17 +++++++++++++++++ .../Обр_ЮТКонструкторОбъектаXDTO_МО/Module.bsl | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/exts/yaxunit/src/DataProcessors/ЮТКонструкторОбъектаXDTO/ObjectModule.bsl b/exts/yaxunit/src/DataProcessors/ЮТКонструкторОбъектаXDTO/ObjectModule.bsl index bf9e7145..bb7da505 100644 --- a/exts/yaxunit/src/DataProcessors/ЮТКонструкторОбъектаXDTO/ObjectModule.bsl +++ b/exts/yaxunit/src/DataProcessors/ЮТКонструкторОбъектаXDTO/ObjectModule.bsl @@ -45,6 +45,23 @@ КонецФункции +// Устанавливает значения реквизитов объекта. +// +// Параметры: +// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторОбъектаXDTO - Конструктор +Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт + + Для Каждого ЗначениеРеквизита Из ЗначенияРеквизитов Цикл + ТекущийОбъект[ЗначениеРеквизита.Ключ] = ЗначениеРеквизита.Значение; + КонецЦикла; + + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает фиктивное значение реквизита объекта. // // На основании типа реквизита генерируется фиктивное значение. diff --git a/tests/src/CommonModules/Обр_ЮТКонструкторОбъектаXDTO_МО/Module.bsl b/tests/src/CommonModules/Обр_ЮТКонструкторОбъектаXDTO_МО/Module.bsl index 0d4d195f..1f8c6a58 100644 --- a/tests/src/CommonModules/Обр_ЮТКонструкторОбъектаXDTO_МО/Module.bsl +++ b/tests/src/CommonModules/Обр_ЮТКонструкторОбъектаXDTO_МО/Module.bsl @@ -22,6 +22,7 @@ ЮТТесты .ДобавитьТест("Установить") + .ДобавитьТест("УстановитьРеквизиты") .ДобавитьТест("Фикция") .ДобавитьТест("ФикцияОбязательныхПолей") .ДобавитьТест("ФикцияНезаполненных") @@ -52,6 +53,23 @@ КонецПроцедуры +Процедура УстановитьРеквизиты() Экспорт + + Номер = ЮТест.Данные().СлучайнаяСтрока(9); + Сумма = ЮТест.Данные().СлучайноеЧисло(); + Реквизиты = Новый Структура("Number, Сумма", Номер, Сумма); + + Объект = НовыйКонструктор() + .УстановитьРеквизиты(Реквизиты) + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Объект) + .ИмеетТип(Тип("ОбъектXDTO")) + .Свойство("Number").Равно(Номер) + .Свойство("Сумма").Равно(Сумма); + +КонецПроцедуры + Процедура Фикция() Экспорт Объект = НовыйКонструктор() From 35be29e205ebc8e5f1f8491442d69b4130831090 Mon Sep 17 00:00:00 2001 From: alkoleft Date: Sun, 24 Mar 2024 03:22:17 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ЮТМетаданныеСлужебныйВызовСервера/Module.bsl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl index d9c411fb..24fa37bd 100644 --- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl @@ -345,12 +345,15 @@ АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать; Для Каждого Реквизит Из Метаданные.ОбщиеРеквизиты Цикл + ЭлементСостава = Реквизит.Состав.Найти(МетаданныеОбъекта); - Если ЭлементСостава.Использование = Использовать Или Реквизит.АвтоИспользование = АвтоИспользование И ЭлементСостава.Использование = Авто Тогда + Если ЭлементСостава = Неопределено Тогда + Продолжить; + ИначеЕсли ЭлементСостава.Использование = Использовать Или Реквизит.АвтоИспользование = АвтоИспользование И ЭлементСостава.Использование = Авто Тогда КоллекцияОписаний.Вставить(Реквизит.Имя, НовоеОписаниеРеквизита(Реквизит, Ложь)); КонецЕсли; - + КонецЦикла; КонецПроцедуры