Skip to content

Commit

Permalink
doc: описание конструктора движений
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Sep 24, 2024
1 parent 2730f89 commit 420782b
Showing 1 changed file with 102 additions and 51 deletions.
153 changes: 102 additions & 51 deletions documentation/docs/features/test-data/data-generation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
tags: [Начало, Тестовые данные]
sidebar_position: 1
toc_max_heading_level: 4
---

# Программное создание тестовых данных
Expand Down Expand Up @@ -91,68 +92,118 @@ sidebar_position: 1

### Методы создания данных в информационной базе

* Создание пустышек - примитивных объектов с минимальным заполнения. Полезно использовать когда вам нужна ссылка определенного типа, но не важно ее заполнение
* [`ЮТест.Данные().СоздатьЭлемент`](/api/ЮТТестовыеДанные#создатьэлемент) - Создает новый элемент справочника или плана видов характеристик
#### Создание пустышек

```bsl
Товар = ЮТест.Данные().СоздатьЭлемент(Справочники.Товары); // На основании менеджера
Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары"); // На основании имени менеджера
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина;
Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары", , , ПараметрыЗаписи); // Запись в режиме ОбменДанными.Загрузка = Истина
```
Создание записей в базе с минимальным заполнения (наименование, код, номер, дата).
Полезно использовать когда вам нужна ссылка определенного типа, но не важно ее заполнение.

* [`ЮТест.Данные().СоздатьДокумент`](/api/ЮТТестовыеДанные#создатьдокумент) - Создает новый документ
* [`ЮТест.Данные().СоздатьЭлемент`](/api/ЮТТестовыеДанные#создатьэлемент) - Создает новый элемент справочника или плана видов характеристик

```bsl
Товар = ЮТест.Данные().СоздатьДокумент(Документ.ПриходТовара); // На основании менеджера
Товар = ЮТест.Данные().СоздатьДокумент("Документ.ПриходТовара"); // На основании имени менеджера
```
```bsl
Товар = ЮТест.Данные().СоздатьЭлемент(Справочники.Товары); // На основании менеджера
Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары"); // На основании имени менеджера
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ОбменДаннымиЗагрузка = Истина;
Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары", , , ПараметрыЗаписи); // Запись в режиме ОбменДанными.Загрузка = Истина
```

* [`ЮТест.Данные().СоздатьГруппу`](/api/ЮТТестовыеДанные#создатьгруппу) - Создает новую группу справочника или плана видов характеристик
* [`ЮТест.Данные().СоздатьДокумент`](/api/ЮТТестовыеДанные#создатьдокумент) - Создает новый документ

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

* [`ЮТест.Данные().Фикция`](/api/ЮТТестовыеДанные#фикция) - Создает новый объект на основании его типа
* [`ЮТест.Данные().СоздатьГруппу`](/api/ЮТТестовыеДанные#создатьгруппу) - Создает новую группу справочника или плана видов характеристик

```bsl
Товар = ЮТест.Данные().Фикция(Тип("ДокументСсылка.ПриходТовара"));
Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара, ДокументСсылка.РасходТовара")); // Будет выбран случайный тип
```
```bsl
Товар = ЮТест.Данные().СоздатьГруппу(Документ.ПриходТовара); // На основании менеджера
Товар = ЮТест.Данные().СоздатьГруппу("Документ.ПриходТовара"); // На основании имени менеджера
```

* [`ЮТест.Данные().Фикция`](/api/ЮТТестовыеДанные#фикция) - Создает новый объект на основании его типа

* [`ЮТест.Данные().КонструкторОбъекта`](/api/ЮТТестовыеДанные#конструкторобъекта), с помощью которого вы можете создать объект информационной базы с необходимыми реквизитами.
Конструктор позволяет:
* В более компактной форме заполнять объект
* Имеет методы записи и проведения
* При возникновении ошибки оборачивает их в более понятные человеку описания
* Киллер фича - `Фикция`, `ФикцияРеквизитов` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов. Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений
* Умеет создавать данные с клиента и [удалять их по окончании теста](test-data-deletion.md)

```bsl
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара")
.ФикцияРеквизитов("Поставщик, Склад")
.ФикцияОбязательныхПолей()
.ТабличнаяЧасть("Товары")
ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик);
Для Инд = 1 По 3 Цикл
Конструктор.ДобавитьСтроку()
.Фикция("Товар")
.УстановитьРеквизиты(ОбщиеДанные)
.Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2))
.Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20))
.Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество)
КонецЦикла;
Возврат Конструктор.Провести();
Товар = ЮТест.Данные().Фикция(Тип("ДокументСсылка.ПриходТовара"));
Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара"));
Товар = ЮТест.Данные().Фикция(Новый ОписаниеТипов("ДокументСсылка.ПриходТовара, ДокументСсылка.РасходТовара")); // Будет выбран случайный тип
```

#### Конструктор объекта

[`ЮТест.Данные().КонструкторОбъекта`](/api/ЮТТестовыеДанные#конструкторобъекта) - инструмент, с помощью которого вы можете создать объект информационной базы с необходимыми реквизитами.
Конструктор позволяет:

* В более компактной форме заполнять объект
* Имеет методы записи и проведения
* При возникновении ошибки оборачивает их в более понятные человеку описания
* Киллер фича - `Фикция`, `ФикцияРеквизитов` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов. Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений
* Умеет создавать данные с клиента и [удалять их по окончании теста](test-data-deletion.md)

```bsl
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара")
.ФикцияРеквизитов("Поставщик, Склад")
.ФикцияОбязательныхПолей()
.ТабличнаяЧасть("Товары")
ОбщиеДанные = Новый Структура("ВидЦены, Поставщик", Закупочная, Конструктор.ДанныеОбъекта().Поставщик);
Для Инд = 1 По 3 Цикл
Конструктор.ДобавитьСтроку()
.Фикция("Товар")
.УстановитьРеквизиты(ОбщиеДанные)
.Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2))
.Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20))
.Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество)
КонецЦикла;
Возврат Конструктор.Провести();
```

#### Конструктор движения документа

[`ЮТест.Данные().КонструкторДвижений`](/api/ЮТТестовыеДанные#конструктордвижений) - инструмент, с помощью которого вы можете формировать необходимые для теста движения документа.
С его помощью вы можете сократить время на подготовку данных и упростить логику их создания.

Конструктор позволяет:

* В более компактной форме формировать движения объекта.
* При возникновении ошибки оборачивает их в более понятные человеку описания.
* Киллер фича - `Фикция`, `ФикцияРеквизитов` и `ФикцияОбязательныхПолей`. Устанавливает случайно сгенерированные значения реквизитов.
Таким образом делается акцент на важных для теста реквизитах и экономит "строки" на генерацию ненужных значений.
* Умеет создавать данные с клиента и [удалять их по окончании теста](test-data-deletion.md).

```bsl title="Пример установки движений документа"
// Создание пустышки документа, будет использоваться в качестве регистратора
Документ = ЮТест.Данные().СоздатьДокумент("Документы.УстановкаЦен");
// Формирование нужных проводок по регистру ЦеныТоваров
ЮТест.Данные().КонструкторДвижений(Документ, "ЦеныТоваров") // Инициализация конструктора
.ДобавитьСтроку() // Добавление записи в набор
.ФикцияРеквизитов("Товар, ВидЦен") // Заполнение фиктивными данными
.Установить("Цена", 0) // Установка цены
.Записать(); // Сохранение
// Создание дополнительных данных
Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
Покупатель = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
// Инициализация конструктора
Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи");
// Заполнение движений
Для Инд = 1 По 10 Цикл
Конструктор
.ДобавитьСтроку()
.Установить("Покупатель", Покупатель)
.ФикцияРеквизитов("Товар, Сумма");
КонецЦикла;
// Сохранение записей в базе
Конструктор.Записать();
```

### Загрузка данных из макетов

Работа с макетами описана в отдельной [статье](load-from-templates.md)
Expand Down

0 comments on commit 420782b

Please sign in to comment.