1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-08 13:06:32 +02:00

#25 Конструктор тестовых данных

This commit is contained in:
alkoleft 2023-01-30 10:04:29 +03:00
parent d195475435
commit 90199107cb
35 changed files with 1400 additions and 108 deletions

View File

@ -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, Версия, Данные);
КонецФункции
Возврат ТипыМетаданных;
```

View File

@ -443,7 +443,7 @@
Настройки.Вставить("ПараметрыОбучения", Неопределено);
Настройки.Вставить("ПараметрыПроверки", Неопределено);
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки);
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючНастроек(), Настройки, Истина);
КонецПроцедуры

View File

@ -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.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции для служебного использования внутри подсистемы
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
// Инициализирует конструктор тестовых данных
//
// Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция Инициализировать(Менеджер) Экспорт
Контекст = НовыйКонтекстКонструктора(Менеджер);
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), Контекст);
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Устанавливает значение реквизита создаваемого объекта.
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части
//
// Параметры:
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
// Значение - Произвольный - Значение реквизита объекта или табличной части
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция Установить(ИмяРеквизита, Значение) Экспорт
Контекст = Контекст();
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
ТекущаяЗапись = ДанныеСтроки();
Иначе
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Устанавливает фиктивное значение реквизита создаваемого объекта.
// Если метод вызывается после вызова см. ТабличнаяЧасть, то устанавливается значение реквизита строки табличной части.
//
// На основании менеджера и имени реквизита вычисляется тип реквизита. На основании типа генерируется фиктивное значение.
//
// * Для примитивных значение генерируется случайное значение
// * Для ссылочных типов создается новый объект
// * Для перечислений (в том числе системных) выбирается случайно значение перечисления
//
// Параметры:
// ИмяРеквизита - Строка - Имя реквизита объекта или табличной части
// Реквизиты - Структура - Значения реквизитов заполнения создаваемого объекта базы
// - Неопределено
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция Фикция(ИмяРеквизита, Реквизиты = Неопределено) Экспорт
Контекст = Контекст();
Если ЗначениеЗаполнено(Контекст.ТекущаяТабличнаяЧасть) Тогда
ОписаниеРеквизита = Контекст.Метаданные.ТабличныеЧасти[Контекст.ТекущаяТабличнаяЧасть][ИмяРеквизита];
ТекущаяЗапись = ДанныеСтроки();
Иначе
ОписаниеРеквизита = Контекст.Метаданные.Реквизиты[ИмяРеквизита];
ТекущаяЗапись = Контекст.Данные;
КонецЕсли;
Значение = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеРеквизита.Тип);
ТекущаяЗапись.Вставить(ИмяРеквизита, Значение);
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Переключает конструктор на заполнение табличной части объекта
//
// Параметры:
// ИмяТабличнойЧасти - Строка - Имя табличной части
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция ТабличнаяЧасть(ИмяТабличнойЧасти) Экспорт
Контекст = Контекст();
Контекст.ТекущаяТабличнаяЧасть = ИмяТабличнойЧасти;
Контекст.Данные.Вставить(ИмяТабличнойЧасти, Новый Массив());
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Добавляет новую строку табличной части объекта
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция ДобавитьСтроку() Экспорт
Контекст = Контекст();
Запись = Новый Структура();
ДанныеТабличнойЧасти(Контекст).Добавить(Запись);
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Устанавливает дополнительное свойство объекта
//
// Параметры:
// ИмяСвойства - Строка - Имя дополнительного свойства
// Значение - Произвольный - Значение дополнительного свойства
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция УстановитьДополнительноеСвойство(ИмяСвойства, Значение) Экспорт
Контекст = Контекст();
Контекст.ДополнительныеСвойства.Вставить(ИмяСвойства, Значение);
Возврат ЮТКонструкторТестовыхДанных;
КонецФункции
// Возвращает данные текущей строки табличной части объекта
//
// Возвращаемое значение:
// Структура - Данные строки
// Неопределено - Если заполняется объект
Функция ДанныеСтроки() Экспорт
Контекст = Контекст();
Если ПустаяСтрока(Контекст.ТекущаяТабличнаяЧасть) Тогда
Возврат Неопределено;
КонецЕсли;
ДанныеТабличнойЧасти = ДанныеТабличнойЧасти(Контекст);
Если ДанныеТабличнойЧасти.Количество() Тогда
Возврат ДанныеТабличнойЧасти[ДанныеТабличнойЧасти.ВГраница()];
Иначе
ВызватьИсключение "Сначала необходимо добавить строку табличной части";
КонецЕсли;
КонецФункции
// Возвращает данные создаваемого объекта
//
// Возвращаемое значение:
// Структура - Данные объекта
Функция ДанныеОбъекта() Экспорт
Контекст = Контекст();
Возврат Контекст.Данные;
КонецФункции
// Создает новый объект и возвращает его или ссылку.
//
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество объектов.
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
//
// Параметры:
// ВернутьОбъект - Булево - Вернуть объект вместо ссылки
//
// Возвращаемое значение:
// Произвольный - Созданный объект или ссылка на него
Функция Записать(ВернутьОбъект = Ложь) Экспорт
Контекст = Контекст();
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
КонецФункции
// Создает и проводит новый документ и возвращает его или ссылку.
//
// Параметры:
// ВернутьОбъект - Булево - Вернуть объект вместо ссылки
//
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создать множество объектов.
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
//
// Возвращаемое значение:
// Произвольный - Созданный объект или ссылка на него
Функция Провести(ВернутьОбъект = Ложь) Экспорт
Контекст = Контекст();
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение;
Возврат ЮТТестовыеДанныеВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции, составляющие внутреннюю реализацию модуля
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции
// Контекст.
//
// Возвращаемое значение:
// см. НовыйКонтекстКонструктора
Функция Контекст()
Возврат ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста());
КонецФункции
// Новый контекст конструктора.
//
// Параметры:
// Менеджер - Произвольный
//
// Возвращаемое значение:
// Структура - Новый контекст конструктора:
// * Менеджер - Произвольный
// * Данные - Структура
// * Метаданные - см. ЮТМетаданные.ОписаниеОбъектМетаданных
// * ТекущаяТабличнаяЧасть - Строка -
// * ДополнительныеСвойства - Структура
Функция НовыйКонтекстКонструктора(Менеджер)
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
Контекст.Вставить("Менеджер", Менеджер);
Контекст.Вставить("Данные", Новый Структура());
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектМетаданных(Менеджер));
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
Возврат Контекст;
КонецФункции
Функция КлючКонтекста()
Возврат "КонструкторТестовыхДанных";
КонецФункции
Функция ДанныеТабличнойЧасти(Контекст)
Возврат Контекст.Данные[Контекст.ТекущаяТабличнаяЧасть];
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="e388b434-0a40-41e7-943b-3941bd455cf2">
<name>ЮТКонструкторТестовыхДанных</name>
<synonym>
<key>ru</key>
<value>Конструктор тестовых данных</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -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.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Модули подсистемы.
// Возвращает список модулей подсистемы
// Подсистема должна находится в подсистеме "ЮТФункциональность"
// Параметры:
// ИмяПодсистемы - Строка - Имя подсистемы
//
// Возвращаемое значение:
// Массив из Строка - Имена модулей входящих в подсистему
Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт
Возврат ЮТМетаданныеПовтИсп.МодулиПодсистемы(ИмяПодсистемы);
КонецФункции
// Описание менеджера.
//
// Параметры:
// Значение - Произвольный
//
// Возвращаемое значение:
// Структура - Описание менеджера:
// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных
// * Реквизиты - Структура из см. ЮТМетаданныеСервер.ОписаниеРеквизита
// * ТабличныеЧасти - Структура из Структура -
Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения <> Тип("Тип") И ТипЗначения <> Тип("Строка") Тогда
Значение = ТипЗнч(Значение);
ТипЗначения = Тип("Тип");
КонецЕсли;
Если ТипЗначения = Тип("Тип") Тогда
Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Значение);
Иначе
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектМетаданных(Значение);
КонецЕсли;
КонецФункции
Функция ТипыМетаданных() Экспорт
Возврат ЮТМетаданныеСервер.ТипыМетаданных();
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b3d250b3-a812-4309-9ada-5442ae9af8e3">
<name>ЮТМетаданные</name>
<synonym>
<key>ru</key>
<value>Метаданные</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -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.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт
Возврат ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы);
КонецФункции
Функция ОписаниеОбъектМетаданных(Знач Менеджер) Экспорт
Возврат ЮТМетаданныеСервер.ОписаниеОбъектМетаданных(Менеджер);
КонецФункции
Функция ТипыМетаданных() Экспорт
Возврат ЮТМетаданныеСервер.ТипыМетаданных();
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8158c080-39e9-4597-a230-b009ae6abbb4">
<name>ЮТМетаданныеПовтИсп</name>
<synonym>
<key>ru</key>
<value>Метаданные</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
<returnValuesReuse>DuringSession</returnValuesReuse>
</mdclass:CommonModule>

View File

@ -30,18 +30,6 @@
#Область СлужебныйПрограммныйИнтерфейс
// РасширенияКонфигурации
// Возвращает список имен установленных расширений
// Возвращаемое значение:
// Массив - Расширения конфигурации
Функция РасширенияКонфигурации() Экспорт
Расширения = РасширенияКонфигурации.Получить();
Возврат ЮТОбщий.ВыгрузитьЗначения(Расширения, "Имя");
КонецФункции
// МодулиРасширений
// Выполняет чтение метаданных общих модулей, которые предположительно могут являться тестами
//
@ -134,6 +122,137 @@
КонецФункции
Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
ТипЗначение = ТипЗнч(Значение);
Если ТипЗначение = Тип("Тип") Тогда
МетаданныеОбъекта = Метаданные.НайтиПоТипу(Значение);
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
ИначеЕсли ТипЗначение = Тип("ОбъектМетаданных") Тогда
МетаданныеОбъекта = Значение;
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
ИначеЕсли ТипЗначение = Тип("Строка") Тогда
ЧастиСтроки = СтрРазделить(Значение, ".");
Если ЧастиСтроки.Количество() = 2 Тогда
ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
ОписаниеТипа = ТипыМетаданных[ЧастиСтроки[0]];
Если ОписаниеТипа <> Неопределено Тогда
МетаданныеОбъекта = Метаданные[ОписаниеТипа.ИмяКоллекции][ЧастиСтроки[1]];
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если МетаданныеОбъекта = Неопределено ИЛИ ОписаниеТипа = Неопределено Тогда
Сообщение = СтрШаблон("Не удалось получить описание метаданных для `%1` (%2)", Значение, ТипЗначение);
ВызватьИсключение Сообщение;
КонецЕсли;
ОписаниеОбъект = Новый Структура;
ОписаниеОбъект.Вставить("ОписаниеТипа", ОписаниеТипа);
ОписаниеОбъект.Вставить("Реквизиты", Новый Структура());
ОписаниеОбъект.Вставить("ТабличныеЧасти", Новый Структура());
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.СтандартныеРеквизиты, ОписаниеОбъект.Реквизиты);
Если ОписаниеТипа.Измерения Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Измерения, ОписаниеОбъект.Реквизиты);
КонецЕсли;
Если ОписаниеТипа.Реквизиты Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Реквизиты, ОписаниеОбъект.Реквизиты);
КонецЕсли;
Если ОписаниеТипа.Ресурсы Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.Ресурсы, ОписаниеОбъект.Реквизиты);
КонецЕсли;
Если ОписаниеТипа.РеквизитыАдресации Тогда
ДобавитьОписанияРеквизитов(МетаданныеОбъекта.РеквизитыАдресации, ОписаниеОбъект.Реквизиты);
КонецЕсли;
Если ОписаниеТипа.ТабличныеЧасти Тогда
Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл
РеквизитыТабличнойЧасти = Новый Структура();
ДобавитьОписанияРеквизитов(ТабличнаяЧасть.Реквизиты, РеквизитыТабличнойЧасти);
ОписаниеОбъект.ТабличныеЧасти.Вставить(ТабличнаяЧасть.Имя, РеквизитыТабличнойЧасти);
КонецЦикла;
КонецЕсли;
Возврат ОписаниеОбъект;
КонецФункции
// Описание типа метаданных.
//
// Параметры:
// МетаданныеОбъекта - Тип, ОбъектМетаданных - Тип
//
// Возвращаемое значение:
// Структура - Описание типа метаданных:
// * Имя - Строка
// * ИмяКоллекции - Строка
// * Конструктор - Строка
// * Группы - Булево
// * Ссылочный - Булево
// * Реквизиты - Булево
// * Измерения - Булево
// * Ресурсы - Булево
// * РеквизитыАдресации - Булево
// * ТабличныеЧасти - Булево
Функция ОписаниеТипаМетаданных(Знач МетаданныеОбъекта) Экспорт
Если ТипЗнч(МетаданныеОбъекта) = Тип("Тип") Тогда
МетаданныеОбъекта = Метаданные.НайтиПоТипу(МетаданныеОбъекта);
КонецЕсли;
ПолноеИмя = МетаданныеОбъекта.ПолноеИмя();
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
Типы = ЮТМетаданные.ТипыМетаданных();
Возврат Типы[ЧастиИмени[0]];
КонецФункции
Функция ТипыМетаданных() Экспорт
Макет = ПолучитьОбщийМакет("ЮТОписаниеМетаданных").ПолучитьТекст();
КоллекцияОписаний = ЮТТестовыеДанные.ТаблицаMarkDown(Макет);
ТипыМетаданных = Новый Структура();
Для Каждого Запись Из КоллекцияОписаний Цикл
Описание = Новый Структура();
Описание.Вставить("Имя", Запись.Имя);
Описание.Вставить("ИмяКоллекции", Запись.ИмяКоллекции);
Описание.Вставить("Конструктор", Запись.Конструктор);
Описание.Вставить("Группы", Запись.Группы = "+");
Описание.Вставить("Ссылочный", Запись.Ссылочный = "+");
Описание.Вставить("Реквизиты", Запись.Реквизиты = "+");
Описание.Вставить("Измерения", Запись.Измерения = "+");
Описание.Вставить("Ресурсы", Запись.Ресурсы = "+");
Описание.Вставить("РеквизитыАдресации", Запись.РеквизитыАдресации = "+");
Описание.Вставить("ТабличныеЧасти", Запись.ТабличныеЧасти = "+");
ТипыМетаданных.Вставить(Описание.Имя, Описание);
ТипыМетаданных.Вставить(Описание.ИмяКоллекции, Описание);
КонецЦикла;
Возврат ТипыМетаданных;
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
@ -142,4 +261,25 @@
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьОписанияРеквизитов(КоллекцияРеквизитов, КоллекцияОписаний)
Для Каждого Реквизит Из КоллекцияРеквизитов Цикл
КоллекцияОписаний.Вставить(Реквизит.Имя, ОписаниеРеквизита(Реквизит));
КонецЦикла;
КонецПроцедуры
Функция ОписаниеРеквизита(Реквизит) Экспорт
Описание = Новый Структура();
Описание.Вставить("Имя", Реквизит.Имя);
Описание.Вставить("Тип", Реквизит.Тип);
Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку);
Возврат Описание;
КонецФункции
#КонецОбласти

View File

@ -91,7 +91,7 @@
КонецФункции
// Сформировать строку символов.
// Формирует строку из заданого количества повторяемых символов
// Формирует строку из заданного количества повторяемых символов
// Параметры:
// Символ - Строка - Повторяемый символ
// Количество - Число - Количество повторений
@ -803,6 +803,44 @@
КонецФункции
Функция ВычислитьБезопасно(Выражение) Экспорт
#Если НЕ ВебКлиент И НЕ ТонкийКлиент Тогда
УстановитьБезопасныйРежим(Истина);
Попытка
Значение = Вычислить(Выражение);
Исключение
УстановитьБезопасныйРежим(Ложь);
ВызватьИсключение;
КонецПопытки;
УстановитьБезопасныйРежим(Ложь);
#Иначе
Значение = Вычислить(Выражение);
#КонецЕсли
Возврат Значение;
КонецФункции
// Параметры записи объекта
//
// Возвращаемое значение:
// Структура - Параметры записи:
// * ОбменДаннымиЗагрузка - Булево
// * ДополнительныеСвойства - Структура
// * РежимЗаписи - РежимЗаписиДокумента
Функция ПараметрыЗаписи() Экспорт
ПараметрыЗаписи = Новый Структура();
ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь);
ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Запись);
Возврат ПараметрыЗаписи;
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
@ -811,9 +849,13 @@
#Область СлужебныйПрограммныйИнтерфейс
// Описание типов любая ссылка.
//
// Возвращаемое значение:
// ОписаниеТипов - Описание типов любая ссылка
Функция ОписаниеТиповЛюбаяСсылка() Экспорт
Возврат ЮТОбщийВызовСервера.ОписаниеТиповЛюбаяСсылка();
Возврат ЮТПовторногоИспользования.ОписаниеТиповЛюбаяСсылка();
КонецФункции
@ -853,8 +895,13 @@
Функция Модуль(ИмяМодуля) Экспорт
//@skip-check server-execution-safe-mode
Возврат Вычислить(ИмяМодуля);
Возврат ВычислитьБезопасно(ИмяМодуля);
КонецФункции
Функция Менеджер(Знач Менеджер) Экспорт
Возврат ЮТОбщийВызовСервера.Менеджер(Менеджер);
КонецФункции

View File

@ -48,6 +48,16 @@
КонецФункции
Функция Менеджер(Знач Менеджер) Экспорт
Если ТипЗнч(Менеджер) = Тип("Строка") Тогда
Менеджер = ЮТОбщий.ВычислитьБезопасно(Менеджер);
КонецЕсли;
Возврат Менеджер;
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////

View File

@ -47,6 +47,12 @@
КонецФункции
Функция ОписаниеТиповЛюбаяСсылка() Экспорт
Возврат ЮТОбщийВызовСервера.ОписаниеТиповЛюбаяСсылка();
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////

View File

@ -37,7 +37,7 @@
Функция ОбработчикиСобытий() Экспорт
Возврат ЮТМетаданныеСервер.МодулиПодсистемы("ЮТОбработчикиСобытий");
Возврат ЮТМетаданные.МодулиПодсистемы("ЮТОбработчикиСобытий");
КонецФункции
@ -50,7 +50,7 @@
Функция МодулиПодсистемы(ИмяПодсистемы)
ИменаМодулей = ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы);
ИменаМодулей = ЮТМетаданные.МодулиПодсистемы(ИмяПодсистемы);
Модули = Новый Массив();

View File

@ -204,6 +204,12 @@
КонецФункции
Функция СлучайноеБулево() Экспорт
Возврат СлучайноеЧисло() %2 = 0;
КонецФункции
Функция НовыйФайл(Содержимое = Неопределено, ТолькоЧтение = Ложь, Расширение = Неопределено) Экспорт
Результат = НовоеИмяВременногоФайла(Расширение);
@ -234,21 +240,14 @@
// Строка
Функция НовоеИмяВременногоФайла(Расширение = Неопределено) Экспорт
#Если ВебКлиент Тогда
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТестовыеДанные.НовоеИмяВременногоФайла");
#Иначе
Результат = ПолучитьИмяВременногоФайла(Расширение);
ЮТКонтекст.КонтекстТеста().ВременныеФайлы.Добавить(Результат);
Возврат Результат;
#КонецЕсли
КонецФункции
Функция ТаблицаMarkDown(Строки) Экспорт
#Если ВебКлиент Тогда
ВызватьИсключение ЮТОбщий.МетодНеДоступен("ЮТТестовыеДанные.ТаблицаMarkDown");
#Иначе
ЗагрузилиЗаголовок = Ложь;
Результат = Новый Массив();
Ключи = "";
@ -307,7 +306,6 @@
Поток.Закрыть();
Возврат Результат;
#КонецЕсли
КонецФункции
@ -344,6 +342,33 @@
КонецФункции
// Возвращает конструктор создания тестовых данных
//
// Конструктор имеет ряд особенностей:
//
// * Нельзя использовать параллельно несколько конструкторов.
// Например,
// ```bsl
// Пользователь = КонструкторОбъекта(Справочники.Пользователи);
// Документ = КонструкторОбъекта(Документы.Приход);
// ...
// Пользователь.Записать();
// Документ.Провести();
// ```
// * Создание объекта происходит при вызове методов `Записать` и `Провести`, а создание реквизитов происходит во время вызова методов установки.
// * При использовании на клиенте все значения должны быть сериализуемыми.
//
// Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров
//
// Возвращаемое значение:
// ОбщийМодуль - Конструктор
Функция КонструкторОбъекта(Менеджер) Экспорт
Возврат ЮТКонструкторТестовыхДанных.Инициализировать(Менеджер);
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции для служебного использования внутри подсистемы

View File

@ -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", Объект, ТипЗнч(Объект), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение Сообщение;
КонецПопытки;
КонецПроцедуры
Процедура ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных)
ОписаниеТипа = ОписаниеОбъектаМетаданных.ОписаниеТипа;
Если ОписаниеТипа.Имя = "Документ" Тогда
Если НЕ ЗначениеЗаполнено(Объект.Дата) Тогда
Объект.Дата = ТекущаяДатаСеанса();
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда
Объект.УстановитьНовыйНомер();
КонецЕсли;
КонецЕсли;
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Код")
И ОписаниеОбъектаМетаданных.Реквизиты.Код.Обязательный
И Не ЗначениеЗаполнено(Объект.Код) Тогда
Объект.УстановитьНовыйКод();
КонецЕсли;
Если ОписаниеОбъектаМетаданных.Реквизиты.Свойство("Наименование")
И ОписаниеОбъектаМетаданных.Реквизиты.Наименование.Обязательный
И Не ЗначениеЗаполнено(Объект.Наименование) Тогда
Объект.Наименование = ЮТТестовыеДанные.СлучайнаяСтрока();
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -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` не поддерживается", ОписаниеТипа);
КонецЕсли;
Возврат ОписаниеТипа.ПривестиЗначение(Значение);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЭтоСистемноеПеречисление(Тип)
Возврат ТипыСистемныхПеречислений().СодержитТип(Тип);
КонецФункции
Функция ТипыСистемныхПеречислений()
Возврат Новый ОписаниеТипов(
"ВидДвиженияБухгалтерии,
|ВидДвиженияНакопления,
|ВидПериодаРегистраРасчета,
|ВидСчета,
|ВидТочкиМаршрутаБизнесПроцесса,
|ИспользованиеГруппИЭлементов,
|ИспользованиеСреза,
|ИспользованиеРежимаПроведения,
|РежимАвтоВремя,
|РежимЗаписиДокумента,
|РежимПроведенияДокумента,
|ПериодичностьАгрегатаРегистраНакопления,
|ИспользованиеАгрегатаРегистраНакопления");
КонецФункции
Функция ИмяСистемногоПеречисления(Тип)
Возврат Строка(Тип);
КонецФункции
Функция СлучайноЗначениеСистемногоПеречисления(Тип)
Менеджер = ЮТОбщий.ВычислитьБезопасно(ИмяСистемногоПеречисления(Тип));
Значения = Новый Массив();
Для Каждого Значение Из Менеджер Цикл
Значения.Добавить(Значение);
КонецЦикла;
Возврат ЮТТестовыеДанные.СлучайноеЗначениеИзСписка(Значения);
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0e0e823b-f621-4279-bca1-eb44b7399244">
<name>ЮТТестовыеДанныеСлужебный</name>
<synonym>
<key>ru</key>
<value>Тестовые данные служебный</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -584,7 +584,7 @@
// Проверяет установленное значение Контекста (или его свойство) на соответствие переданному типу.
//
// Параметры:
// ОжидаемоеЗначение - Строка, Тип - Ожидается, что значение Контекста (или его свойство) имеет данный тип
// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) имеет данный тип
// ОписаниеПроверки - Строка - Описание конкретной проверки
//
// Возвращаемое значение:
@ -601,7 +601,7 @@
// Проверяет установленное значение Контекста (или его свойство) на несоответствие переданному типу.
//
// Параметры:
// ОжидаемоеЗначение - Строка, Тип - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип
// ОжидаемоеЗначение - Строка, Тип, ОписаниеТипов - Ожидается, что значение Контекста (или его свойство) НЕ имеет данный тип
// ОписаниеПроверки - Строка - Описание конкретной проверки
//
// Возвращаемое значение:
@ -1559,7 +1559,8 @@
Если ТипОжидаемогоТипа = Тип("ОписаниеТипов") Тогда
// СодержитТип не подходит, всегда выдает истину если проверяем Тип("Неопределено")
Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено;
Соответствует = ОжидаемыйТип.Типы().Найти(ТипЗначения) <> Неопределено
И ОжидаемыйТип.ПривестиЗначение(Значение) = Значение;
Иначе
Соответствует = ТипЗначения = ОжидаемыйТип;
КонецЕсли;

View File

@ -0,0 +1,16 @@
# Описание свойств метаданных
| Имя | ИмяКоллекции | Конструктор | Группы | Ссылочный | Реквизиты | Измерения | Ресурсы | РеквизитыАдресации | ТабличныеЧасти |
|------------------------|-------------------------|----------------------|--------|-----------|-----------|-----------|---------|--------------------|----------------|
| Справочник | Справочники | СоздатьЭлемент | + | + | + | | | | + |
| Документ | Документы | СоздатьДокумент | | + | + | | | | + |
| ПланВидовХарактеристик | ПланыВидовХарактеристик | СоздатьЭлемент | + | + | + | | | | + |
| ПланСчетов | ПланыСчетов | СоздатьСчет | | + | + | | | | + |
| ПланВидовРасчета | ПланыВидовРасчета | СоздатьВидРасчета | | + | + | | | | + |
| ПланОбмена | ПланыОбмена | СоздатьУзел | | + | + | | | | + |
| РегистрСведений | РегистрыСведений | СоздатьНаборЗаписей | | | + | + | + | | |
| РегистрНакопления | РегистрыНакопления | СоздатьНаборЗаписей | | | + | + | + | | |
| РегистрБухгалтерии | РегистрыБухгалтерии | СоздатьНаборЗаписей | | | + | + | + | | |
| РегистрРасчета | РегистрыРасчета | СоздатьНаборЗаписей | | | + | + | + | | |
| БизнесПроцесс | БизнесПроцессы | СоздатьБизнесПроцесс | | + | + | | | | + |
| Задача | Задачи | СоздатьЗадачу | | + | + | | | + | + |

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ff9a8a07-b110-4d3e-9f32-33bd3ee69988">
<name>ЮТОписаниеМетаданных</name>
<synonym>
<key>ru</key>
<value>Описание метаданных</value>
</synonym>
<templateType>TextDocument</templateType>
</mdclass:CommonTemplate>

View File

@ -1,10 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="8ebe57d7-1182-4eea-bdda-375c1e0262e4">
<name>YAXUNIT</name>
<synonym>
<key>ru</key>
<value>YAXUNIT</value>
</synonym>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:ConfigurationExtension">
<managedApplicationModule>Extended</managedApplicationModule>
@ -37,6 +33,7 @@
<commonPictures>CommonPicture.ЮТУпал</commonPictures>
<commonPictures>CommonPicture.ЮТУспешно</commonPictures>
<commonPictures>CommonPicture.ЮТЭлементыТестов</commonPictures>
<commonTemplates>CommonTemplate.ЮТОписаниеМетаданных</commonTemplates>
<commonModules>CommonModule.Мокито</commonModules>
<commonModules>CommonModule.МокитоОбучение</commonModules>
<commonModules>CommonModule.МокитоПроверки</commonModules>
@ -45,12 +42,15 @@
<commonModules>CommonModule.ЮТИсполнитель</commonModules>
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
<commonModules>CommonModule.ЮТКонструкторВариантов</commonModules>
<commonModules>CommonModule.ЮТКонструкторТестовыхДанных</commonModules>
<commonModules>CommonModule.ЮТКонтекст</commonModules>
<commonModules>CommonModule.ЮТКонтекстКлиент</commonModules>
<commonModules>CommonModule.ЮТКонтекстСервер</commonModules>
<commonModules>CommonModule.ЮТКонтекстТеста</commonModules>
<commonModules>CommonModule.ЮТЛогирование</commonModules>
<commonModules>CommonModule.ЮТЛогированиеВызовСервера</commonModules>
<commonModules>CommonModule.ЮТМетаданные</commonModules>
<commonModules>CommonModule.ЮТМетаданныеПовтИсп</commonModules>
<commonModules>CommonModule.ЮТМетаданныеСервер</commonModules>
<commonModules>CommonModule.ЮТОбщий</commonModules>
<commonModules>CommonModule.ЮТОбщийВызовСервера</commonModules>
@ -64,6 +64,7 @@
<commonModules>CommonModule.ЮТСобытия</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанные</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеВызовСервера</commonModules>
<commonModules>CommonModule.ЮТТестовыеДанныеСлужебный</commonModules>
<commonModules>CommonModule.ЮТТесты</commonModules>
<commonModules>CommonModule.ЮТУтверждения</commonModules>
<commonModules>CommonModule.ЮТФабрика</commonModules>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
topObjects=true

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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].Сумма").Заполнено()
.Свойство("Проведен").ЭтоИстина()
;
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c5d2b51c-f761-4761-9d38-fc428aea76ea">
<name>ОМ_ЮТКонструкторТестовыхДанных</name>
<synonym>
<key>ru</key>
<value>О м конструктор тестовых данных</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -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)))
.СПараметрами(Новый ОписаниеТипов("Дата", , , , , Новый КвалификаторыДаты(ЧастиДаты.Время)))
.СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки"))
.СПараметрами(Новый ОписаниеТипов("ДокументСсылка.Заказ"))
.СПараметрами(Новый ОписаниеТипов("ПеречислениеСсылка.СостоянияЗаказов"))
.СПараметрами(Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ВидыХарактеристик"))
.СПараметрами(Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ВидыХарактеристик, СправочникСсылка.Банки, ПеречислениеСсылка.СостоянияЗаказов"))
.СПараметрами(Новый ОписаниеТипов("ВидДвиженияНакопления"))
;
КонецПроцедуры
Процедура Фикция(ОписаниеТипа) Экспорт
Результат = ЮТТестовыеДанныеСлужебный.Фикция(ОписаниеТипа);
ЮТест.ОжидаетЧто(Результат)
.Заполнено()
.ИмеетТип(ОписаниеТипа);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="eaa6ba9e-277f-4177-b91d-45c2af718e02">
<name>ОМ_ЮТТестовыеДанныеСлужебный</name>
<synonym>
<key>ru</key>
<value>О м тестовые данные служебный</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -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.

View File

@ -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.

View File

@ -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);
КонецПроцедуры

View File

@ -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.

View File

@ -23,16 +23,18 @@
</extension>
<languageCode>ru</languageCode>
</languages>
<commonModules>CommonModule.Интеграция</commonModules>
<commonModules>CommonModule.ОМ_Мокито</commonModules>
<commonModules>CommonModule.ОМ_МокитоОбучение</commonModules>
<commonModules>CommonModule.ОМ_Общий</commonModules>
<commonModules>CommonModule.ОМ_ОшибкаЗагрузкиСценариев</commonModules>
<commonModules>CommonModule.ОМ_ЮТест</commonModules>
<commonModules>CommonModule.ОМ_ЮТКонструкторТестовыхДанных</commonModules>
<commonModules>CommonModule.ОМ_ЮТТестовыеДанныеСлужебный</commonModules>
<commonModules>CommonModule.ОМ_ЮТТесты</commonModules>
<commonModules>CommonModule.ОМ_ЮТУтверждения</commonModules>
<commonModules>CommonModule.ОМ_ЮТФильтрация</commonModules>
<commonModules>CommonModule.ОМ_ЮТЧитатель</commonModules>
<commonModules>CommonModule.Интеграция</commonModules>
<catalogs>Catalog.Встречи</catalogs>
<catalogs>Catalog.Товары</catalogs>
<documents>Document.ПриходТовара</documents>