Skip to content

Commit

Permalink
bia-technologies#462 Добавлен метод ФикцияНезаполненных
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandr-yang committed Jan 5, 2025
1 parent ed43933 commit 98cd5b1
Show file tree
Hide file tree
Showing 7 changed files with 168 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@

КонецПроцедуры

Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов) Экспорт
Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов, ТолькоНезаполненные) Экспорт

ПроверитьИнициализациюКонтекста(Контекст);

Expand All @@ -97,6 +97,14 @@
КонецЕсли;

Для Каждого ИмяРеквизита Из КоллекцияИменРеквизитов Цикл
Если ТолькоНезаполненные Тогда
ЗначениеРеквизита = ЮТКоллекции.ЗначениеСтруктуры(ТекущаяЗапись, ИмяРеквизита);

Если ЗначениеЗаполнено(ЗначениеРеквизита) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

Реквизит = ОписаниеРеквизита(Контекст, ИмяРеквизита);
ОписаниеРеквизитов.Вставить(ИмяРеквизита, Реквизит.Тип);
КонецЦикла;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,29 @@
&НаКлиенте
Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает фиктивные значения незаполненных реквизитов текущей записи набора.
//
// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Параметры:
// ИменаРеквизитов - Строка - Имена реквизитов записи части разделенные запятыми
// - Массив из Строка - Имена реквизитов записи
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
&НаКлиенте
Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина);
Возврат ЭтотОбъект;

КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,28 @@
// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает фиктивные значения незаполненных реквизитов текущей записи набора.
//
// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Параметры:
// ИменаРеквизитов - Строка - Имена реквизитов записи разделенные запятыми
// - Массив из Строка - Имена реквизитов записи
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина);
Возврат ЭтотОбъект;

КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,31 @@
&НаКлиенте
Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает фиктивные значения незаполненных реквизитов создаваемого объекта.
//
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части.
//
// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Параметры:
// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми
// - Массив из Строка - Имена реквизитов объекта или табличной части
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
&НаКлиенте
Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина);
Возврат ЭтотОбъект;

КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,30 @@
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Ложь);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает фиктивные значения незаполненных реквизитов создаваемого объекта.
//
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значения реквизитов строки табличной части.
//
// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Параметры:
// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми
// - Массив из Строка - Имена реквизитов объекта или табличной части
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
Функция ФикцияНезаполненных(ИменаРеквизитов) Экспорт

ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов, Истина);
Возврат ЭтотОбъект;

КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
.ДобавитьТест("Фикция_ОбщийРеквизит")
.ДобавитьТест("ФикцияОбязательныхПолей")
.ДобавитьТест("ФикцияРеквизитов")
.ДобавитьТест("ФикцияНезаполненных")
.ДобавитьТест("СоздатьГруппу")
.ДобавитьТест("УстановитьРеквизиты")
.ДобавитьТест("УстановитьСсылкуНового")
Expand Down Expand Up @@ -304,6 +305,26 @@

КонецПроцедуры

Процедура ФикцияНезаполненных() Экспорт

Валюта = ЮТест.Данные().КонструкторОбъекта("Справочники.Валюты").Записать( , Истина);
Курс = Неопределено;

Данные = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.Установить("Валюта", Валюта)
.Установить("Курс", Курс)
.ФикцияНезаполненных("Валюта, Курс")
.ФикцияРеквизитов("Период")
.ДанныеОбъекта();

ЮТест.ОжидаетЧто(Данные)
.ИмеетДлину(3)
.Свойство("Период").Заполнено()
.Свойство("Валюта").Равно(Валюта)
.Свойство("Курс").Заполнено();

КонецПроцедуры

Процедура СоздатьГруппу() Экспорт

Группа = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
.ДобавитьТест("УстановитьРеквизиты")
.ДобавитьТест("Фикция")
.ДобавитьТест("ФикцияРеквизитов")
.ДобавитьТест("ФикцияНезаполненных")
.ДобавитьТест("ФикцияОбязательныхПолей")
.ДобавитьТест("Записать_РегистрСведений")
.ДобавитьТест("Записать_РегистрНакопления")
Expand Down Expand Up @@ -215,13 +216,13 @@
ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены")
.Заполнено()
.Свойство("Товар")
.Заполнено("Товар должн быть заполнен")
.Заполнено("Товар должен быть заполнен")
.ИмеетТип("СправочникСсылка.Товары")
.Свойство("Склад")
.Заполнено("Склад должен быть заполнен")
.ИмеетТип("СправочникСсылка.Склады")
.Свойство("Количество")
.Заполнено("Количество должено быть заполнено")
.Заполнено("Количество должно быть заполнено")
.ИмеетТип("Число");

// Проверяем, что при указании несуществующих реквизитов выбрасывается исключение
Expand All @@ -232,6 +233,47 @@

КонецПроцедуры

Процедура ФикцияНезаполненных() Экспорт

Товар = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары").Записать( ,Истина);
Склад = Неопределено;

// Создаем документ
Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара");

// Инициализируем конструктор движений
Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");

// Добавляем строку и устанавливаем фиктивные значения реквизитов
Конструктор.ДобавитьСтроку()
.Установить("Товар", Товар)
.Установить("Склад", Склад)
.ФикцияНезаполненных("Товар, Склад")
.ФикцияРеквизитов("Количество");

// Получаем данные строки
Данные = Конструктор.ДанныеСтроки();

// Проверяем, что все реквизиты заполнены
ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены")
.Заполнено()
.Свойство("Товар")
.Равно(Товар, "Товар должен быть заполнен установленным значением")
.Свойство("Склад")
.Заполнено("Склад должен быть заполнен")
.ИмеетТип("СправочникСсылка.Склады")
.Свойство("Количество")
.Заполнено("Количество должно быть заполнено")
.ИмеетТип("Число");

// Проверяем, что при указании несуществующих реквизитов выбрасывается исключение
МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("Несуществующий1");
ЮТест.ОжидаетЧто(Конструктор)
.Метод("ФикцияНезаполненных", МассивПараметров)
.ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`");

КонецПроцедуры

Процедура ФикцияОбязательныхПолей() Экспорт

// Создаем документ
Expand Down

0 comments on commit 98cd5b1

Please sign in to comment.