diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 1ae9dc1df..e73340522 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -83,7 +83,7 @@ КонецПроцедуры -Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов) Экспорт +Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов, ТолькоНезаполненные) Экспорт ПроверитьИнициализациюКонтекста(Контекст); @@ -97,6 +97,14 @@ КонецЕсли; Для Каждого ИмяРеквизита Из КоллекцияИменРеквизитов Цикл + Если ТолькоНезаполненные Тогда + ЗначениеРеквизита = ЮТКоллекции.ЗначениеСтруктуры(ТекущаяЗапись, ИмяРеквизита); + + Если ЗначениеЗаполнено(ЗначениеРеквизита) Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + Реквизит = ОписаниеРеквизита(Контекст, ИмяРеквизита); ОписаниеРеквизитов.Вставить(ИмяРеквизита, Реквизит.Тип); КонецЦикла; diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" index 29c919864..dc074c8cd 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" @@ -120,7 +120,29 @@ &НаКлиенте Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь); + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает фиктивные значения незаполненных реквизитов текущей записи набора. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов записи части разделенные запятыми +// - Массив из Строка - Имена реквизитов записи +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор +&НаКлиенте +Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина); Возврат ЭтотОбъект; КонецФункции diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/ObjectModule.bsl" index 2703aa40f..6c089ab9c 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271/ObjectModule.bsl" @@ -114,7 +114,28 @@ // ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь); + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает фиктивные значения незаполненных реквизитов текущей записи набора. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов записи разделенные запятыми +// - Массив из Строка - Имена реквизитов записи +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор +Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина); Возврат ЭтотОбъект; КонецФункции diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" index 6250aa5ad..30121dc6c 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\232\320\273\320\270\320\265\320\275\321\202\321\201\320\272\320\270\320\271\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200/Module.bsl" @@ -110,7 +110,31 @@ &НаКлиенте Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь); + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает фиктивные значения незаполненных реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми +// - Массив из Строка - Имена реквизитов объекта или табличной части +// +// Возвращаемое значение: +// ОбщийМодуль - Конструктор +&НаКлиенте +Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина); Возврат ЭтотОбъект; КонецФункции diff --git "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" index cd1809358..af62eef21 100644 --- "a/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" +++ "b/exts/yaxunit/src/DataProcessors/\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/ObjectModule.bsl" @@ -105,7 +105,30 @@ // ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт - ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов); + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь); + Возврат ЭтотОбъект; + +КонецФункции + +// Устанавливает фиктивные значения незаполненных реквизитов создаваемого объекта. +// +// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части. +// +// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение. +// +// * Для примитивных значение генерируется случайное значение +// * Для ссылочных типов создается новый объект +// * Для перечислений (в том числе системных) выбирается случайно значение перечисления +// +// Параметры: +// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми +// - Массив из Строка - Имена реквизитов объекта или табличной части +// +// Возвращаемое значение: +// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор +Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт + + ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина); Возврат ЭтотОбъект; КонецФункции diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" index fb72c7142..a59af3d70 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\242\320\265\321\201\321\202\320\276\320\262\321\213\321\205\320\224\320\260\320\275\320\275\321\213\321\205/Module.bsl" @@ -32,6 +32,7 @@ .ДобавитьТест("Фикция_ОбщийРеквизит") .ДобавитьТест("ФикцияОбязательныхПолей") .ДобавитьТест("ФикцияРеквизитов") + .ДобавитьТест("ФикцияНезаполненных") .ДобавитьТест("СоздатьГруппу") .ДобавитьТест("УстановитьРеквизиты") .ДобавитьТест("УстановитьСсылкуНового") @@ -304,6 +305,26 @@ КонецПроцедуры +Процедура ФикцияНезаполненных() Экспорт + + Валюта = ЮТест.Данные().КонструкторОбъекта("Справочники.Валюты").Записать( , Истина); + Курс = Неопределено; + + Данные = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют") + .Установить("Валюта", Валюта) + .Установить("Курс", Курс) + .ФикцияНезаполненных("Валюта, Курс") + .ФикцияРеквизитов("Период") + .ДанныеОбъекта(); + + ЮТест.ОжидаетЧто(Данные) + .ИмеетДлину(3) + .Свойство("Период").Заполнено() + .Свойство("Валюта").Равно(Валюта) + .Свойство("Курс").Заполнено(); + +КонецПроцедуры + Процедура СоздатьГруппу() Экспорт Группа = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") diff --git "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271_\320\234\320\236/Module.bsl" "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271_\320\234\320\236/Module.bsl" index cb5f7fcd9..807cf02b7 100644 --- "a/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271_\320\234\320\236/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\261\321\200_\320\256\320\242\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\224\320\262\320\270\320\266\320\265\320\275\320\270\320\271_\320\234\320\236/Module.bsl" @@ -28,6 +28,7 @@ .ДобавитьТест("УстановитьРеквизиты") .ДобавитьТест("Фикция") .ДобавитьТест("ФикцияРеквизитов") + .ДобавитьТест("ФикцияНезаполненных") .ДобавитьТест("ФикцияОбязательныхПолей") .ДобавитьТест("Записать_РегистрСведений") .ДобавитьТест("Записать_РегистрНакопления") @@ -215,13 +216,13 @@ ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены") .Заполнено() .Свойство("Товар") - .Заполнено("Товар должн быть заполнен") + .Заполнено("Товар должен быть заполнен") .ИмеетТип("СправочникСсылка.Товары") .Свойство("Склад") .Заполнено("Склад должен быть заполнен") .ИмеетТип("СправочникСсылка.Склады") .Свойство("Количество") - .Заполнено("Количество должено быть заполнено") + .Заполнено("Количество должно быть заполнено") .ИмеетТип("Число"); // Проверяем, что при указании несуществующих реквизитов выбрасывается исключение @@ -232,6 +233,47 @@ КонецПроцедуры +Процедура ФикцияНезаполненных() Экспорт + + Товар = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары").Записать( ,Истина); + Склад = Неопределено; + + // Создаем документ + Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара"); + + // Инициализируем конструктор движений + Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы"); + + // Добавляем строку и устанавливаем фиктивные значения реквизитов + Конструктор.ДобавитьСтроку() + .Установить("Товар", Товар) + .Установить("Склад", Склад) + .ФикцияНезаполненных("Товар, Склад") + .ФикцияРеквизитов("Количество"); + + // Получаем данные строки + Данные = Конструктор.ДанныеСтроки(); + + // Проверяем, что все реквизиты заполнены + ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены") + .Заполнено() + .Свойство("Товар") + .Равно(Товар, "Товар должен быть заполнен установленным значением") + .Свойство("Склад") + .Заполнено("Склад должен быть заполнен") + .ИмеетТип("СправочникСсылка.Склады") + .Свойство("Количество") + .Заполнено("Количество должно быть заполнено") + .ИмеетТип("Число"); + + // Проверяем, что при указании несуществующих реквизитов выбрасывается исключение + МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("Несуществующий1"); + ЮТест.ОжидаетЧто(Конструктор) + .Метод("ФикцияНезаполненных", МассивПараметров) + .ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`"); + +КонецПроцедуры + Процедура ФикцияОбязательныхПолей() Экспорт // Создаем документ