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 + + + <key>ru</key> + <value>Настройки пользователя</value> + + 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 +
true
+ 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