diff --git a/docs/test-data.md b/docs/test-data.md index 71dbe3bb..faf5495b 100644 --- a/docs/test-data.md +++ b/docs/test-data.md @@ -30,63 +30,137 @@ Примеры +1. Генерация фейкового документа + + ```bsl + #Если Сервер Тогда + Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); + #Иначе + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара"); + #КонецЕсли + + Конструктор + .Фикция("Поставщик") + .Фикция("Склад") + .Фикция("Валюта") + .Фикция("Организация") + .ТабличнаяЧасть("Товары"); + + Для Инд1 = 1 По ЮТест.Данные().СлучайноеЧисло(1, 5) Цикл + Конструктор.ДобавитьСтроку() + .Фикция("Товар") + .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) + .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) + .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) + КонецЦикла; + + Ссылка = Конструктор.Провести(); + ``` + +2. Генерация произвольных фейковых данных + + ```bsl + Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт + + Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ"); + + Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); + Описание.Вставить("ЧастотаЯдра", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(4, 3)); + Описание.Вставить("КоличествоЯдер", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(10)); + Описание.Вставить("КоличествоПотоков", Описание.КоличествоЯдер * 2); + Описание.Вставить("ПроизводительностьПроцессора", Описание.ЧастотаЯдра * Описание.КоличествоЯдер); + Описание.Вставить("ОбъемПамяти", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(1024, 3)); + Описание.Вставить("Диски", Новый Массив()); + Описание.Вставить("Кластер"); + + Для Инд = 1 По ЮТТестовыеДанные.СлучайноеЧисло(1, 3) Цикл + Описание.Диски.Добавить(ОписаниеДиска()); + КонецЦикла; + + Возврат Описание; + + КонецФункции + + Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт + + Описание = Новый Структура(); + + Описание.Вставить("Наименование", "req-" + ЮТТестовыеДанные.СлучайнаяСтрока()); + Описание.Вставить("ДатаДобавления", глПолучитьМосковскоеВремя()); + Описание.Вставить("ДатаОкончанияАренды", глДобавитьКДате(глПолучитьМосковскоеВремя(), "ДЕНЬ", 2)); + Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); + + Описание.Вставить("Проект", Проект()); + Описание.Вставить("Мейнтейнер", ПараметрыСеанса.Сотрудник); + + Описание.Вставить("КоличествоCPU", ЮТТестовыеДанные.СлучайноеЧисло(1, 4)); + Описание.Вставить("КоличествоПамяти", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); + Описание.Вставить("КоличествоДисков", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); + Описание.Вставить("ОперационнаяСистема", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОперационныеСистемы)); + + Описание.Вставить("СредаЭксплуатации", ""); + Описание.Вставить("Назначение", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.НазначенияВиртуальныхМашин)); + Описание.Вставить("ТипСреды", Справочники.ТипыИнформационныхСред.BETA); + Описание.Вставить("КодСервиса", ЮТТестовыеДанные.СлучайнаяСтрока(1)); + + Возврат Описание; + + КонецФункции + + Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт + + Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию"); + Данные.Адрес = "gitlab.ru/orais/ci_cd/1cws-apache24:" + Версия; + Данные.ВерсияПлатформы = Версия; + Данные.ТипПлатформы = Перечисления.ТипыСоединенияИсточникаДанных.Соединение1СПредприятие83Сервер; + Данные.ИспользоватьПоУмолчанию = ПоУмолчанию; + + Возврат ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОбразыDocker, Версия, Данные); + + КонецФункции + ``` + +3. Чтение из таблицы Markdown + ```bsl -Функция ОписаниеСервера(Знач Идентификатор = Неопределено) Экспорт - - Описание = БазовоеОписаниеОбъекта(Идентификатор, "СРВ"); - - Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); - Описание.Вставить("ЧастотаЯдра", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(4, 3)); - Описание.Вставить("КоличествоЯдер", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(10)); - Описание.Вставить("КоличествоПотоков", Описание.КоличествоЯдер * 2); - Описание.Вставить("ПроизводительностьПроцессора", Описание.ЧастотаЯдра * Описание.КоличествоЯдер); - Описание.Вставить("ОбъемПамяти", ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(1024, 3)); - Описание.Вставить("Диски", Новый Массив()); - Описание.Вставить("Кластер"); - - Для Инд = 1 По ЮТТестовыеДанные.СлучайноеЧисло(1, 3) Цикл - Описание.Диски.Добавить(ОписаниеДиска()); + Макет = + "| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | + ||------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------| + || Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | + || Документ | Документы | СоздатьДокумент | | + | + | | | | + | + || ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | + || ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | + || ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | + || ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | + || РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | | + || РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | | + || БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | + || Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | + |"; + КоллекцияОписаний = ЮТТестовыеДанные.ТаблицаMarkDown(Макет); + + ТипыМетаданных = Новый Структура(); + + Для Каждого Запись Из КоллекцияОписаний Цикл + + Описание = Новый Структура(); + Описание.Вставить("Имя", Запись.Имя); + Описание.Вставить("ИмяКоллекции", Запись.ИмяКоллекции); + Описание.Вставить("Конструктор", Запись.Конструктор); + Описание.Вставить("Группы", Запись.Группы = "+"); + Описание.Вставить("Ссылочный", Запись.Ссылочный = "+"); + Описание.Вставить("Реквизиты", Запись.Реквизиты = "+"); + Описание.Вставить("Измерения", Запись.Измерения = "+"); + Описание.Вставить("Ресурсы", Запись.Ресурсы = "+"); + Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+"); + Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+"); + + ТипыМетаданных.Вставить(Описание.Имя, Описание); + ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание); + КонецЦикла; - - Возврат Описание; - -КонецФункции -Функция ОписаниеЗаявкиНаСозданиеВМ() Экспорт - - Описание = Новый Структура(); - - Описание.Вставить("Наименование", "req-" + ЮТТестовыеДанные.СлучайнаяСтрока()); - Описание.Вставить("ДатаДобавления", глПолучитьМосковскоеВремя()); - Описание.Вставить("ДатаОкончанияАренды", глДобавитьКДате(глПолучитьМосковскоеВремя(), "ДЕНЬ", 2)); - Описание.Вставить("Адрес", ЮТТестовыеДанные.СлучайныйIPАдрес()); - - Описание.Вставить("Проект", Проект()); - Описание.Вставить("Мейнтейнер", ПараметрыСеанса.Сотрудник); - - Описание.Вставить("КоличествоCPU", ЮТТестовыеДанные.СлучайноеЧисло(1, 4)); - Описание.Вставить("КоличествоПамяти", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); - Описание.Вставить("КоличествоДисков", ЮТТестовыеДанные.СлучайноеЧисло(1, 16)); - Описание.Вставить("ОперационнаяСистема", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОперационныеСистемы)); - - Описание.Вставить("СредаЭксплуатации", ""); - Описание.Вставить("Назначение", ЮТТестовыеДанные.СоздатьЭлемент(Справочники.НазначенияВиртуальныхМашин)); - Описание.Вставить("ТипСреды", Справочники.ТипыИнформационныхСред.BETA); - Описание.Вставить("КодСервиса", ЮТТестовыеДанные.СлучайнаяСтрока(, 1)); - - Возврат Описание; - -КонецФункции - -Функция НовыйОбразDocker(Версия, ПоУмолчанию = Истина) Экспорт - - Данные = Новый Структура("Адрес, ВерсияПлатформы, ТипПлатформы, ИспользоватьПоУмолчанию"); - Данные.Адрес = "gitlab.ru/orais/ci_cd/1cws-apache24:" + Версия; - Данные.ВерсияПлатформы = Версия; - Данные.ТипПлатформы = Перечисления.ТипыСоединенияИсточникаДанных.Соединение1СПредприятие83Сервер; - Данные.ИспользоватьПоУмолчанию = ПоУмолчанию; - - Возврат ЮТТестовыеДанные.СоздатьЭлемент(Справочники.ОбразыDocker, Версия, Данные); - -КонецФункции + Возврат ТипыМетаданных; ``` diff --git a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl index 0f2c290e..0fd718a7 100644 --- a/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/МокитоСлужебный/Module.bsl @@ -443,7 +443,7 @@ Настройки.Вставить("ПараметрыОбучения", Неопределено); Настройки.Вставить("ПараметрыПроверки", Неопределено); - ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки); + ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки, Истина); КонецПроцедуры diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанных/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанных/Module.bsl new file mode 100644 index 00000000..3e6e6f49 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанных/Module.bsl @@ -0,0 +1,281 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2022 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/CommonModules/ЮТКонструкторТестовыхДанных/ЮТКонструкторТестовыхДанных.mdo b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанных/ЮТКонструкторТестовыхДанных.mdo new file mode 100644 index 00000000..8e2e487f --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторТестовыхДанных/ЮТКонструкторТестовыхДанных.mdo @@ -0,0 +1,11 @@ + + + ЮТКонструкторТестовыхДанных + + ru + Конструктор тестовых данных + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl new file mode 100644 index 00000000..cfa99df8 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl @@ -0,0 +1,72 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2022 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +///////////////////////////////////////////////////////////////////////////////// +// Экспортные процедуры и функции, предназначенные для использования другими +// объектами конфигурации или другими программами +///////////////////////////////////////////////////////////////////////////////// +#Область ПрограммныйИнтерфейс + +// Модули подсистемы. +// Возвращает список модулей подсистемы +// Подсистема должна находится в подсистеме "ЮТФункциональность" +// Параметры: +// ИмяПодсистемы - Строка - Имя подсистемы +// +// Возвращаемое значение: +// Массив из Строка - Имена модулей входящих в подсистему +Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт + + Возврат ЮТМетаданныеПовтИсп.МодулиПодсистемы(ИмяПодсистемы); + +КонецФункции + +// Описание менеджера. +// +// Параметры: +// Значение - Произвольный +// +// Возвращаемое значение: +// Структура - Описание менеджера: +// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных +// * Реквизиты - Структура из см. ЮТМетаданныеСервер.ОписаниеРеквизита +// * ТабличныеЧасти - Структура из Структура - +Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт + + ТипЗначения = ТипЗнч(Значение); + + Если ТипЗначения <> Тип("Тип") И ТипЗначения <> Тип("Строка") Тогда + Значение = ТипЗнч(Значение); + ТипЗначения = Тип("Тип"); + КонецЕсли; + + Если ТипЗначения = Тип("Тип") Тогда + Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Значение); + Иначе + Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектМетаданных(Значение); + КонецЕсли; + +КонецФункции + +Функция ТипыМетаданных() Экспорт + + Возврат ЮТМетаданныеСервер.ТипыМетаданных(); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданные/ЮТМетаданные.mdo b/exts/yaxunit/src/CommonModules/ЮТМетаданные/ЮТМетаданные.mdo new file mode 100644 index 00000000..8d6beb15 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданные/ЮТМетаданные.mdo @@ -0,0 +1,11 @@ + + + ЮТМетаданные + + ru + Метаданные + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl new file mode 100644 index 00000000..2458974a --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/Module.bsl @@ -0,0 +1,43 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2022 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +///////////////////////////////////////////////////////////////////////////////// +// Экспортные процедуры и функции, предназначенные для использования другими +// объектами конфигурации или другими программами +///////////////////////////////////////////////////////////////////////////////// +#Область СлужебныйПрограммныйИнтерфейс + +Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт + + Возврат ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы); + +КонецФункции + +Функция ОписаниеОбъектМетаданных(Знач Менеджер) Экспорт + + Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Менеджер); + +КонецФункции + +Функция ТипыМетаданных() Экспорт + + Возврат ЮТМетаданныеСервер.ТипыМетаданных(); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/ЮТМетаданныеПовтИсп.mdo b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/ЮТМетаданныеПовтИсп.mdo new file mode 100644 index 00000000..fc9ea7d8 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеПовтИсп/ЮТМетаданныеПовтИсп.mdo @@ -0,0 +1,12 @@ + + + ЮТМетаданныеПовтИсп + + ru + Метаданные + + true + true + true + DuringSession + diff --git a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl index c63a93b4..8e7ed9e6 100644 --- a/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТМетаданныеСервер/Module.bsl @@ -30,18 +30,6 @@ #Область СлужебныйПрограммныйИнтерфейс -// РасширенияКонфигурации -// Возвращает список имен установленных расширений -// Возвращаемое значение: -// Массив - Расширения конфигурации -Функция РасширенияКонфигурации() Экспорт - - Расширения = РасширенияКонфигурации.Получить(); - - Возврат ЮТОбщий.ВыгрузитьЗначения(Расширения, "Имя"); - -КонецФункции - // МодулиРасширений // Выполняет чтение метаданных общих модулей, которые предположительно могут являться тестами // @@ -134,6 +122,137 @@ КонецФункции +Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт + + ТипЗначение = ТипЗнч(Значение); + + Если ТипЗначение = Тип("Тип") Тогда + + МетаданныеОбъекта = Метаданные.НайтиПоТипу(Значение); + ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта); + + ИначеЕсли ТипЗначение = Тип("ОбъектМетаданных") Тогда + + МетаданныеОбъекта = Значение; + ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта); + + ИначеЕсли ТипЗначение = Тип("Строка") Тогда + + ЧастиСтроки = СтрРазделить(Значение, "."); + Если ЧастиСтроки.Количество() = 2 Тогда + ТипыМетаданных = ЮТМетаданные.ТипыМетаданных(); + ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]]; + Если ОписаниеТипа <> Неопределено Тогда + МетаданныеОбъекта = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]]; + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + Если МетаданныеОбъекта = Неопределено ИЛИ ОписаниеТипа = Неопределено Тогда + Сообщение = СтрШаблон("Не удалось получить описание метаданных для `%1` (%2)", Значение, ТипЗначение); + ВызватьИсключение Сообщение; + КонецЕсли; + + ОписаниеОбъект = Новый Структура; + ОписаниеОбъект.Вставить("ОписаниеТипа", ОписаниеТипа); + ОписаниеОбъект.Вставить("Реквизиты", Новый Структура()); + ОписаниеОбъект.Вставить("ТабличныеЧасти", Новый Структура()); + + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты); + + Если ОписаниеТипа.Измерения Тогда + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты); + КонецЕсли; + + Если ОписаниеТипа.Реквизиты Тогда + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Реквизиты, ОписаниеОбъект.Реквизиты); + КонецЕсли; + + Если ОписаниеТипа.Ресурсы Тогда + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Ресурсы, ОписаниеОбъект.Реквизиты); + КонецЕсли; + + Если ОписаниеТипа.РеквизитыАдресации Тогда + ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты); + КонецЕсли; + + Если ОписаниеТипа.ТабличныеЧасти Тогда + + Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл + РеквизитыТабличнойЧасти = Новый Структура(); + ДобавитьОписанияРеквизитов(ТабличнаяЧасть.Реквизиты, РеквизитыТабличнойЧасти); + + ОписаниеОбъект.ТабличныеЧасти.Вставить(ТабличнаяЧасть.Имя, РеквизитыТабличнойЧасти); + КонецЦикла; + + КонецЕсли; + + Возврат ОписаниеОбъект; + +КонецФункции + +// Описание типа метаданных. +// +// Параметры: +// МетаданныеОбъекта - Тип, ОбъектМетаданных - Тип +// +// Возвращаемое значение: +// Структура - Описание типа метаданных: +// * Имя - Строка +// * ИмяКоллекции - Строка +// * Конструктор - Строка +// * Группы - Булево +// * Ссылочный - Булево +// * Реквизиты - Булево +// * Измерения - Булево +// * Ресурсы - Булево +// * РеквизитыАдресации - Булево +// * ТабличныеЧасти - Булево +Функция ОписаниеТипаМетаданных(Знач МетаданныеОбъекта) Экспорт + + Если ТипЗнч(МетаданныеОбъекта) = Тип("Тип") Тогда + МетаданныеОбъекта = Метаданные.НайтиПоТипу(МетаданныеОбъекта); + КонецЕсли; + + ПолноеИмя = МетаданныеОбъекта.ПолноеИмя(); + ЧастиИмени = СтрРазделить(ПолноеИмя, "."); + Типы = ЮТМетаданные.ТипыМетаданных(); + + Возврат Типы[ЧастиИмени[0]]; + +КонецФункции + +Функция ТипыМетаданных() Экспорт + + Макет = ПолучитьОбщийМакет("ЮТОписаниеМетаданных").ПолучитьТекст(); + КоллекцияОписаний = ЮТТестовыеДанные.ТаблицаMarkDown(Макет); + + ТипыМетаданных = Новый Структура(); + + Для Каждого Запись Из КоллекцияОписаний Цикл + + Описание = Новый Структура(); + Описание.Вставить("Имя", Запись.Имя); + Описание.Вставить("ИмяКоллекции", Запись.ИмяКоллекции); + Описание.Вставить("Конструктор", Запись.Конструктор); + Описание.Вставить("Группы", Запись.Группы = "+"); + Описание.Вставить("Ссылочный", Запись.Ссылочный = "+"); + Описание.Вставить("Реквизиты", Запись.Реквизиты = "+"); + Описание.Вставить("Измерения", Запись.Измерения = "+"); + Описание.Вставить("Ресурсы", Запись.Ресурсы = "+"); + Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+"); + Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+"); + + ТипыМетаданных.Вставить(Описание.Имя, Описание); + ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание); + + КонецЦикла; + + Возврат ТипыМетаданных; + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// @@ -142,4 +261,25 @@ #Область СлужебныеПроцедурыИФункции +Процедура ДобавитьОписанияРеквизитов(КоллекцияРеквизитов, КоллекцияОписаний) + + Для Каждого Реквизит Из КоллекцияРеквизитов Цикл + + КоллекцияОписаний.Вставить(Реквизит.Имя, ОписаниеРеквизита(Реквизит)); + + КонецЦикла; + +КонецПроцедуры + +Функция ОписаниеРеквизита(Реквизит) Экспорт + + Описание = Новый Структура(); + Описание.Вставить("Имя", Реквизит.Имя); + Описание.Вставить("Тип", Реквизит.Тип); + Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку); + + Возврат Описание; + +КонецФункции + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl index 84fca172..bb1c0ce3 100644 --- a/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТОбщий/Module.bsl @@ -91,7 +91,7 @@ КонецФункции // Сформировать строку символов. -// Формирует строку из заданого количества повторяемых символов +// Формирует строку из заданного количества повторяемых символов // Параметры: // Символ - Строка - Повторяемый символ // Количество - Число - Количество повторений @@ -803,6 +803,44 @@ КонецФункции +Функция ВычислитьБезопасно(Выражение) Экспорт + +#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда + УстановитьБезопасныйРежим(Истина); + Попытка + Значение = Вычислить(Выражение); + Исключение + УстановитьБезопасныйРежим(Ложь); + ВызватьИсключение; + КонецПопытки; + + УстановитьБезопасныйРежим(Ложь); +#Иначе + Значение = Вычислить(Выражение); +#КонецЕсли + + Возврат Значение; + +КонецФункции + +// Параметры записи объекта +// +// Возвращаемое значение: +// Структура - Параметры записи: +// * ОбменДаннымиЗагрузка - Булево +// * ДополнительныеСвойства - Структура +// * РежимЗаписи - РежимЗаписиДокумента +Функция ПараметрыЗаписи() Экспорт + + ПараметрыЗаписи = Новый Структура(); + ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь); + ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура); + ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись); + + Возврат ПараметрыЗаписи; + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// @@ -811,9 +849,13 @@ #Область СлужебныйПрограммныйИнтерфейс +// Описание типов любая ссылка. +// +// Возвращаемое значение: +// ОписаниеТипов - Описание типов любая ссылка Функция ОписаниеТиповЛюбаяСсылка() Экспорт - Возврат ЮТОбщийВызовСервера.ОписаниеТиповЛюбаяСсылка(); + Возврат ЮТПовторногоИспользования.ОписаниеТиповЛюбаяСсылка(); КонецФункции @@ -853,8 +895,13 @@ Функция Модуль(ИмяМодуля) Экспорт - //@skip-check server-execution-safe-mode - Возврат Вычислить(ИмяМодуля); + Возврат ВычислитьБезопасно(ИмяМодуля); + +КонецФункции + +Функция Менеджер(Знач Менеджер) Экспорт + + Возврат ЮТОбщийВызовСервера.Менеджер(Менеджер); КонецФункции diff --git a/exts/yaxunit/src/CommonModules/ЮТОбщийВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТОбщийВызовСервера/Module.bsl index b7571c84..d54a5db0 100644 --- a/exts/yaxunit/src/CommonModules/ЮТОбщийВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТОбщийВызовСервера/Module.bsl @@ -48,6 +48,16 @@ КонецФункции +Функция Менеджер(Знач Менеджер) Экспорт + + Если ТипЗнч(Менеджер) = Тип("Строка") Тогда + Менеджер = ЮТОбщий.ВычислитьБезопасно(Менеджер); + КонецЕсли; + + Возврат Менеджер; + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// diff --git a/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl index 5b9c7944..da8746b2 100644 --- a/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТПовторногоИспользования/Module.bsl @@ -47,6 +47,12 @@ КонецФункции +Функция ОписаниеТиповЛюбаяСсылка() Экспорт + + Возврат ЮТОбщийВызовСервера.ОписаниеТиповЛюбаяСсылка(); + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// diff --git a/exts/yaxunit/src/CommonModules/ЮТРасширения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТРасширения/Module.bsl index d6975aba..b28166e4 100644 --- a/exts/yaxunit/src/CommonModules/ЮТРасширения/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТРасширения/Module.bsl @@ -37,7 +37,7 @@ Функция ОбработчикиСобытий() Экспорт - Возврат ЮТМетаданныеСервер.МодулиПодсистемы("ЮТОбработчикиСобытий"); + Возврат ЮТМетаданные.МодулиПодсистемы("ЮТОбработчикиСобытий"); КонецФункции @@ -50,7 +50,7 @@ Функция МодулиПодсистемы(ИмяПодсистемы) - ИменаМодулей = ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы); + ИменаМодулей = ЮТМетаданные.МодулиПодсистемы(ИмяПодсистемы); Модули = Новый Массив(); diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl index 4c52deda..3280ef1b 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанные/Module.bsl @@ -204,6 +204,12 @@ КонецФункции +Функция СлучайноеБулево() Экспорт + + Возврат СлучайноеЧисло() %2 = 0; + +КонецФункции + Функция НовыйФайл(Содержимое = Неопределено, ТолькоЧтение = Ложь, Расширение = Неопределено) Экспорт Результат = НовоеИмяВременногоФайла(Расширение); @@ -234,21 +240,14 @@ // Строка Функция НовоеИмяВременногоФайла(Расширение = Неопределено) Экспорт -#Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТестовыеДанные.НовоеИмяВременногоФайла"); -#Иначе Результат = ПолучитьИмяВременногоФайла(Расширение); ЮТКонтекст.КонтекстТеста().ВременныеФайлы.Добавить(Результат); Возврат Результат; -#КонецЕсли КонецФункции Функция ТаблицаMarkDown(Строки) Экспорт -#Если ВебКлиент Тогда - ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТестовыеДанные.ТаблицаMarkDown"); -#Иначе ЗагрузилиЗаголовок = Ложь; Результат = Новый Массив(); Ключи = ""; @@ -307,7 +306,6 @@ Поток.Закрыть(); Возврат Результат; -#КонецЕсли КонецФункции @@ -344,6 +342,33 @@ КонецФункции +// Возвращает конструктор создания тестовых данных +// +// Конструктор имеет ряд особенностей: +// +// * Нельзя использовать параллельно несколько конструкторов. +// Например, +// ```bsl +// Пользователь = КонструкторОбъекта(Справочники.Пользователи); +// Документ = КонструкторОбъекта(Документы.Приход); +// ... +// Пользователь.Записать(); +// Документ.Провести(); +// ``` +// * Создание объекта происходит при вызове методов `Записать` и `Провести`, а создание реквизитов происходит во время вызова методов установки. +// * При использовании на клиенте все значения должны быть сериализуемыми. +// +// Параметры: +// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров +// +// Возвращаемое значение: +// ОбщийМодуль - Конструктор +Функция КонструкторОбъекта(Менеджер) Экспорт + + Возврат ЮТКонструкторТестовыхДанных.Инициализировать(Менеджер); + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// // Экспортные процедуры и функции для служебного использования внутри подсистемы diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl index b316a269..421336e0 100644 --- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl @@ -34,9 +34,7 @@ // ЛюбаяСсылка - Ссылка на созданный объект Функция СоздатьЭлемент(Знач Менеджер, Знач Наименование = Неопределено, Знач Реквизиты = Неопределено) Экспорт - Если ТипЗнч(Менеджер) = Тип("Строка") Тогда - Менеджер = Вычислить(Менеджер); - КонецЕсли; + Менеджер = ЮТОбщий.Менеджер(Менеджер); Объект = Менеджер.СоздатьЭлемент(); @@ -50,7 +48,11 @@ ЗаполнитьЗначенияСвойств(Объект, Реквизиты); КонецЕсли; - Объект.Записать(); + Если Объект.Метаданные().ДлинаКода И НЕ ЗначениеЗаполнено(Объект.Код) Тогда + Объект.УстановитьНовыйКод(); + КонецЕсли; + + ЗаписатьОбъект(Объект); Возврат Объект.Ссылка; @@ -68,9 +70,7 @@ РежимЗаписи = РежимЗаписиДокумента.Запись; - Если ТипЗнч(Менеджер) = Тип("Строка") Тогда - Менеджер = Вычислить(Менеджер); - КонецЕсли; + Менеджер = ЮТОбщий.Менеджер(Менеджер); Объект = Менеджер.СоздатьДокумент(); Объект.Дата = ТекущаяДатаСеанса(); @@ -81,12 +81,68 @@ РежимЗаписи = ЮТОбщий.ЗначениеСтруктуры(Реквизиты, "РежимЗаписи", РежимЗаписи); КонецЕсли; - Объект.Записать(РежимЗаписи); + ЗаписатьОбъект(Объект, , РежимЗаписи); Возврат Объект.Ссылка; КонецФункции +// Создать запись. +// +// Параметры: +// Менеджер - Произвольный +// Данные - Структура - Данные заполнения объекта +// ПараметрыЗаписи - см. ЮТОбщий. +// ВернутьОбъект - Булево - Вернуть объект +// +// Возвращаемое значение: +// Произвольный - Создать запись +Функция СоздатьЗапись(Знач Менеджер, Знач Данные, Знач ПараметрыЗаписи = Неопределено, Знач ВернутьОбъект = Ложь) Экспорт + + Менеджер = ЮТОбщий.Менеджер(Менеджер); + + ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер)); + + Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа); + ЗаполнитьЗначенияСвойств(Объект, Данные); + + Если ОписаниеОбъектаМетаданных.ОписаниеТипа.ТабличныеЧасти Тогда + + Для Каждого ОписаниеТабличнойЧасти Из ОписаниеОбъектаМетаданных.ТабличныеЧасти Цикл + + ИмяТабличнойЧасти = ОписаниеТабличнойЧасти.Ключ; + Если НЕ Данные.Свойство(ИмяТабличнойЧасти) Тогда + Продолжить; + КонецЕсли; + + Для Каждого Запись Из Данные[ИмяТабличнойЧасти] Цикл + Строка = Объект[ИмяТабличнойЧасти].Добавить(); + ЗаполнитьЗначенияСвойств(Строка, Запись); + КонецЦикла; + + КонецЦикла; + + КонецЕсли; + + Если ПараметрыЗаписи = Неопределено Тогда + ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); + Иначе + ПереданныеПараметрыЗаписи = ПараметрыЗаписи; + ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи(); + ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи); + КонецЕсли; + + ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных); + + ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства); + + РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено); + ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи); + + Возврат ?(ВернутьОбъект, Объект, Объект.Ссылка); + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// // Экспортные процедуры и функции для служебного использования внутри подсистемы @@ -94,6 +150,39 @@ #Область СлужебныйПрограммныйИнтерфейс + +Функция ФикцияЗначенияБазы(Знач ТипЗначения) Экспорт + + ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения); + + Если ОбъектМетаданных = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если Метаданные.Перечисления.Содержит(ОбъектМетаданных) Тогда + + Менеджер = Новый ("ПеречислениеМенеджер." + ОбъектМетаданных.Имя); + НомерЗначения = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(Менеджер.Количество()); + Возврат Менеджер.Получить(НомерЗначения - 1); + + КонецЕсли; + + ОписаниеОбъектаМетаданных = ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(ОбъектМетаданных); + ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа; + + ИмяТипаМенеджера = СтрШаблон("%1Менеджер.%2", ОписаниеТипа.Имя, ОбъектМетаданных.Имя); + Менеджер = Новый (ИмяТипаМенеджера); + + Объект = СоздатьОбъект(Менеджер, ОписаниеТипа); + + ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных); + + ЗаписатьОбъект(Объект); + + Возврат Объект.Ссылка; + +КонецФункции + #КонецОбласти ///////////////////////////////////////////////////////////////////////////////// @@ -102,4 +191,89 @@ #Область СлужебныеПроцедурыИФункции +// Создать объект. +// +// Параметры: ОписаниеМенеджера - +// См. ОписаниеМенеджера +// Менеджер - Произвольный - Менеджер +// ОписаниеТипа - см. ЮТМетаданные.ОписаниеОбъектМетаданных +// +// Возвращаемое значение: +// Произвольный - Создать объект +Функция СоздатьОбъект(Менеджер, ОписаниеТипа) + + Если ОписаниеТипа.Конструктор = "СоздатьЭлемент" Тогда + Результат = Менеджер.СоздатьЭлемент(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьДокумент" Тогда + Результат = Менеджер.СоздатьДокумент(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьСчет" Тогда + Результат = Менеджер.СоздатьСчет(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьВидРасчета" Тогда + Результат = Менеджер.СоздатьВидРасчета(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьУзел" Тогда + Результат = Менеджер.СоздатьУзел(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьНаборЗаписей" Тогда + Результат = Менеджер.СоздатьНаборЗаписей(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьБизнесПроцесс" Тогда + Результат = Менеджер.СоздатьБизнесПроцесс(); + ИначеЕсли ОписаниеТипа.Конструктор = "СоздатьЗадачу" Тогда + Результат = Менеджер.СоздатьЗадачу(); + Иначе + ВызватьИсключение СтрШаблон("Для %1 не поддерживается создание записей ИБ", ОписаниеТипа.Имя); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +Процедура ЗаписатьОбъект(Объект, ОбменДаннымиЗагрузка = Ложь, РежимЗаписи = Неопределено) + + Если ОбменДаннымиЗагрузка Тогда + Объект.ОбменДанными.Загрузка = Истина; + КонецЕсли; + + Попытка + + Если РежимЗаписи <> Неопределено Тогда + Объект.Записать(РежимЗаписи); + Иначе + Объект.Записать(); + КонецЕсли; + + Исключение + + Сообщение = СтрШаблон("Не удалось записать объект `%1` (%2) + |%3", Объект, ТипЗнч(Объект), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение Сообщение; + + КонецПопытки; + +КонецПроцедуры + +Процедура ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных) + + ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа; + Если ОписаниеТипа.Имя = "Документ" Тогда + Если НЕ ЗначениеЗаполнено(Объект.Дата) Тогда + Объект.Дата = ТекущаяДатаСеанса(); + КонецЕсли; + Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда + Объект.УстановитьНовыйНомер(); + КонецЕсли; + КонецЕсли; + + Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Код") + И ОписаниеОбъектаМетаданных.Реквизиты.Код.Обязательный + И Не ЗначениеЗаполнено(Объект.Код) Тогда + Объект.УстановитьНовыйКод(); + КонецЕсли; + + Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Наименование") + И ОписаниеОбъектаМетаданных.Реквизиты.Наименование.Обязательный + И Не ЗначениеЗаполнено(Объект.Наименование) Тогда + Объект.Наименование = ЮТТестовыеДанные.СлучайнаяСтрока(); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/Module.bsl new file mode 100644 index 00000000..755bafca --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/Module.bsl @@ -0,0 +1,138 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2022 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 Тогда + НомерТипа = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(ОписаниеТипа.Типы().Количество()); + Тип = ОписаниеТипа.Типы()[НомерТипа - 1]; + Иначе + Тип = ОписаниеТипа.Типы()[0]; + КонецЕсли; + + Значение = Неопределено; + + Если Тип = Тип("Число") Тогда + + МаксимальноеЗначение = 4294967295; + Если ОписаниеТипа.КвалификаторыЧисла.ДопустимыйЗнак = ДопустимыйЗнак.Неотрицательный ИЛИ ЮТТестовыеДанные.СлучайноеБулево() Тогда + МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(МаксимальноеЗначение); + Значение = ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти); + Иначе + МаксимальноеЗначение = ОписаниеТипа.ПривестиЗначение(МаксимальноеЗначение); + Значение = ЮТТестовыеДанные.СлучайноеОтрицательноеЧисло(МаксимальноеЗначение, ОписаниеТипа.КвалификаторыЧисла.РазрядностьДробнойЧасти); + КонецЕсли; + + ИначеЕсли Тип = Тип("Строка") Тогда + + Если ОписаниеТипа.КвалификаторыСтроки.Длина = 0 Тогда + Значение = ЮТТестовыеДанные.СлучайнаяСтрока(ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(100)); + Иначе + Значение = ЮТТестовыеДанные.СлучайнаяСтрока(ОписаниеТипа.КвалификаторыСтроки.Длина); + КонецЕсли; + + ИначеЕсли Тип = Тип("Дата") Тогда + + Значение = ЮТТестовыеДанные.СлучайнаяДата(ТекущаяДата() - 315360000, ТекущаяДата() + 315360000); // +/- 10 лет + + ИначеЕсли Тип = Тип("Булево") Тогда + + Значение = ЮТТестовыеДанные.СлучайноеБулево(); + + ИначеЕсли ЭтоСистемноеПеречисление(Тип) Тогда + + Значение = СлучайноЗначениеСистемногоПеречисления(Тип); + Иначе + + Значение = ЮТТестовыеДанныеВызовСервера.ФикцияЗначенияБазы(Тип); + + КонецЕсли; + + Если Значение = Неопределено Тогда + ВызватьИсключение СтрШаблон("Создание фейковых значений для `%1` не поддерживается", ОписаниеТипа); + КонецЕсли; + + + Возврат ОписаниеТипа.ПривестиЗначение(Значение); + +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ЭтоСистемноеПеречисление(Тип) + + Возврат ТипыСистемныхПеречислений().СодержитТип(Тип); + +КонецФункции + +Функция ТипыСистемныхПеречислений() + + Возврат Новый ОписаниеТипов( + "ВидДвиженияБухгалтерии, + |ВидДвиженияНакопления, + |ВидПериодаРегистраРасчета, + |ВидСчета, + |ВидТочкиМаршрутаБизнесПроцесса, + |ИспользованиеГруппИЭлементов, + |ИспользованиеСреза, + |ИспользованиеРежимаПроведения, + |РежимАвтоВремя, + |РежимЗаписиДокумента, + |РежимПроведенияДокумента, + |ПериодичностьАгрегатаРегистраНакопления, + |ИспользованиеАгрегатаРегистраНакопления"); + +КонецФункции + +Функция ИмяСистемногоПеречисления(Тип) + + Возврат Строка(Тип); + +КонецФункции + +Функция СлучайноЗначениеСистемногоПеречисления(Тип) + + Менеджер = ЮТОбщий.ВычислитьБезопасно(ИмяСистемногоПеречисления(Тип)); + + Значения = Новый Массив(); + + Для Каждого Значение Из Менеджер Цикл + Значения.Добавить(Значение); + КонецЦикла; + + Возврат ЮТТестовыеДанные.СлучайноеЗначениеИзСписка(Значения); + +КонецФункции + + +#КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/ЮТТестовыеДанныеСлужебный.mdo b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/ЮТТестовыеДанныеСлужебный.mdo new file mode 100644 index 00000000..b69187c8 --- /dev/null +++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеСлужебный/ЮТТестовыеДанныеСлужебный.mdo @@ -0,0 +1,11 @@ + + + ЮТТестовыеДанныеСлужебный + + ru + Тестовые данные служебный + + true + true + true + diff --git a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl index 92cffdb9..c7efee30 100644 --- a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl @@ -584,7 +584,7 @@ // Проверяет установленное значение Контекста (или его свойство) на соответствие переданному типу. // // Параметры: -// ОжидаемоеЗначение - Строка, Тип - Ожидается, что значение Контекста (или его свойство) имеет данный тип +// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки // // Возвращаемое значение: @@ -601,7 +601,7 @@ // Проверяет установленное значение Контекста (или его свойство) на несоответствие переданному типу. // // Параметры: -// ОжидаемоеЗначение - Строка, Тип - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип +// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип // ОписаниеПроверки - Строка - Описание конкретной проверки // // Возвращаемое значение: @@ -1559,7 +1559,8 @@ Если ТипОжидаемогоТипа = Тип("ОписаниеТипов") Тогда // СодержитТип не подходит, всегда выдает истину если проверяем Тип("Неопределено") - Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено; + Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено + И ОжидаемыйТип.ПривестиЗначение(Значение) = Значение; Иначе Соответствует = ТипЗначения = ОжидаемыйТип; КонецЕсли; diff --git a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt new file mode 100644 index 00000000..8a842b97 --- /dev/null +++ b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/Template.txt @@ -0,0 +1,16 @@ +# Описание свойств метаданных + +| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти | +|------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------| +| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + | +| Документ | Документы | СоздатьДокумент | | + | + | | | | + | +| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + | +| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + | +| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + | +| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + | +| РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | | +| РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | | +| РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | | +| РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | | +| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + | +| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + | diff --git a/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/ЮТОписаниеМетаданных.mdo b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/ЮТОписаниеМетаданных.mdo new file mode 100644 index 00000000..6c8c138b --- /dev/null +++ b/exts/yaxunit/src/CommonTemplates/ЮТОписаниеМетаданных/ЮТОписаниеМетаданных.mdo @@ -0,0 +1,9 @@ + + + ЮТОписаниеМетаданных + + ru + Описание метаданных + + TextDocument + diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index ce2a9184..de89444b 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -1,10 +1,6 @@ YAXUNIT - - ru - YAXUNIT - Adopted Extended @@ -37,6 +33,7 @@ CommonPicture.ЮТУпал CommonPicture.ЮТУспешно CommonPicture.ЮТЭлементыТестов + CommonTemplate.ЮТОписаниеМетаданных CommonModule.Мокито CommonModule.МокитоОбучение CommonModule.МокитоПроверки @@ -45,12 +42,15 @@ CommonModule.ЮТИсполнитель CommonModule.ЮТИсполнительСервер CommonModule.ЮТКонструкторВариантов + CommonModule.ЮТКонструкторТестовыхДанных CommonModule.ЮТКонтекст CommonModule.ЮТКонтекстКлиент CommonModule.ЮТКонтекстСервер CommonModule.ЮТКонтекстТеста CommonModule.ЮТЛогирование CommonModule.ЮТЛогированиеВызовСервера + CommonModule.ЮТМетаданные + CommonModule.ЮТМетаданныеПовтИсп CommonModule.ЮТМетаданныеСервер CommonModule.ЮТОбщий CommonModule.ЮТОбщийВызовСервера @@ -64,6 +64,7 @@ CommonModule.ЮТСобытия CommonModule.ЮТТестовыеДанные CommonModule.ЮТТестовыеДанныеВызовСервера + CommonModule.ЮТТестовыеДанныеСлужебный CommonModule.ЮТТесты CommonModule.ЮТУтверждения CommonModule.ЮТФабрика diff --git a/ТестыПример/.settings/com.e1c.v8codestyle.autosort.prefs b/ТестыПример/.settings/com.e1c.v8codestyle.autosort.prefs new file mode 100644 index 00000000..23b06250 --- /dev/null +++ b/ТестыПример/.settings/com.e1c.v8codestyle.autosort.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +topObjects=true diff --git a/ТестыПример/src/CommonModules/ОМ_Мокито/Module.bsl b/ТестыПример/src/CommonModules/ОМ_Мокито/Module.bsl index 55a4f630..953462ba 100644 --- a/ТестыПример/src/CommonModules/ОМ_Мокито/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_Мокито/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_МокитоОбучение/Module.bsl b/ТестыПример/src/CommonModules/ОМ_МокитоОбучение/Module.bsl index bba28a8f..a3770671 100644 --- a/ТестыПример/src/CommonModules/ОМ_МокитоОбучение/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_МокитоОбучение/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_Общий/Module.bsl b/ТестыПример/src/CommonModules/ОМ_Общий/Module.bsl index f5bafd4a..4b204f4d 100644 --- a/ТестыПример/src/CommonModules/ОМ_Общий/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_Общий/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_ОшибкаЗагрузкиСценариев/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ОшибкаЗагрузкиСценариев/Module.bsl index abc07779..1638341a 100644 --- a/ТестыПример/src/CommonModules/ОМ_ОшибкаЗагрузкиСценариев/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_ОшибкаЗагрузкиСценариев/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl new file mode 100644 index 00000000..d341d443 --- /dev/null +++ b/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/Module.bsl @@ -0,0 +1,121 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +///////////////////////////////////////////////////////////////////////////////// +// Экспортные процедуры и функции, предназначенные для использования другими +// объектами конфигурации или другими программами +///////////////////////////////////////////////////////////////////////////////// +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты.ВТранзакции() + .ДобавитьТест("ЗаполнитьСправочник") + .ДобавитьТест("ЗаполнитьДокумент") + ; + +КонецПроцедуры + +Процедура ЗаполнитьСправочник() Экспорт + +#Если Сервер Тогда + Конструктор = ЮТест.Данные().КонструкторОбъекта(Справочники.Товары); +#Иначе + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары"); +#КонецЕсли + + Конструктор + .Фикция("Наименование") + .Фикция("Артикул") + .Фикция("Поставщик") + .Фикция("Вид"); + + ДанныеОбъекта = Конструктор.ДанныеОбъекта(); + ЮТест.ОжидаетЧто(ДанныеОбъекта, "Данные создаваемого объекта") + .Свойство("Наименование").Заполнено() + .Свойство("Артикул").Заполнено() + .Свойство("Поставщик").Заполнено() + .Свойство("Вид").Заполнено(); + + Ссылка = Конструктор.Записать(); +#Если Сервер Тогда + ЮТест.ОжидаетЧто(Ссылка, "Созданный объект") + .Заполнено() + .ИмеетТип("СправочникСсылка.Товары") + .Свойство("Наименование").Заполнено().Равно(ДанныеОбъекта.Наименование) + .Свойство("Артикул").Заполнено().Равно(ДанныеОбъекта.Артикул) + .Свойство("Поставщик").Заполнено().Равно(ДанныеОбъекта.Поставщик) + .Свойство("Вид").Заполнено().Равно(ДанныеОбъекта.Вид); +#КонецЕсли + +КонецПроцедуры + +Процедура ЗаполнитьДокумент() Экспорт + +#Если Сервер Тогда + Конструктор = ЮТест.Данные().КонструкторОбъекта(Документы.ПриходТовара); +#Иначе + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара"); +#КонецЕсли + + Ссылка = Конструктор + .Фикция("Поставщик") + .Фикция("Склад") + .Фикция("Валюта") + .Фикция("Организация") + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Фикция("Товар") + .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) + .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) + .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) + .ДобавитьСтроку() + .Фикция("Товар") + .Установить("Цена", ЮТест.Данные().СлучайноеПоложительноеЧисло(9999, 2)) + .Установить("Количество", ЮТест.Данные().СлучайноеПоложительноеЧисло(20)) + .Установить("Сумма", Конструктор.ДанныеСтроки().Цена * Конструктор.ДанныеСтроки().Количество) + .Провести(); + +#Если Сервер Тогда + ЮТест.ОжидаетЧто(Ссылка, "Созданный объект") + .Заполнено() + .ИмеетТип("ДокументСсылка.ПриходТовара") + .Свойство("Номер").Заполнено() + .Свойство("Поставщик").Заполнено() + .Свойство("Склад").Заполнено() + .Свойство("Товары").ИмеетДлину(2) + .Свойство("Товары[0].Товар").Заполнено() + .Свойство("Товары[0].Цена").Заполнено() + .Свойство("Товары[0].Количество").Заполнено() + .Свойство("Товары[0].Сумма").Заполнено() + .Свойство("Товары[1].Товар").Заполнено() + .Свойство("Товары[1].Цена").Заполнено() + .Свойство("Товары[1].Количество").Заполнено() + .Свойство("Товары[1].Сумма").Заполнено() + .Свойство("Проведен").ЭтоИстина() + ; +#КонецЕсли + + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/ОМ_ЮТКонструкторТестовыхДанных.mdo b/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/ОМ_ЮТКонструкторТестовыхДанных.mdo new file mode 100644 index 00000000..e16b5f1d --- /dev/null +++ b/ТестыПример/src/CommonModules/ОМ_ЮТКонструкторТестовыхДанных/ОМ_ЮТКонструкторТестовыхДанных.mdo @@ -0,0 +1,11 @@ + + + ОМ_ЮТКонструкторТестовыхДанных + + ru + О м конструктор тестовых данных + + true + true + true + diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl new file mode 100644 index 00000000..5b5da2bc --- /dev/null +++ b/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/Module.bsl @@ -0,0 +1,63 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2023 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +// @strict-types + + +///////////////////////////////////////////////////////////////////////////////// +// Экспортные процедуры и функции, предназначенные для использования другими +// объектами конфигурации или другими программами +///////////////////////////////////////////////////////////////////////////////// +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТест("Фикция") + .СПараметрами(Новый ОписаниеТипов("Число")) + .СПараметрами(Новый ОписаниеТипов("Строка")) + .СПараметрами(Новый ОписаниеТипов("Дата")) + .СПараметрами(Новый ОписаниеТипов("Булево")) + .СПараметрами(Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(3, 2, ДопустимыйЗнак.Неотрицательный))) + .СПараметрами(Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(3))) + .СПараметрами(Новый ОписаниеТипов("Дата", , , , , Новый КвалификаторыДаты(ЧастиДаты.Время))) + .СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки")) + .СПараметрами(Новый ОписаниеТипов("ДокументСсылка.Заказ")) + .СПараметрами(Новый ОписаниеТипов("ПеречислениеСсылка.СостоянияЗаказов")) + .СПараметрами(Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ВидыХарактеристик")) + .СПараметрами(Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ВидыХарактеристик, СправочникСсылка.Банки, ПеречислениеСсылка.СостоянияЗаказов")) + .СПараметрами(Новый ОписаниеТипов("ВидДвиженияНакопления")) + ; + +КонецПроцедуры + +Процедура Фикция(ОписаниеТипа) Экспорт + + Результат = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеТипа); + + ЮТест.ОжидаетЧто(Результат) + .Заполнено() + .ИмеетТип(ОписаниеТипа); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/ОМ_ЮТТестовыеДанныеСлужебный.mdo b/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/ОМ_ЮТТестовыеДанныеСлужебный.mdo new file mode 100644 index 00000000..a28f4319 --- /dev/null +++ b/ТестыПример/src/CommonModules/ОМ_ЮТТестовыеДанныеСлужебный/ОМ_ЮТТестовыеДанныеСлужебный.mdo @@ -0,0 +1,11 @@ + + + ОМ_ЮТТестовыеДанныеСлужебный + + ru + О м тестовые данные служебный + + true + true + true + diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТТесты/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТТесты/Module.bsl index 99b4f9f9..ad2e2291 100644 --- a/ТестыПример/src/CommonModules/ОМ_ЮТТесты/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_ЮТТесты/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТФильтрация/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТФильтрация/Module.bsl index d824b495..7e1e352d 100644 --- a/ТестыПример/src/CommonModules/ОМ_ЮТФильтрация/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_ЮТФильтрация/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl index 57d349eb..177b9de9 100644 --- a/ТестыПример/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. @@ -93,7 +93,7 @@ Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests") - .ИмеетДлину(9); + .ИмеетДлину(11); КонецПроцедуры diff --git a/ТестыПример/src/CommonModules/ОМ_ЮТест/Module.bsl b/ТестыПример/src/CommonModules/ОМ_ЮТест/Module.bsl index 4c7074dd..f0a8cd92 100644 --- a/ТестыПример/src/CommonModules/ОМ_ЮТест/Module.bsl +++ b/ТестыПример/src/CommonModules/ОМ_ЮТест/Module.bsl @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2022 BIA-Technologies Limited Liability Company +// Copyright 2021-2023 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. diff --git a/ТестыПример/src/Configuration/Configuration.mdo b/ТестыПример/src/Configuration/Configuration.mdo index e9fdb782..4289ee7a 100644 --- a/ТестыПример/src/Configuration/Configuration.mdo +++ b/ТестыПример/src/Configuration/Configuration.mdo @@ -23,16 +23,18 @@ ru + CommonModule.Интеграция CommonModule.ОМ_Мокито CommonModule.ОМ_МокитоОбучение CommonModule.ОМ_Общий CommonModule.ОМ_ОшибкаЗагрузкиСценариев CommonModule.ОМ_ЮТест + CommonModule.ОМ_ЮТКонструкторТестовыхДанных + CommonModule.ОМ_ЮТТестовыеДанныеСлужебный CommonModule.ОМ_ЮТТесты CommonModule.ОМ_ЮТУтверждения CommonModule.ОМ_ЮТФильтрация CommonModule.ОМ_ЮТЧитатель - CommonModule.Интеграция Catalog.Встречи Catalog.Товары Document.ПриходТовара