diff --git a/documentation/docs/features/test-data/data-generation.md b/documentation/docs/features/test-data/data-generation.md
index 030cc3da7..ce713954b 100644
--- a/documentation/docs/features/test-data/data-generation.md
+++ b/documentation/docs/features/test-data/data-generation.md
@@ -1,6 +1,7 @@
---
tags: [Начало, Тестовые данные]
sidebar_position: 1
+toc_max_heading_level: 4
---
# Программное создание тестовых данных
@@ -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)
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl"
index 45f6fd7e9..e01a19e50 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\232\320\276\320\273\320\273\320\265\320\272\321\206\320\270\320\270/Module.bsl"
@@ -146,7 +146,7 @@
Приемник = СкопироватьСтруктуру(Источник, Истина);
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипИсточника) Тогда
Приемник = СкопироватьСоответствие(Источник, Истина);
- ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипИсточника) Тогда
+ ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассив(ТипИсточника) Тогда
Приемник = СкопироватьМассив(Источник, Истина);
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
Приемник = СкопироватьСписокЗначений(Источник, Истина);
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 43663e90d..1ae9dc1df 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"
@@ -20,6 +20,8 @@
Процедура Установить(Контекст, ИмяРеквизита, Значение) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ОписаниеРеквизита(Контекст, ИмяРеквизита); // Проверка наличия реквизита
ТекущаяЗапись = ТекущаяЗапись(Контекст);
@@ -29,6 +31,8 @@
Процедура УстановитьРеквизиты(Контекст, ЗначенияРеквизитов) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ТекущаяЗапись = ТекущаяЗапись(Контекст);
Для Каждого ЗначениеРеквизита Из ЗначенияРеквизитов Цикл
@@ -41,6 +45,8 @@
Процедура Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, Знач ОграничениеТипа) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ЮТПроверкиСлужебный.ПроверитьТипПараметра(ОграничениеТипа, "Тип, ОписаниеТипов, Строка", "Фикция", "ЮТКонструкторТестовыхДанных", Истина);
ТекущаяЗапись = ТекущаяЗапись(Контекст);
@@ -60,6 +66,8 @@
Процедура ФикцияОбязательныхПолей(Контекст) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
Реквизиты = Реквизиты(Контекст);
ТекущаяЗапись = ТекущаяЗапись(Контекст);
@@ -77,6 +85,8 @@
Процедура ФикцияРеквизитов(Контекст, ИменаРеквизитов) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ТекущаяЗапись = ТекущаяЗапись(Контекст);
ОписаниеРеквизитов = Новый Структура;
@@ -97,6 +107,8 @@
Процедура ТабличнаяЧасть(Контекст, ИмяТабличнойЧасти) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
Контекст.ТекущаяТабличнаяЧасть = ИмяТабличнойЧасти;
Если ИмяТабличнойЧасти <> Неопределено Тогда
@@ -107,6 +119,8 @@
Процедура ДобавитьСтроку(Контекст, ЗначенияРеквизитов) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
Запись = Новый Структура();
ДанныеТабличнойЧасти(Контекст).Добавить(Запись);
@@ -118,12 +132,16 @@
Процедура УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение = Неопределено) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
Контекст.ДополнительныеСвойства.Вставить(ИмяСвойства, Значение);
КонецПроцедуры
Процедура УстановитьСсылкуНового(Контекст, Значение) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
Если ТипЗнч(Значение) = Тип("УникальныйИдентификатор") Тогда
УникальныйИдентификаторСсылки = Значение;
ИначеЕсли ЮТСтроки.ЭтоУникальныйИдентификаторСтрокой(Значение) Тогда
@@ -136,8 +154,61 @@
КонецПроцедуры
+Функция НовыйОбъект(Контекст) Экспорт
+
+ ПроверитьИнициализациюКонтекста(Контекст);
+
+ Возврат ЮТТестовыеДанныеСлужебный.НовыйОбъект(Контекст.Менеджер,
+ Контекст.Данные,
+ Контекст.ДополнительныеСвойства,
+ Контекст.УникальныйИдентификаторСсылки);
+
+КонецФункции
+
+Функция ДанныеСтрокиТабличнойЧасти(Контекст) Экспорт
+
+ ПроверитьИнициализациюКонтекста(Контекст);
+
+ Если ПустаяСтрока(Контекст.ТекущаяТабличнаяЧасть) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ ДанныеТабличнойЧасти = ДанныеТабличнойЧасти(Контекст);
+
+ Если ЗначениеЗаполнено(ДанныеТабличнойЧасти) Тогда
+ Возврат ДанныеТабличнойЧасти[ДанныеТабличнойЧасти.ВГраница()];
+ Иначе
+ ВызватьИсключение "Сначала необходимо добавить строку табличной части";
+ КонецЕсли;
+
+КонецФункции
+
+Функция ДанныеСтрокиКоллекции(Контекст) Экспорт
+
+ ПроверитьИнициализациюКонтекста(Контекст);
+
+ Если ЗначениеЗаполнено(Контекст.Данные) Тогда
+ Возврат Контекст.Данные[Контекст.Данные.ВГраница()];
+ Иначе
+ ВызватьИсключение "Сначала необходимо добавить строку";
+ КонецЕсли;
+
+КонецФункции
+
+Функция ДанныеОбъекта(Контекст) Экспорт
+
+ ПроверитьИнициализациюКонтекста(Контекст);
+
+ Возврат Контекст.Данные;
+
+КонецФункции
+
+#Область Запись
+
Функция Записать(Контекст, ВернутьОбъект = Ложь, ОбменДаннымиЗагрузка = Ложь) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
ПараметрыЗаписи.УникальныйИдентификаторСсылки = Контекст.УникальныйИдентификаторСсылки;
@@ -149,17 +220,10 @@
КонецФункции
-Функция НовыйОбъект(Контекст) Экспорт
-
- Возврат ЮТТестовыеДанныеСлужебный.НовыйОбъект(Контекст.Менеджер,
- Контекст.Данные,
- Контекст.ДополнительныеСвойства,
- Контекст.УникальныйИдентификаторСсылки);
-
-КонецФункции
-
Функция Провести(Контекст, ВернутьОбъект = Ложь) Экспорт
+ ПроверитьИнициализациюКонтекста(Контекст);
+
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
ПараметрыЗаписи.УникальныйИдентификаторСсылки = Контекст.УникальныйИдентификаторСсылки;
@@ -171,27 +235,33 @@
КонецФункции
-Функция ДанныеСтроки(Контекст) Экспорт
-
- Если ПустаяСтрока(Контекст.ТекущаяТабличнаяЧасть) Тогда
- Возврат Неопределено;
- КонецЕсли;
+Процедура ЗаписатьДвиженияДокумента(Контекст, ОбменДаннымиЗагрузка) Экспорт
- ДанныеТабличнойЧасти = ДанныеТабличнойЧасти(Контекст);
+ ПроверитьИнициализациюКонтекста(Контекст);
- Если ДанныеТабличнойЧасти.Количество() Тогда
- Возврат ДанныеТабличнойЧасти[ДанныеТабличнойЧасти.ВГраница()];
+ Если ЮТТипыДанныхСлужебный.ЭтоСсылочныйТип(ТипЗнч(Контекст.Документ)) Тогда
+ СсылкаНаДокумент = Контекст.Документ;
+ ИначеЕсли ЗначениеЗаполнено(Контекст.Документ.Ссылка) Тогда
+ СсылкаНаДокумент = Контекст.Документ.Ссылка;
Иначе
- ВызватьИсключение "Сначала необходимо добавить строку табличной части";
+ ВызватьИсключение "Документ не записан";
КонецЕсли;
-КонецФункции
-
-Функция ДанныеОбъекта(Контекст) Экспорт
+ Если НЕ ЗначениеЗаполнено(СсылкаНаДокумент) Тогда
+ ВызватьИсключение "Не установлена ссылка на документ, владелец движений";
+ КонецЕсли;
- Возврат Контекст.Данные;
+ ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
+ ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
+ ПараметрыЗаписи.ОбменДаннымиЗагрузка = ОбменДаннымиЗагрузка;
-КонецФункции
+ ЮТТестовыеДанныеСлужебный.ЗаписатьДвиженияРегистратора(СсылкаНаДокумент, Контекст.Данные, Контекст.Метаданные, ПараметрыЗаписи);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ИнициализацияКонструкторов
// Инициализирует конструктор тестовых данных
//
@@ -216,10 +286,43 @@
КонецФункции
+Функция ИнициализироватьКонструкторДвижений(Документ, ИмяРегистра) Экспорт
+
+ ЮТПроверкиСлужебный.ПроверитьТипПараметра(ИмяРегистра,
+ "Строка",
+ "ЮТест.Данные().КонструкторДвижений",
+ "ИмяРегистра");
+
+ Если НЕ ЮТМетаданные.ЭтоДокумент(Документ) Или ЮТТипыДанныхСлужебный.ЭтоМенеджер(ТипЗнч(Документ)) Тогда
+ ТекстОшибки = СтрШаблон("Некорректный тип параметра `Документ` метода `ЮТест.Данные().КонструкторДвижений`.
+ |Это должен быть документ (ссылка или объект), а получили `%1` (%2)",
+ ТипЗнч(Документ),
+ Документ);
+ ВызватьИсключение ТекстОшибки;
+ КонецЕсли;
+
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
+ Конструктор = Обработки.ЮТКонструкторДвижений.Создать();
+#Иначе
+ //@skip-check use-non-recommended-method
+ Конструктор = ПолучитьФорму("Обработка.ЮТКонструкторДвижений.Форма.КлиентскийКонструктор"); // BSLLS:GetFormMethod-off
+#КонецЕсли
+
+ //@skip-check unknown-method-property
+ Конструктор.Инициализировать(Документ, ИмяРегистра);
+
+ Возврат Конструктор;
+
+КонецФункции
+
+#КонецОбласти
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
+#Область КонструкторыКонтекстов
+
// Новый контекст конструктора.
//
// Параметры:
@@ -249,6 +352,27 @@
КонецФункции
+Функция НовыйКонтекстКонструктораДвижений(Документ, ИмяРегистра) Экспорт
+
+ ОписаниеРегистра = ЮТМетаданные.ОписаниеРегистраДвиженийДокумента(Документ, ИмяРегистра);
+
+ Если ОписаниеРегистра = Неопределено Тогда
+ ВызватьИсключение СтрШаблон("Документ %1 не делает движений по регистру ""%2""", Документ, ИмяРегистра);
+ КонецЕсли;
+
+ Контекст = Новый Структура();
+ Контекст.Вставить("Документ", Документ);
+ Контекст.Вставить("Данные", Новый Массив());
+ Контекст.Вставить("Метаданные", ОписаниеРегистра);
+ Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
+
+ //@skip-check constructor-function-return-section
+ Возврат Контекст;
+
+КонецФункции
+
+#КонецОбласти
+
Функция ДанныеТабличнойЧасти(Контекст)
Возврат Контекст.Данные[Контекст.ТекущаяТабличнаяЧасть];
@@ -292,7 +416,7 @@
Функция Реквизиты(Контекст)
- Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
+ Если ФокусНаТабличнойЧасти(Контекст) Тогда
Возврат Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть];
Иначе
Возврат Контекст.Метаданные.Реквизиты;
@@ -306,7 +430,7 @@
Если НЕ Реквизиты.Свойство(ИмяРеквизита) Тогда
ИмяОсновнойТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Контекст.Метаданные);
- Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
+ Если ФокусНаТабличнойЧасти(Контекст) Тогда
Пояснение = СтрШаблон("Табличная часть `%1.%2` не содержит реквизит `%3`", ИмяОсновнойТаблицы, Контекст.ТекущаяТабличнаяЧасть, ИмяРеквизита);
Иначе
Пояснение = СтрШаблон("`%1` не содержит реквизит `%2`", ИмяОсновнойТаблицы, ИмяРеквизита);
@@ -321,8 +445,10 @@
Функция ТекущаяЗапись(Контекст)
- Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
- Возврат ДанныеСтроки(Контекст);
+ Если ФокусНаТабличнойЧасти(Контекст) Тогда
+ Возврат ДанныеСтрокиТабличнойЧасти(Контекст);
+ ИначеЕсли ЭтоКонструкторКоллекции(Контекст) Тогда
+ Возврат ДанныеСтрокиКоллекции(Контекст);
Иначе
Возврат Контекст.Данные;
КонецЕсли;
@@ -336,4 +462,24 @@
КонецПроцедуры
+Функция ФокусНаТабличнойЧасти(Контекст)
+
+ Возврат Контекст.Свойство("ТекущаяТабличнаяЧасть") И ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть);
+
+КонецФункции
+
+Функция ЭтоКонструкторКоллекции(Контекст)
+
+ Возврат ЮТТипыДанныхСлужебный.ЭтоМассив(ТипЗнч(Контекст.Данные));
+
+КонецФункции
+
+Процедура ПроверитьИнициализациюКонтекста(Контекст)
+
+ Если Контекст = Неопределено Тогда
+ ВызватьИсключение "Контекст не инициализирован. Вызовите соответствующий метод конструктор из `ЮТест.Данные()` перед использованием.";
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl"
index b40fd0ec0..9d7f63764 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl"
@@ -307,6 +307,30 @@
КонецФункции
+// Возвращает описание регистра движений документа.
+//
+// Параметры:
+// Документ - ДокументСсылка, ДокументОбъект, ДокументМенеджер - Документ или менеджер
+// - ОбъектМетаданных, Тип - Метаданные или тип документа
+// - Строка - Полное имя объекта метаданных
+// ИмяРегистра - Строка - Имя регистра движений.
+//
+// Возвращаемое значение:
+// Структура - Описание регистра движений документа
+// Неопределено - Документ не делает движений по указанному регистру
+Функция ОписаниеРегистраДвиженийДокумента(Документ, ИмяРегистра) Экспорт
+
+ ПолноеИмяРегистра = Неопределено;
+
+ Если НЕ РегистрыДвиженийДокумента(Документ).Свойство(ИмяРегистра, ПолноеИмяРегистра) Тогда
+ Возврат Неопределено;
+ КонецЕсли;
+
+ //@skip-check constructor-function-return-section
+ Возврат ОписаниеОбъектаМетаданных(ПолноеИмяРегистра);
+
+КонецФункции
+
// Возвращает текущую версию тестового движка (YAxUnit)
//
// Возвращаемое значение:
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\320\265\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\320\265\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
index 97b0f8f6a..e92ca3a95 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\320\265\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\320\265\320\227\320\260\320\262\320\270\321\201\320\270\320\274\320\276\321\201\321\202\320\265\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl"
@@ -120,8 +120,8 @@
ЮТНастройкиВыполнения.КаталогПроекта(),
Параметры.ПолныйПуть);
- ПолноеИмяСервер = ЮТФайлы.ОбъединитьПути(Результат.СохраняемыйКонтекстСервер.РабочийКаталог, Параметры.ПутьКФайлуПроекта);
Результат.СохраняемыйКонтекстСервер = РезультатПередачиФайлов;
+ ПолноеИмяСервер = ЮТФайлы.ОбъединитьПути(Результат.СохраняемыйКонтекстСервер.РабочийКаталог, Параметры.ПутьКФайлуПроекта);
Результат.СохраняемыйКонтекстСервер.Вставить("ПолноеИмя", ПолноеИмяСервер);
КонецЕсли;
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
index 0329dc4bb..90329c5ad 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\321\200\320\260\320\262\320\275\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
@@ -59,7 +59,7 @@
Результат = СоответствияРавны(Данные1, Данные2);
- ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипЗначения) Тогда
+ ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассив(ТипЗначения) Тогда
Результат = МассивыРавны(Данные1, Данные2);
@@ -362,7 +362,7 @@
ИскомоеЗначениеНайдено = СтрНайти(ПроверяемоеЗначение, ОжидаемоеЗначение) > 0;
- ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипПроверяемогоЗначения) Тогда
+ ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассив(ТипПроверяемогоЗначения) Тогда
Индекс = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение);
ИскомоеЗначениеНайдено = Индекс <> Неопределено;
@@ -670,7 +670,7 @@
ТипСписка = ТипЗнч(ОжидаемоеЗначение);
- Если ЮТТипыДанныхСлужебный.ЭтоМассива(ТипСписка) Тогда
+ Если ЮТТипыДанныхСлужебный.ЭтоМассив(ТипСписка) Тогда
Возврат ОжидаемоеЗначение.Найти(ПроверяемоеЗначение) <> Неопределено;
Иначе
Возврат ОжидаемоеЗначение.НайтиПоЗначению(ПроверяемоеЗначение) <> Неопределено;
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
index 1adebfd10..791dca4d2 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
@@ -838,12 +838,12 @@
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор создания тестовых данных для указанного объекта метаданных.
//
// Пример:
-// Конструктор = КонструкторОбъекта("Справочники.Товары");
-// Конструктор.Установить("Наименование", "Товар 1");
-// Конструктор.Установить("Цена", 100);
-// Конструктор.Записать(); // Создает товар с наименованием "Товар 1" и ценой 100.
+// Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") // Используя формат текучих выражений
+// .Установить("Наименование", "Товар 1")
+// .Установить("Цена", 100)
+// .Записать(); // Создает товар с наименованием "Товар 1" и ценой 100.
//
-// Конструктор = КонструкторОбъекта(Документы.ПриходТоваров);
+// Конструктор = ЮТест.Данные().(Документы.ПриходТоваров); // Без использования текучих выражений
// Конструктор.Установить("Организация", Справочники.Организации.ПустаяСсылка());
// Конструктор.Установить("Склад", Справочники.Склады.ПустаяСсылка());
// Конструктор.Установить("Товар", Справочники.Товары.ПустаяСсылка());
@@ -855,6 +855,33 @@
КонецФункции
+// Возвращает конструктор создания движений для указанного документа и регистра.
+//
+// Конструктор имеет ряд особенностей:
+//
+// * Создание движений происходит при вызове метода `Записать`, а заполнение реквизитов движений осуществляется через методы установки.
+// * При использовании на клиенте все значения должны быть сериализуемыми.
+//
+// Параметры:
+// Документ - ДокументОбъект, ДокументСсылка - Документ, для которого создаются движения.
+// ИмяРегистра - Строка - Имя регистра, движения которого необходимо создать.
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор для создания движений по указанному документу и регистру.
+//
+// Пример:
+// Конструктор = КонструкторДвижений(Документы.РеализацияТоваров.СоздатьДокумент(), "Продажи")
+// .ДобавитьСтроку()
+// .Установить("Номенклатура", Справочники.Номенклатура.НайтиПоНаименованию("Товар 1"))
+// .Фикция("Склад")
+// .Установить("Количество", 10)
+// .Записать(); // Создает движение реализации товаров.
+Функция КонструкторДвижений(Документ, ИмяРегистра) Экспорт
+
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ИнициализироватьКонструкторДвижений(Документ, ИмяРегистра);
+
+КонецФункции
+
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
// Возвращает конструктор создания объекта XDTO.
//
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\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\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index 3628e0674..b3f6453b3 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\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\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -174,6 +174,16 @@
КонецФункции
+Процедура ЗаписатьДвиженияРегистратора(Регистратор, Данные, Менеджер, ПараметрыЗаписи) Экспорт
+
+#Если Сервер Тогда
+ ЮТТестовыеДанныеСлужебныйСервер.ЗаписатьДвиженияРегистратора(Регистратор, Данные, Менеджер, ПараметрыЗаписи);
+#Иначе
+ ЮТТестовыеДанныеСлужебныйВызовСервера.ЗаписатьДвиженияРегистратора(Регистратор, Данные, Менеджер, ПараметрыЗаписи);
+#КонецЕсли
+
+КонецПроцедуры
+
// Создает новый объект и заполняет его данными
//
// Параметры:
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
index 784a02a2c..d7b86dfc6 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl"
@@ -24,6 +24,12 @@
КонецФункции
+Процедура ЗаписатьДвиженияРегистратора(Знач Регистратор, Знач Данные, Знач Менеджер, Знач ПараметрыЗаписи) Экспорт
+
+ ЮТТестовыеДанныеСлужебныйСервер.ЗаписатьДвиженияРегистратора(Регистратор, Данные, Менеджер, ПараметрыЗаписи);
+
+КонецПроцедуры
+
Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства, Знач УникальныйИдентификаторСсылки) Экспорт
Возврат ЮТТестовыеДанныеСлужебныйСервер.НовыйОбъект(Менеджер, Данные, ДополнительныеСвойства, УникальныйИдентификаторСсылки);
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
index 2011de772..bfe86d1e3 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
+++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl"
@@ -68,6 +68,35 @@
КонецФункции
+Процедура ЗаписатьДвиженияРегистратора(Регистратор, Данные, МетаданныеРегистра, ПараметрыЗаписи) Экспорт
+
+ Менеджер = ЮТОбщий.Менеджер(МетаданныеРегистра);
+ НаборЗаписей = Менеджер.СоздатьНаборЗаписей();
+ ПредставлениеРегистратора = Строка(Регистратор);
+
+ ДатаРегистратора = ЮТЗапросы.ЗначениеРеквизита(Регистратор, "Дата");
+ НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
+
+ Для Каждого Строка Из Данные Цикл
+
+ Запись = НаборЗаписей.Добавить();
+ ЗаполнитьЗначенияСвойств(Запись, Строка);
+ Если НЕ ЗначениеЗаполнено(Запись.Период) Тогда
+ Запись.Период = ДатаРегистратора;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Попытка
+ НаборЗаписей.Записать();
+ Исключение
+ Сообщение = СтрШаблон("Не удалось записать движения `$1` для %2", МетаданныеРегистра.Имя, ПредставлениеРегистратора);
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(Сообщение);
+ ВызватьИсключение;
+ КонецПопытки;
+
+КонецПроцедуры
+
Функция НовыйОбъект(Знач Менеджер, Данные, ДополнительныеСвойства, УникальныйИдентификаторСсылки) Экспорт
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\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\242\320\270\320\277\321\213\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 0cacf5e12..a27fca666 100644
--- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\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\242\320\270\320\277\321\213\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"
@@ -78,6 +78,13 @@
КонецФункции
+Функция ЭтоМенеджер(ТипЗначения) Экспорт
+
+ ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
+ Возврат СтрНайти(ПредставлениеТипа, "Manager.") > 0;
+
+КонецФункции
+
Функция ЭтоМенеджерЗаписи(ТипЗначения) Экспорт
ПредставлениеТипа = ПредставлениеТипа(ТипЗначения);
@@ -232,7 +239,7 @@
КонецФункции
-Функция ЭтоМассива(ТипЗначения) Экспорт
+Функция ЭтоМассив(ТипЗначения) Экспорт
Возврат ТипЗначения = Тип("Массив")
Или ТипЗначения = Тип("ФиксированныйМассив");
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index 6b0e3ed1c..19d40b65d 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -159,6 +159,7 @@
DataProcessor.ЮТHTTPServiceRequest
DataProcessor.ЮТHTTPСервисЗапрос
DataProcessor.ЮТRecordSet
+ DataProcessor.ЮТКонструкторДвижений
DataProcessor.ЮТКонструкторОбъектаXDTO
DataProcessor.ЮТКонструкторТестовыхДанных
DataProcessor.ЮТЮнитТесты
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/Form.form" "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/Form.form"
new file mode 100644
index 000000000..2a2b0006b
--- /dev/null
+++ "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/Form.form"
@@ -0,0 +1,42 @@
+
+
+ None
+
+ ФормаКоманднаяПанель
+ -1
+ true
+ true
+
+ true
+
+ Left
+ true
+
+ true
+ true
+ Vertical
+ true
+ false
+ true
+ true
+ true
+
+ Объект
+ 1
+
+ DataProcessorObject.ЮТКонструкторДвижений
+
+
+ true
+
+
+ true
+
+ true
+
+
+
+
+
+
+
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"
new file mode 100644
index 000000000..904100dbc
--- /dev/null
+++ "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"
@@ -0,0 +1,215 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+// BSLLS:NonStandardRegion-off
+#Область ОписаниеПеременных
+
+// см. ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора
+&НаКлиенте
+Перем Контекст;
+
+#КонецОбласти
+
+//@skip-check module-structure-top-region
+#Область ПрограммныйИнтерфейс
+
+#Область УстановкаЗначение
+
+// Добавляет новую запись в набор движений.
+// При необходимости можно выполнить установку реквизитов новой записи.
+//
+// Параметры:
+// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой записи.
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+&НаКлиенте
+Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт
+
+ Контекст.Данные.Добавить(Новый Структура);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает значение реквизита текущей записи набора.
+//
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
+// Значение - Произвольный - Значение реквизита объекта или табличной части
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+&НаКлиенте
+Функция Установить(ИмяРеквизита, Значение) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает значения реквизитов текущей записи набора.
+//
+// Параметры:
+// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Установить реквизиты
+&НаКлиенте
+Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает фиктивное значение реквизита текущей записи набора.
+//
+// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
+// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
+// - Неопределено
+// ОграничениеТипа - Тип, ОписаниеТипов - Испольуется для ограничения типа составного реквизита, будет сгерерировано значение указанного типа
+// - Неопределено - Будет сгенерировано значение, на основании типа реквизита,
+// если реквизит составной, то будет использован случайный тип
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+&НаКлиенте
+Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает фиктивные значения реквизитов текущей записи набора.
+//
+// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Параметры:
+// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми
+// - Массив из Строка - Имена реквизитов объекта или табличной части
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+&НаКлиенте
+Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Заполняет обязательные поля записи набора фиктивными значениями
+//
+// На основании метаданных определяются обязательные поля (Проверка заполнения = Выдавать ошибку),
+// для них генерируются и устанавливаются фиктивные значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+&НаКлиенте
+Функция ФикцияОбязательныхПолей() Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает дополнительное свойство набора записей.
+//
+// Параметры:
+// ИмяСвойства - Строка - Имя дополнительного свойства
+// Значение - Произвольный - Значение дополнительного свойства
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
+&НаКлиенте
+Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область ПолучениеДанных
+
+// Возвращает данные текущей записи набора.
+//
+// Возвращаемое значение:
+// - Структура - Данные записи
+&НаКлиенте
+Функция ДанныеСтроки() Экспорт
+
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтрокиКоллекции(Контекст);
+
+КонецФункции
+
+// Возвращает данные набора записей.
+//
+// Возвращаемое значение:
+// Массив из Структура - Данные набора записей.
+&НаКлиенте
+Функция Данные() Экспорт
+
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеОбъекта(Контекст);
+
+КонецФункции
+
+#КонецОбласти
+
+// Записывает движения документа.
+//
+// Параметры:
+// ОбменДаннымиЗагрузка - Булево - Записать с признаком `ОбменДанными.Загрузка = Истина`
+&НаКлиенте
+Процедура Записать(ОбменДаннымиЗагрузка = Ложь) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ЗаписатьДвиженияДокумента(Контекст, ОбменДаннымиЗагрузка);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+//@skip-check module-structure-top-region
+#Область СлужебныйПрограммныйИнтерфейс
+
+&НаКлиенте
+Процедура Инициализировать(Документ, ИмяРегистра) Экспорт
+
+ Контекст = ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктораДвижений(Документ, ИмяРегистра);
+
+КонецПроцедуры
+
+#КонецОбласти
+// BSLLS:NonStandardRegion-on
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"
new file mode 100644
index 000000000..fab430778
--- /dev/null
+++ "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"
@@ -0,0 +1,203 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
+
+#Область ОписаниеПеременных
+
+// см. ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктора
+Перем Контекст;
+
+#КонецОбласти
+
+#Область ПрограммныйИнтерфейс
+
+#Область УстановкаЗначение
+
+// Добавляет новую запись в набор движений.
+// При необходимости можно выполнить установку реквизитов новой записи.
+//
+// Параметры:
+// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов новой записи.
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+Функция ДобавитьСтроку(ЗначенияРеквизитов = Неопределено) Экспорт
+
+ Контекст.Данные.Добавить(Новый Структура);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает значение реквизита текущей записи набора.
+//
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
+// Значение - Произвольный - Значение реквизита объекта или табличной части
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+Функция Установить(ИмяРеквизита, Значение) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.Установить(Контекст, ИмяРеквизита, Значение);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает значения реквизитов текущей записи набора.
+//
+// Параметры:
+// ЗначенияРеквизитов - Структура - Устанавливаемые значения реквизитов
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Установить реквизиты
+Функция УстановитьРеквизиты(ЗначенияРеквизитов) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.УстановитьРеквизиты(Контекст, ЗначенияРеквизитов);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает фиктивное значение реквизита текущей записи набора.
+//
+// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Параметры:
+// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
+// РеквизитыЗаполнения - Структура - Значения реквизитов заполнения создаваемого объекта базы
+// - Неопределено
+// ОграничениеТипа - Тип, ОписаниеТипов - Испольуется для ограничения типа составного реквизита, будет сгерерировано значение указанного типа
+// - Неопределено - Будет сгенерировано значение, на основании типа реквизита,
+// если реквизит составной, то будет использован случайный тип
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+Функция Фикция(ИмяРеквизита, РеквизитыЗаполнения = Неопределено, ОграничениеТипа = Неопределено) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.Фикция(Контекст, ИмяРеквизита, РеквизитыЗаполнения, ОграничениеТипа);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает фиктивные значения реквизитов текущей записи набора.
+//
+// На основании менеджера и имени реквизита вычисляется его тип, а по типу генерируется фиктивное значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Параметры:
+// ИменаРеквизитов - Строка - Имена реквизитов объекта или табличной части разделенные запятыми
+// - Массив из Строка - Имена реквизитов объекта или табличной части
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+Функция ФикцияРеквизитов(ИменаРеквизитов) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ФикцияРеквизитов(Контекст, ИменаРеквизитов);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Заполняет обязательные поля записи набора фиктивными значениями
+//
+// На основании метаданных определяются обязательные поля (Проверка заполнения = Выдавать ошибку),
+// для них генерируются и устанавливаются фиктивные значение.
+//
+// * Для примитивных значение генерируется случайное значение
+// * Для ссылочных типов создается новый объект
+// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторДвижений - Конструктор
+Функция ФикцияОбязательныхПолей() Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ФикцияОбязательныхПолей(Контекст);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+// Устанавливает дополнительное свойство набора записей.
+//
+// Параметры:
+// ИмяСвойства - Строка - Имя дополнительного свойства
+// Значение - Произвольный - Значение дополнительного свойства
+//
+// Возвращаемое значение:
+// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
+Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение = Неопределено) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.УстановитьДополнительноеСвойство(Контекст, ИмяСвойства, Значение);
+ Возврат ЭтотОбъект;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область ПолучениеДанных
+
+// Возвращает данные текущей записи набора.
+//
+// Возвращаемое значение:
+// - Структура - Данные записи
+Функция ДанныеСтроки() Экспорт
+
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтрокиКоллекции(Контекст);
+
+КонецФункции
+
+// Возвращает данные набора записей.
+//
+// Возвращаемое значение:
+// Массив из Структура - Данные набора записей.
+Функция Данные() Экспорт
+
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеОбъекта(Контекст);
+
+КонецФункции
+
+#КонецОбласти
+
+// Записывает движения документа.
+//
+// Параметры:
+// ОбменДаннымиЗагрузка - Булево - Записать с признаком `ОбменДанными.Загрузка = Истина`
+Процедура Записать(ОбменДаннымиЗагрузка = Ложь) Экспорт
+
+ ЮТКонструкторТестовыхДанныхСлужебный.ЗаписатьДвиженияДокумента(Контекст, ОбменДаннымиЗагрузка);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура Инициализировать(Документ, ИмяРегистра) Экспорт
+
+ Контекст = ЮТКонструкторТестовыхДанныхСлужебный.НовыйКонтекстКонструктораДвижений(Документ, ИмяРегистра);
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
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/\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.mdo" "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/\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.mdo"
new file mode 100644
index 000000000..92f71b683
--- /dev/null
+++ "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/\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.mdo"
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ ЮТКонструкторДвижений
+
+ ru
+ Конструктор движений
+
+ true
+ DataProcessor.ЮТКонструкторДвижений.Form.КлиентскийКонструктор
+
+ КлиентскийКонструктор
+
+ ru
+ Клиентский конструктор
+
+ PersonalComputer
+ MobileDevice
+
+
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/Form.form" "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/Form.form"
index db37bb044..09f02e2ac 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/Form.form"
+++ "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/Form.form"
@@ -1,5 +1,6 @@
+ None
ФормаКоманднаяПанель
-1
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 d80df0f26..5b2889407 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"
@@ -287,7 +287,7 @@
&НаКлиенте
Функция ДанныеСтроки() Экспорт
- Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтроки(Контекст);
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтрокиТабличнойЧасти(Контекст);
КонецФункции
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 e62c47339..2697a6693 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"
@@ -271,7 +271,7 @@
// - Неопределено - Если заполняется объект
Функция ДанныеСтроки() Экспорт
- Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтроки(Контекст);
+ Возврат ЮТКонструкторТестовыхДанныхСлужебный.ДанныеСтрокиТабличнойЧасти(Контекст);
КонецФункции
diff --git "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\260\320\261\320\276\321\200\320\260\320\227\320\260\320\277\320\270\321\201\320\265\320\271/Form.form" "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\260\320\261\320\276\321\200\320\260\320\227\320\260\320\277\320\270\321\201\320\265\320\271/Form.form"
index 1218d2968..94af5ef73 100644
--- "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\260\320\261\320\276\321\200\320\260\320\227\320\260\320\277\320\270\321\201\320\265\320\271/Form.form"
+++ "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\235\320\260\320\261\320\276\321\200\320\260\320\227\320\260\320\277\320\270\321\201\320\265\320\271/Form.form"
@@ -162,56 +162,6 @@
true
-
- ВидДвижения
- 35
- true
- true
-
- true
-
-
- НаборЗаписей.RecordType
-
-
- ВидДвиженияРасширеннаяПодсказка
- 37
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ВидДвиженияКонтекстноеМеню
- 36
- true
- true
-
- true
-
- true
-
- InputField
- EnterOnInput
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
-
-
Организация
38
@@ -500,7 +450,6 @@
true
Vertical
true
- false
true
true
true
diff --git "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form"
index 68c8915b6..493f03cc0 100644
--- "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form"
+++ "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form"
@@ -282,52 +282,6 @@
true
-
- ВидДвижения
- 31
- true
- true
-
- true
-
-
- Список.RecordType
-
-
- ВидДвиженияРасширеннаяПодсказка
- 33
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ВидДвиженияКонтекстноеМеню
- 32
- true
- true
-
- true
-
- true
-
- LabelField
- Enter
- true
- Left
- true
-
- true
- true
-
-
Организация
34
@@ -622,7 +576,6 @@
true
Vertical
true
- false
true
true
true
diff --git "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271.mdo" "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271.mdo"
index 1bfb61858..7e9c29363 100644
--- "a/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271.mdo"
+++ "b/fixtures/demo-configuration/src/AccountingRegisters/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271/\320\236\321\201\320\275\320\276\320\262\320\275\320\276\320\271.mdo"
@@ -30,7 +30,6 @@
- DontUse
true
@@ -48,7 +47,6 @@
- DontUse
true
diff --git a/fixtures/demo-configuration/src/Configuration/Configuration.mdo b/fixtures/demo-configuration/src/Configuration/Configuration.mdo
index 269ee917f..19df01b9d 100644
--- a/fixtures/demo-configuration/src/Configuration/Configuration.mdo
+++ b/fixtures/demo-configuration/src/Configuration/Configuration.mdo
@@ -232,6 +232,7 @@
Document.ПоступлениеДенег
Document.ПриходТовара
Document.РасходТовара
+ Document.УстановкаЦен
DocumentJournal.ДокументыПродаж
DocumentJournal.ФинансовыеДокументы
Enum.PushУведомления
diff --git "a/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/ObjectModule.bsl" "b/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/ObjectModule.bsl"
new file mode 100644
index 000000000..00c5d2ff9
--- /dev/null
+++ "b/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/ObjectModule.bsl"
@@ -0,0 +1,36 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+Процедура ОбработкаПроведения(Отказ,Режим)
+ //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
+ //Данный фрагмент построен конструктором.
+ //При повторном использовании конструктора, внесенные вручную данные будут утеряны!
+
+ // регистр ЦеныТоваров
+ Движения.ЦеныТоваров.Записывать = Истина;
+
+ Для Каждого ТекСтрокаЦены Из Цены Цикл
+ Движение = Движения.ЦеныТоваров.Добавить();
+ Движение.Период = Дата;
+ Движение.Товар = ТекСтрокаЦены.Товар;
+ Движение.ВидЦен = ТекСтрокаЦены.ВидЦены;
+ Движение.Цена = ТекСтрокаЦены.Цена;
+ КонецЦикла;
+
+ //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
+КонецПроцедуры
diff --git "a/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275.mdo" "b/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275.mdo"
new file mode 100644
index 000000000..bb2206b76
--- /dev/null
+++ "b/fixtures/demo-configuration/src/Documents/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\246\320\265\320\275.mdo"
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+ УстановкаЦен
+
+ ru
+ Установка цен
+
+ true
+ Document.УстановкаЦен.StandardAttribute.Number
+ DontUse
+ Use
+ Managed
+ DontUse
+ String
+ 9
+ Variable
+ true
+ true
+ InformationRegister.ЦеныТоваров
+ true
+ true
+
+
+
+
+
+ Цены
+
+ ru
+ Цены
+
+
+ Товар
+
+ ru
+ Товар
+
+
+ CatalogRef.Товары
+
+
+
+ DontUse
+
+
+ ВидЦены
+
+ ru
+ Вид цены
+
+
+ CatalogRef.ВидыЦен
+
+
+
+ DontUse
+
+
+ Цена
+
+ ru
+ Цена
+
+
+ Number
+
+ 10
+ 2
+
+
+
+
+ DontUse
+
+
+
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/RecordSetModule.bsl" "b/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/RecordSetModule.bsl"
new file mode 100644
index 000000000..176092a16
--- /dev/null
+++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/RecordSetModule.bsl"
@@ -0,0 +1,41 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗаписью(Отказ, Замещение)
+
+ Если ОбменДанными.Загрузка Тогда
+ Возврат;
+ КонецЕсли;
+
+ Для Каждого Строка Из ЭтотОбъект Цикл
+
+ Если Строка.Курс <= 0 Тогда
+ ВызватьИсключение НСтр("ru='Курс не может быть отрицательным или нулем';en='Exchange rate cannot be negative or zero'");
+ КонецЕсли;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#КонецЕсли
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo" "b/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo"
index 6aa595502..b4311b34b 100644
--- "a/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo"
+++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202/\320\232\321\203\321\200\321\201\321\213\320\222\320\260\320\273\321\216\321\202.mdo"
@@ -24,7 +24,6 @@
Active
- DontUse
@@ -34,7 +33,6 @@
LineNumber
- DontUse
@@ -44,7 +42,6 @@
Recorder
- DontUse
@@ -55,7 +52,6 @@
ShowError
- DontUse
@@ -96,7 +92,6 @@
10
2
- true
@@ -109,13 +104,9 @@
ShowError
- DontUse
Use
- DontUse
Use
-
- 0
-
+
Валюта
@@ -136,7 +127,6 @@
ShowError
true
- DontUse
Use
true
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form"
deleted file mode 100644
index 2ee5dbbfd..000000000
--- "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form"
+++ /dev/null
@@ -1,243 +0,0 @@
-
-
-
- Период
- 13
- true
- true
-
- true
-
-
- Запись.Period
-
-
- ПериодРасширеннаяПодсказка
- 3
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ПериодКонтекстноеМеню
- 2
- true
- true
-
- true
-
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
-
-
-
- Товар
- 4
- true
- true
-
- true
-
-
- Запись.Товар
-
-
- ТоварРасширеннаяПодсказка
- 6
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ТоварКонтекстноеМеню
- 5
- true
- true
-
- true
-
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
-
-
-
- ВидЦен
- 7
- true
- true
-
- true
-
-
- Запись.ВидЦен
-
-
- ВидЦенРасширеннаяПодсказка
- 9
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ВидЦенКонтекстноеМеню
- 8
- true
- true
-
- true
-
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
-
-
-
- Цена
- 10
- true
- true
-
- true
-
-
- Запись.Цена
-
-
- ЦенаРасширеннаяПодсказка
- 12
- true
- true
-
- true
-
- Label
- true
- true
-
- Left
-
-
-
- ЦенаКонтекстноеМеню
- 11
- true
- true
-
- true
-
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- true
-
-
-
- ФормаКоманднаяПанель
- -1
- true
- true
-
- true
-
- Left
- true
-
- LockOwnerWindow
- true
- true
- Vertical
- true
- false
- true
- true
- true
-
- Запись
- 1
-
- InformationRegisterRecordManager.ЦеныТоваров
-
-
- true
-
-
- true
-
- true
- true
-
-
-
-
-
-
-
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss" "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss"
new file mode 100644
index 000000000..b76f10568
--- /dev/null
+++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Attributes/\320\241\320\277\320\270\321\201\320\276\320\272/ExtInfo/ListSettings.dcss"
@@ -0,0 +1,17 @@
+
+
+
+ Normal
+ 8450ccec-2746-4ac4-8058-01be7feed729
+
+
+ Normal
+ 53af573d-5d8e-44c6-a55b-8f7631c4e45e
+
+
+ Normal
+ 7b7e7a34-b35a-4669-9903-b382d64d8e64
+
+ Normal
+ 38779193-b7c6-42b1-ba56-93fe0878477b
+
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form" "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form"
new file mode 100644
index 000000000..758b6b01a
--- /dev/null
+++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Form.form"
@@ -0,0 +1,562 @@
+
+
+
+ СписокКомпоновщикНастроекПользовательскиеНастройки
+ 34
+ true
+ true
+
+ true
+
+
+ ru
+ Настройки пользователя
+
+ false
+
+ СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка
+ 2
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ WeakSeparation
+ true
+ true
+ Auto
+ DontUse
+
+
+
+ Список
+ 3
+ true
+ true
+
+ true
+
+
+ Список
+
+ true
+ None
+
+ Период
+ 16
+ true
+ true
+
+ true
+
+
+ Список.Period
+
+ true
+
+ ПериодРасширеннаяПодсказка
+ 18
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПериодКонтекстноеМеню
+ 17
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ Регистратор
+ 19
+ true
+ true
+
+ true
+
+
+ Список.Recorder
+
+
+ РегистраторРасширеннаяПодсказка
+ 21
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ РегистраторКонтекстноеМеню
+ 20
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ НомерСтроки
+ 22
+ true
+ true
+
+ true
+
+
+ Список.LineNumber
+
+
+ НомерСтрокиРасширеннаяПодсказка
+ 24
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НомерСтрокиКонтекстноеМеню
+ 23
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ Товар
+ 25
+ true
+ true
+
+ true
+
+
+ Список.Товар
+
+
+ ТоварРасширеннаяПодсказка
+ 27
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТоварКонтекстноеМеню
+ 26
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ ВидЦен
+ 28
+ true
+ true
+
+ true
+
+
+ Список.ВидЦен
+
+
+ ВидЦенРасширеннаяПодсказка
+ 30
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ВидЦенКонтекстноеМеню
+ 29
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+
+ Цена
+ 31
+ true
+ true
+
+ true
+
+
+ Список.Цена
+
+
+ ЦенаРасширеннаяПодсказка
+ 33
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ЦенаКонтекстноеМеню
+ 32
+ true
+ true
+
+ true
+
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+ None
+
+ СписокКоманднаяПанель
+ 5
+ true
+ true
+
+ true
+
+ Left
+
+
+ true
+ true
+
+ true
+
+ СписокСтрокаПоиска
+ 7
+
+ СписокСтрокаПоискаРасширеннаяПодсказка
+ 9
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокСтрокаПоискаКонтекстноеМеню
+ 8
+ true
+ true
+
+ true
+
+ true
+
+ СписокСтрокаПоиска
+
+ true
+
+
+
+ true
+ true
+
+ true
+
+ СписокСостояниеПросмотра
+ 10
+
+ СписокСостояниеПросмотраРасширеннаяПодсказка
+ 12
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокСостояниеПросмотраКонтекстноеМеню
+ 11
+ true
+ true
+
+ true
+
+ true
+
+ ViewStatusAddition
+ СписокСостояниеПросмотра
+
+ true
+
+
+
+ true
+ true
+
+ true
+
+ СписокУправлениеПоиском
+ 13
+
+ СписокУправлениеПоискомРасширеннаяПодсказка
+ 15
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокУправлениеПоискомКонтекстноеМеню
+ 14
+ true
+ true
+
+ true
+
+ true
+
+ SearchControlAddition
+ СписокУправлениеПоиском
+
+ true
+
+
+
+ СписокРасширеннаяПодсказка
+ 6
+ true
+ true
+
+ true
+
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКонтекстноеМеню
+ 4
+ true
+ true
+
+ true
+
+ true
+
+ true
+ true
+ true
+ true
+ true
+ MultiRow
+
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ true
+ Auto
+ Auto
+ ExpandTopLevel
+ true
+ true
+ true
+ true
+
+ Список.DefaultPicture
+
+
+ 60
+
+ 0001-01-01T00:00:00
+ 0001-01-01T00:00:00
+
+
+ true
+ СписокКомпоновщикНастроекПользовательскиеНастройки
+
+
+
+ ФормаКоманднаяПанель
+ -1
+ true
+ true
+
+ true
+
+ Left
+ true
+
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ true
+
+ Список
+ 1
+
+ DynamicList
+
+
+ true
+
+
+ true
+
+ true
+
+ InformationRegister.ЦеныТоваров
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
diff --git "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
index e69aaea84..3c26eee6b 100644
--- "a/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
+++ "b/fixtures/demo-configuration/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
@@ -18,7 +18,7 @@
Use
true
InDialog
- InformationRegister.ЦеныТоваров.Form.ФормаЗаписи
+ InformationRegister.ЦеныТоваров.Form.ФормаСписка
Use
Active
@@ -57,6 +57,7 @@
Day
+ RecorderSubordinate
true
true
@@ -153,11 +154,11 @@
true
-
- ФормаЗаписи
+
+ ФормаСписка
ru
- Форма записи
+ Форма списка
PersonalComputer
MobileDevice
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl"
index de3ef2aa6..819b8e220 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\234\320\276\320\272\320\270\321\202\320\276/Module.bsl"
@@ -313,7 +313,11 @@
.Прогон()
;
+ Регистратор = ЮТест.Данные().СоздатьДокумент(Документы.УстановкаЦен);
+
НаборЗаписей = РегистрыСведений.ЦеныТоваров.СоздатьНаборЗаписей();
+ НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
+
ЮТест.ОжидаетЧто(НаборЗаписей)
.Метод("ПроверитьЗаполнение")
.НеВыбрасываетИсключение()
@@ -330,6 +334,7 @@
// Через набор записей
Мокито.Сбросить();
НаборЗаписей2 = РегистрыСведений.ЦеныТоваров.СоздатьНаборЗаписей();
+ НаборЗаписей2.Отбор.Регистратор.Установить(Регистратор);
Мокито.Обучение(НаборЗаписей)
.Наблюдать("ПередЗаписью")
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl"
index 3c7071cc9..27a97674b 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\227\320\260\320\277\321\200\320\276\321\201\321\213/Module.bsl"
@@ -235,10 +235,11 @@
.Свойство("Товар").Равно(ДанныеОбъекта.Товары[0].Товар);
// Регистры
+ Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.Фикция("Период")
.Фикция("Валюта")
- .Фикция("Курс");
+ .Установить("Курс", Курс);
Конструктор.Записать();
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
@@ -247,7 +248,7 @@
ЮТест.ОжидаетЧто(ДанныеЗаписи)
.Свойство("Валюта").Равно(ДанныеОбъекта.Валюта)
- .Свойство("Курс").Равно(ДанныеОбъекта.Курс);
+ .Свойство("Курс").Равно(Курс);
КонецПроцедуры
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 1831dd41a..fb72c7142 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"
@@ -132,9 +132,10 @@
Процедура СоздатьЗаписьРегистраСведений() Экспорт
+ Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
Результат = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.Фикция("Валюта")
- .Фикция("Курс")
+ .Установить("Курс", Курс)
.Установить("Период", ТекущаяДата())
.Записать();
@@ -146,11 +147,12 @@
Процедура СоздатьЗаписьРегистраСведений_ОбменДанными() Экспорт
- Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрСведений.ЦеныТоваров")
+ ИмяРегистра = "РегистрСведений.КурсыВалют";
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта(ИмяРегистра)
.Фикция("Период")
- .Фикция("Товар")
- .Фикция("ВидЦен")
- .Установить("Цена", -1);
+ .Фикция("Валюта")
+ .Установить("Курс", -1);
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
@@ -158,12 +160,12 @@
.Метод("Записать").Параметр(Ложь).Параметр(Истина)
.НеВыбрасываетИсключение();
- ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.ЦеныТоваров")
+ ЮТест.ОжидаетЧтоТаблицаБазы(ИмяРегистра)
.СодержитЗаписи(ЮТест.Предикат(ДанныеОбъекта));
ЮТест.ОжидаетЧто(Конструктор)
.Метод("Записать")
- .ВыбрасываетИсключение("Цена товара не может быть отрицательной");
+ .ВыбрасываетИсключение("Курс не может быть отрицательным или нулем");
КонецПроцедуры
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
index f7c33a6e7..8b880900b 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl"
@@ -628,11 +628,12 @@
Процедура УстановитьФоновуюБлокировку() Экспорт
Валюта = ЮТест.Данные().СоздатьЭлемент(Справочники.Валюты);
+ Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрСведений.КурсыВалют")
.Установить("Валюта", Валюта)
.Фикция("Период")
- .Фикция("Курс");
+ .Установить("Курс", Курс);
Блокировка = Новый БлокировкаДанных();
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КурсыВалют");
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index c94f4c824..e053e37ac 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -88,10 +88,13 @@
Процедура УдалениеТестовыхДанныхРегистрСведений(Период) Экспорт
- ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют").НеСодержитЗаписи(ЮТест.Предикат().Реквизит("Период").Равно(Период));
+ ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
+ .НеСодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Период").Равно(Период));
+ Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.Фикция("Валюта")
- .Фикция("Курс")
+ .Установить("Курс", Курс)
.Установить("Период", Период)
.Записать();
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl"
index b6383bccc..b3b8daee0 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\243\321\202\320\262\320\265\321\200\320\266\320\264\320\265\320\275\320\270\321\217\320\230\320\221/Module.bsl"
@@ -42,16 +42,18 @@
Конструктор.Записать();
ДанныеСправочника = Конструктор.ДанныеОбъекта();
+ Курс = ЮТест.Данные().СлучайноеПоложительноеЧисло(99999);
Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
.Фикция("Валюта")
.Фикция("Период")
- .Фикция("Курс");
+ .Установить("Курс", Курс);
+
ДанныеРегистра = Конструктор.ДанныеОбъекта();
Конструктор.Записать();
Конструктор
.Фикция("Период")
- .Фикция("Курс")
+ .Установить("Курс", Курс)
.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
index 941105ade..23e2d5463 100644
--- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
+++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl"
@@ -90,7 +90,7 @@
Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
- .ИмеетДлину(36);
+ .ИмеетДлину(37);
КонецПроцедуры
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"
new file mode 100644
index 000000000..cb5f7fcd9
--- /dev/null
+++ "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"
@@ -0,0 +1,317 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2024 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты.ВТранзакции()
+ .ДобавитьТест("Инициализировать")
+ .ДобавитьТест("ДобавитьСтроку")
+ .ДобавитьТест("Установить")
+ .ДобавитьТест("Установить_Период")
+ .ДобавитьТест("УстановитьРеквизиты")
+ .ДобавитьТест("Фикция")
+ .ДобавитьТест("ФикцияРеквизитов")
+ .ДобавитьТест("ФикцияОбязательныхПолей")
+ .ДобавитьТест("Записать_РегистрСведений")
+ .ДобавитьТест("Записать_РегистрНакопления")
+ ;
+
+КонецПроцедуры
+
+Процедура Инициализировать() Экспорт
+
+ // Создаем документ
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара");
+
+ // Инициализируем конструктор движений
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");
+
+ // Проверяем, что конструктор инициализирован
+ ЮТест.ОжидаетЧто(Конструктор, "Конструктор должен быть инициализирован")
+ .НеРавно(Неопределено);
+
+ // Проверяем, что данные конструктора пусты
+ Данные = Конструктор.Данные();
+ ЮТест.ОжидаетЧто(Данные, "Данные конструктора должны быть пустым массивом")
+ .ИмеетТип("Массив")
+ .Равно(Новый Массив);
+
+ ЮТест.ОжидаетЧто(ЮТест.Данные())
+ .Метод("КонструкторДвижений", ЮТКоллекции.ЗначениеВМассиве(Документ, "НесуществующийРегистр"))
+ .ВыбрасываетИсключение("Документ " + Документ + " не делает движений по регистру ""НесуществующийРегистр""");
+
+КонецПроцедуры
+
+Процедура ДобавитьСтроку() Экспорт
+
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи");
+
+ ЮТест.ОжидаетЧто(Конструктор)
+ .Метод("ДобавитьСтроку").НеВыбрасываетИсключение();
+
+ Данные = Конструктор.Данные();
+ ЮТест.ОжидаетЧто(Данные)
+ .Заполнено()
+ .ИмеетТип("Массив")
+ .ИмеетДлину(1)
+ .Свойство(0)
+ .ИмеетТип("Структура")
+ .НеЗаполнено();
+
+КонецПроцедуры
+
+Процедура Установить() Экспорт
+
+ МаксимальноеЧисло = 99999;
+
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+ Покупатель = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
+ Сумма = ЮТест.Данные().СлучайноеПоложительноеЧисло(МаксимальноеЧисло);
+
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи");
+
+ ЮТест.ОжидаетЧто(Конструктор)
+ .Метод("Установить", ЮТКоллекции.ЗначениеВМассиве("Покупатель", Покупатель)).ВыбрасываетИсключение("Сначала необходимо добавить строку");
+
+ Конструктор
+ .ДобавитьСтроку()
+ .Установить("Покупатель", Покупатель)
+ .Установить("Сумма", Сумма);
+ Данные = Конструктор.ДанныеСтроки();
+ ЮТест.ОжидаетЧто(Данные)
+ .Заполнено()
+ .Свойство("Покупатель").Равно(Покупатель)
+ .Свойство("Сумма").Равно(Сумма);
+
+КонецПроцедуры
+
+Процедура Установить_Период() Экспорт
+
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+ Период = ЮТест.Данные().СлучайнаяДата();
+
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи")
+ .ДобавитьСтроку()
+ .ФикцияРеквизитов("Покупатель, Сумма")
+ .Установить("Период", Период);
+
+ Данные = Конструктор.ДанныеСтроки();
+ ЮТест.ОжидаетЧто(Данные, "Проверка данных записи")
+ .Заполнено()
+ .Свойство("Покупатель").Заполнено()
+ .Свойство("Сумма").Заполнено()
+ .Свойство("Период").Равно(Период);
+
+ Конструктор.Записать();
+ ЗаписиРегистра = ЮТЗапросы.ДвиженияДокумента(Документ, "Продажи");
+ ЮТест.ОжидаетЧто(ЗаписиРегистра, "Проверка сформированных движений")
+ .Заполнено()
+ .ИмеетДлину(1)
+ .Что(ЗаписиРегистра[0])
+ .Свойство("Покупатель").Заполнено()
+ .Свойство("Сумма").Заполнено()
+ .Свойство("Период").Равно(Период);
+
+КонецПроцедуры
+
+Процедура УстановитьРеквизиты() Экспорт
+
+ МаксимальноеЧисло = 99999;
+
+ // Создаем документ и контрагента
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+ Контрагент = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
+ Сумма = ЮТест.Данные().СлучайноеПоложительноеЧисло(МаксимальноеЧисло);
+ Количество = ЮТест.Данные().СлучайноеПоложительноеЧисло(МаксимальноеЧисло);
+
+ // Инициализируем конструктор движений
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "Продажи")
+ .ДобавитьСтроку().УстановитьРеквизиты(Новый Структура);
+
+ ЮТест.ОжидаетЧто(Конструктор.ДанныеСтроки()).НеЗаполнено();
+
+ // Добавляем строку и устанавливаем реквизиты
+ ЗначенияРеквизитов = Новый Структура("Покупатель, Сумма", Контрагент, Сумма);
+ Конструктор.УстановитьРеквизиты(ЗначенияРеквизитов);
+
+ ЗначенияРеквизитов = Новый Структура("Количество", Количество);
+ Конструктор.УстановитьРеквизиты(ЗначенияРеквизитов);
+
+ // Получаем данные строки
+ Данные = Конструктор.ДанныеСтроки();
+
+ // Проверяем, что реквизиты установлены корректно
+ ЮТест.ОжидаетЧто(Данные)
+ .Заполнено("Данные конструктора должны быть заполнены структурой")
+ .ИмеетТип("Структура")
+ .Свойство("Покупатель").Равно(Контрагент, "Контрагент должен совпадать")
+ .Свойство("Сумма").Равно(Сумма, "Сумма должна быть равна " + Сумма)
+ .Свойство("Количество").Равно(Количество, "Количество должна быть равна " + Количество);
+
+КонецПроцедуры
+
+Процедура Фикция() Экспорт
+
+ // Создаем документ
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара");
+
+ // Инициализируем конструктор движений
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");
+
+ // Добавляем строку и устанавливаем фиктивное значение реквизита
+ Конструктор.ДобавитьСтроку().Фикция("Товар");
+
+ // Получаем данные строки
+ Данные = Конструктор.ДанныеСтроки();
+
+ // Проверяем, что реквизит "Номенклатура" заполнен
+ ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены")
+ .Заполнено()
+ .Свойство("Товар")
+ .Заполнено("Номенклатура должна быть заполнена")
+ .ИмеетТип("СправочникСсылка.Товары");
+
+ // Проверяем, что метод выбрасывает исключение
+ МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("НесуществующийРеквизит");
+ ЮТест.ОжидаетЧто(Конструктор)
+ .Метод("Фикция", МассивПараметров)
+ .ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `НесуществующийРеквизит`");
+
+КонецПроцедуры
+
+Процедура ФикцияРеквизитов() Экспорт
+
+ // Создаем документ
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.ПриходТовара");
+
+ // Инициализируем конструктор движений
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");
+
+ // Добавляем строку и устанавливаем фиктивные значения реквизитов
+ Конструктор.ДобавитьСтроку().ФикцияРеквизитов("Товар, Склад, Количество");
+
+ // Получаем данные строки
+ Данные = Конструктор.ДанныеСтроки();
+
+ // Проверяем, что все реквизиты заполнены
+ ЮТест.ОжидаетЧто(Данные, "Данные строки должны быть заполнены")
+ .Заполнено()
+ .Свойство("Товар")
+ .Заполнено("Товар должн быть заполнен")
+ .ИмеетТип("СправочникСсылка.Товары")
+ .Свойство("Склад")
+ .Заполнено("Склад должен быть заполнен")
+ .ИмеетТип("СправочникСсылка.Склады")
+ .Свойство("Количество")
+ .Заполнено("Количество должено быть заполнено")
+ .ИмеетТип("Число");
+
+ // Проверяем, что при указании несуществующих реквизитов выбрасывается исключение
+ МассивПараметров = ЮТКоллекции.ЗначениеВМассиве("Несуществующий1");
+ ЮТест.ОжидаетЧто(Конструктор)
+ .Метод("ФикцияРеквизитов", МассивПараметров)
+ .ВыбрасываетИсключение("`РегистрНакопления.ТоварныеЗапасы` не содержит реквизит `Несуществующий1`");
+
+КонецПроцедуры
+
+Процедура ФикцияОбязательныхПолей() Экспорт
+
+ // Создаем документ
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+
+ // Инициализируем конструктор движений
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы");
+
+ // Добавляем строку и заполняем обязательные поля фиктивными значениями
+ Конструктор.ДобавитьСтроку().ФикцияОбязательныхПолей();
+
+ // Получаем данные строки
+ Данные = Конструктор.ДанныеСтроки();
+
+ // Получаем список обязательных полей из метаданных
+ ОбязательныеПоля = ЮТКоллекции.ЗначениеВМассиве("Товар", "Склад");
+
+ // Проверяем, что все обязательные поля заполнены
+ Утверждение = ЮТест.ОжидаетЧто(Данные);
+ Для Каждого Поле Из ОбязательныеПоля Цикл
+ Утверждение.Свойство(Поле)
+ .Заполнено();
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура Записать_РегистрСведений() Экспорт
+
+ МаксимальноеЧисло = 99999;
+
+ // Создаем документ "УстановкаЦен"
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.УстановкаЦен");
+ Товар = ЮТест.Данные().СоздатьЭлемент("Справочники.Товары");
+ ВидыЦены = ЮТест.Данные().СоздатьЭлемент("Справочники.ВидыЦен");
+ Цена = ЮТест.Данные().СлучайноеПоложительноеЧисло(МаксимальноеЧисло);
+
+ // Инициализируем конструктор движений для регистра сведений "ЦеныТоваров"
+ Конструктор = ЮТест.Данные().КонструкторДвижений(Документ, "ЦеныТоваров");
+ // Добавляем строку и заполняем необходимые реквизиты
+ Конструктор.ДобавитьСтроку().УстановитьРеквизиты(Новый Структура("Товар, ВидЦен, Цена", Товар, ВидыЦены, Цена));
+
+ // Записываем движения
+ Конструктор.Записать();
+
+ // Проверяем, что движения были записаны в регистр сведений
+ ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.ЦеныТоваров")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Регистратор").Равно(Документ));
+
+ // Получаем записи регистра движений документа
+ ЗаписиРегистра = ЮТЗапросы.ДвиженияДокумента(Документ, "ЦеныТоваров");
+
+ // Проверяем, что движения были записаны в регистр сведений
+ ЮТест.ОжидаетЧто(ЗаписиРегистра)
+ .Заполнено()
+ .ИмеетДлину(1)
+ .Свойство("[0].Регистратор").Равно(Документ)
+ .Свойство("[0].Товар").Равно(Товар)
+ .Свойство("[0].ВидЦен").Равно(ВидыЦены)
+ .Свойство("[0].Цена").Равно(Цена)
+ ;
+
+КонецПроцедуры
+
+Процедура Записать_РегистрНакопления() Экспорт
+
+ // Создаем документ
+ Документ = ЮТест.Данные().СоздатьДокумент("Документы.РасходТовара");
+
+ // Инициализируем конструктор движений
+ ЮТест.Данные().КонструкторДвижений(Документ, "ТоварныеЗапасы")
+ .ДобавитьСтроку()
+ .ФикцияРеквизитов("Товар, Склад, Количество")
+ .Записать();
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("РегистрНакопления.ТоварныеЗапасы")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Регистратор").Равно(Документ));
+
+КонецПроцедуры
+
+#КонецОбласти
+
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/\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.mdo" "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/\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.mdo"
new file mode 100644
index 000000000..1459b4c1b
--- /dev/null
+++ "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/\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.mdo"
@@ -0,0 +1,7 @@
+
+
+ Обр_ЮТКонструкторДвижений_МО
+ true
+ true
+ true
+
diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo
index e6bad0eaa..f11d32b7a 100644
--- a/tests/src/Configuration/Configuration.mdo
+++ b/tests/src/Configuration/Configuration.mdo
@@ -30,6 +30,7 @@
CommonModule.НастройкаYAxUnit
CommonModule.Обр_ЮТHTTPСервисЗапрос
CommonModule.Обр_ЮТRecordSet_МО
+ CommonModule.Обр_ЮТКонструкторДвижений_МО
CommonModule.Обр_ЮТКонструкторОбъектаXDTO_МО
CommonModule.ОМ_ДТОткрытиеФормСлужебныйВызовСервера
CommonModule.ОМ_Мокито
diff --git "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo" "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
index 140570f24..357389d31 100644
--- "a/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
+++ "b/tests/src/InformationRegisters/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262/\320\246\320\265\320\275\321\213\320\242\320\276\320\262\320\260\321\200\320\276\320\262.mdo"
@@ -12,10 +12,7 @@
ЦеныТоваров
Adopted
- Checked
- Checked
Extended
Extended
- Day