Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавлен метод ФикцияНезаполненных #479

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading