Конструктор объекта
Конструктор объекта
является ключевым инструментом для создания тестовых данных в контексте фреймворка YAxUnit. Он реализован как текучий интерфейс, что позволяет гибко и удобно настраивать объекты, табличные части и реквизиты. Доступ к нему осуществляется через фабрику ЮТест.Данные()
.КонструкторОбъекта(<Вид метаданных>)
.
Это руководство содержит подробное описание методов класса, их параметров, возвращаемых значений, а также примеры использования.
Основные возможности включают:
- Создание ссылочных объектов: Поддерживает создание справочников, документов, ПВХ и других ссылочных объектов.
- Создание записей регистров сведений: Позволяет создавать записи регистров сведений, не подчиненных регистратору.
- Компактное заполнение объектов: Позволяет заполнять объекты в более компактной форме, что упрощает написание тестов.
- Гибкое управление данными: Позволяет записывать объекты с признаком
ОбменДанными.Загрузка = Истина
, устанавливать уникальные идентификаторы ссылок, а также добавлять дополнительные свойства объектам. - Методы записи и проведения: Поддерживает запись и проведение документов.
- Генерация фиктивных значений для реквизитов. Устанавливает случайно сгенерированные значения реквизитов. Это позволяет сосредоточиться на важных для теста реквизитах и экономит время на генерацию ненужных значений.
- Работа с клиентом: Умеет создавать данные с клиента и удалять их по окончании теста.
- Создание объектов без записи: Поддерживает создание объектов без их записи в базу данных, что полезно для проверки данных в тестах.
- Обработка ошибок: При возникновении ошибок оборачивает их в более понятные человеку описания.
Примеры использования
Создание нового элемента справочника "Контрагенты"
Контрагент = ЮТест.Данные().КонструкторОбъекта("Справочник.Контрагенты")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Установить("Наименование", "Тестовый контрагент")
.Установить("Код", "00001")
.Записать();
Сообщить("Создан контрагент: " + Контрагент.Наименование);
Создание и проведение документа "Приходный ордер"
ПриходныйОрдер = ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Установить("Контрагент", Справочники.Контрагенты.НайтиПоКоду("00001"))
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00001"))
.Установить("Количество", 10)
.Провести(Истина); // Проводим документ и возвращаем объект
Сообщить("Проведен документ: " + ПриходныйОрдер.Номер);
Создание записи в регистре сведений "Цены номенклатуры"
ЮТест.Данные().КонструкторОбъекта("РегистрСведений.ЦеныНоменклатуры")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Установить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00001"))
.Установить("Цена", 1000)
.ДобавитьЗапись(); // Записываем запись в регистр
Создание нового элемента ПВХ "Типы контрагентов"
ТипКонтрагента = ЮТест.Данные().КонструкторОбъекта("ПланВидовХарактеристик.ТипыКонтрагентов")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Установить("Код", "00001")
.Установить("Наименование", "Тестовый тип контрагента")
.Записать();
Сообщить("Создан тип контрагента: " + ТипКонтрагента.Наименование);
Создание объекта "Номенклатура" без записи в базу
Номенклатура = ЮТест.Данные().КонструкторОбъекта("Справочник.Номенклатура")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Установить("Н аименование", "Тестовая номенклатура")
.НовыйОбъект(); // Создаем объект без записи
Сообщить("Создана номенклатура: " + Номенклатура.Наименование);
Автоматическая генерация значений для документа "Расходный ордер"
РасходныйОрдер = ЮТест.Данные().КонструкторОбъекта("Документ.РасходныйОрдер")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.Фикция("Контрагент") // Генерируем фиктивное значение для контрагента
.Фикция("Сумма", Неопределено, Новый ОписаниеТипов(Тип("Число"), Новый КвалификаторыЧисла(10, 2))) // Генерируем фиктивное значение для суммы
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Фикция("Номенклатура") // Генерируем фиктивное значение для номенклатуры
.Фикция("Количество") // Генерируем фиктивное значение для количества
.Записать();
Сообщить("Создан документ: " + РасходныйОрдер.Номер);
Создание объекта "Контрагент" с заданным GUID
Контрагент = ЮТест.Данные().КонструкторОбъекта("Справочник.Контрагенты")
.ФикцияОбязательныхПолей() // Автоматически заполняем обязательные поля
.УстановитьСсылкуНового("00000000-0000-0000-0000-000000000001") // Устанавливаем GUID
.Установить("Наименование", "Контрагент с заданным GUID")
.Записать();
Сообщить("Создан контрагент с GUID: " + Контрагент.Наименование);
Методы
Заполнение объекта
Установить(ИмяРеквизита, Значение)
Устанавливает значение реквизита создаваемого объекта. Если метод вызывается после вызова ТабличнаяЧасть
, то устанавливается значение реквизита строки табличной части.
-
Параметры:
ИмяРеквизита
(Строка): Имя реквизита объекта или табличной части.Значение
(Произвольный): Значение реквизита объекта или табличной части.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.Установить("Номер", "0001")
.Установить("Дата", Дата(2023, 10, 01))
.Записать();
УстановитьРеквизиты(ЗначенияРеквизитов)
Устанавливает значения нескольких реквизитов создаваемого объекта. Если метод вызывается п осле вызова ТабличнаяЧасть
, то устанавливаются значения реквизитов строки табличной части.
-
Параметры:
ЗначенияРеквизитов
(Структура): Устанавливаемые значения реквизитов в форматеИмяРеквизита = Значение
.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
Значения = Новый Структура;
Значения.Вставить("Номер", "0002");
Значения.Вставить("Дата", Дата(2023, 10, 02));
Значения.Вставить("Контрагент", Справочники.Контрагенты.НайтиПоКоду("00001"));
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.УстановитьРеквизиты(Значения)
.Записать();
Фикция(ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа)
Устанавливает фиктивное значение реквизита создаваемого объекта. Фиктивное значение генерируется на основе типа реквизита:
-
Для примитивных типов — случайное значение.
-
Для ссылочных типов — новый объект.
-
Для перечислений — случайное значение перечисления.
-
Параметры:
ИмяРеквизита
(Строка): Имя реквизита объекта или табличной части.РеквизитыЗаполнения
(Структура, Неопределено): Значения реквизитов заполнения создаваемого объекта базы.ОграничениеТипа
(Тип, ОписаниеТипов, Неопределено): Используется для ограничения типа составного реквизита.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.Фикция("Контрагент")
.Фикция("Сумма", Неопределено, Новый ОписаниеТипов(Тип("Число"), Новый КвалификаторыЧисла(10, 2)))
.Записать();
ФикцияРеквизитов(ИменаРеквизитов)
Устанавливает фиктивные значения для нескольких реквизитов создаваемого объекта.
-
Параметры:
ИменаРеквизитов
(Строка, Массив из Строка): Имена реквизитов объекта или табличной части.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ФикцияРеквизитов("Контрагент, Сумма, Дата")
.Записать();
ФикцияОбязательныхПолей()
Автоматически заполняет фиктивными значениями все обязательные поля объекта, определенные в метаданных (с признаком "Проверка заполнения = Выдавать ошибку").
- Возвращаемое значение:
- Кон структор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ФикцияОбязательныхПолей()
.Записать();
ТабличнаяЧасть(ИмяТабличнойЧасти)
Переключает конструктор на работу с указанной табличной частью объекта.
-
Параметры:
ИмяТабличнойЧасти
(Строка): Имя табличной части.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Ном енклатура", Справочники.Номенклатура.НайтиПоКоду("00001"))
.Установить("Количество", 10)
.Записать();
ДобавитьСтроку(ЗначенияРеквизитов)
Добавляет новую строку в табличную часть объекта. При необходимости можно сразу установить значения реквизитов новой строки.
-
Параметры:
ЗначенияРеквизитов
(Структура, Неопределено): Устанавливаемые значения реквизитов новой строки.
-
Возвращаемое значение:
- Конструктор для дальнейшей настройки.
Пример:
ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ТабличнаяЧасть("Товары")
.ДобавитьСтроку()
.Установить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00001"))
.Установить("Количество", 5)
.ДобавитьСтроку()
.Установить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00002"))
.Установить("Количество", 3)
.Записать();
Запись
Записать(ВернутьОбъект, ОбменДаннымиЗагрузка)
Создает и записывает объект в базу данных. Возвращает объект или ссылку на него.
-
Параметры:
ВернутьОбъект
(Булево): ЕслиИстина
, возвращает объект, иначе — ссылку.ОбменДаннымиЗагрузка
(Булево): ЕслиИстина
, записывает объект с признакомОбменДанными.Загрузка = Истина
.
-
Возвращаемое значе ние:
- Произвольный: Созданный объект или ссылка на него.
Пример:
Ссылка = ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ФикцияОбязательныхПолей()
.Записать();
Провести(ВернутьОбъект)
Создает, записывает и проводит документ. Возвращает объект или ссылку на него.
-
Параметры:
ВернутьОбъект
(Булево): ЕслиИстина
, возвращает объект, иначе — ссылку.
-
Возвращаемое значение:
- Произвольный: Созданный объект или ссылка на него.
Пример:
Ссылка = ЮТест.Данные().КонструкторОбъекта("Документ.ПриходныйОрдер")
.ФикцияОбязательныхПолей()
.Провести();