1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-01-20 18:48:36 +02:00

Merge pull request #268 from bia-technologies/feature/246

#246 / Получение случайного предопределенного значения
This commit is contained in:
Koryakin Aleksey 2024-02-29 20:19:19 +03:00 committed by GitHub
commit 38d6ad1072
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 124 additions and 12 deletions

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// //
// Copyright 2021-2023 BIA-Technologies Limited Liability Company // Copyright 2021-2024 BIA-Technologies Limited Liability Company
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -200,6 +200,12 @@
КонецФункции КонецФункции
Функция НовыйОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля) Экспорт
Возврат ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля);
КонецФункции
// Возвращает коллекцию движений документа // Возвращает коллекцию движений документа
// //
// Параметры: // Параметры:

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// //
// Copyright 2021-2023 BIA-Technologies Limited Liability Company // Copyright 2021-2024 BIA-Technologies Limited Liability Company
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -52,6 +52,7 @@
ТипЗначения = ТипЗнч(Значение); ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения = Тип("Структура") И ЭтоОписаниеОбъектаМетаданных(Значение) Тогда Если ТипЗначения = Тип("Структура") И ЭтоОписаниеОбъектаМетаданных(Значение) Тогда
//@skip-check constructor-function-return-section
Возврат Значение; Возврат Значение;
КонецЕсли; КонецЕсли;
@ -70,13 +71,23 @@
Если ТипЗначения = ТипТип Тогда Если ТипЗначения = ТипТип Тогда
ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования ИдентификаторТипа = ЮТТипыДанныхСлужебный.ИдентификаторТипа(Значение); // Для работы кэширования
//@skip-check constructor-function-return-section
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа); Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданныхПоИдентификаторуТипа(ИдентификаторТипа);
Иначе Иначе
//@skip-check constructor-function-return-section
Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение); Возврат ЮТМетаданныеПовтИсп.ОписаниеОбъектаМетаданных(Значение);
КонецЕсли; КонецЕсли;
КонецФункции КонецФункции
Функция НормализованноеИмяТаблицы(Значение) Экспорт
Описание = ОписаниеОбъектаМетаданных(Значение);
Возврат СтрШаблон("%1.%2", Описание.ОписаниеТипа.Имя, Описание.Имя);
КонецФункции
Функция ЭтоОписаниеОбъектаМетаданных(Параметры) Экспорт Функция ЭтоОписаниеОбъектаМетаданных(Параметры) Экспорт
Возврат ЮТОбщий.ЭтаСтруктураИмеетТип(Параметры, "ОписаниеОбъектаМетаданных"); Возврат ЮТОбщий.ЭтаСтруктураИмеетТип(Параметры, "ОписаниеОбъектаМетаданных");

View File

@ -863,7 +863,7 @@
Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт Функция НеподдерживаемыйПараметрМетода(ИмяМетода, ЗначениеПараметра) Экспорт
Возврат СтрШаблон("Неподдерживаемый параметры метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра)); Возврат СтрШаблон("Неподдерживаемый параметр метода `%1` `%2`(%3)", ИмяМетода, ЗначениеПараметра, ТипЗнч(ЗначениеПараметра));
КонецФункции КонецФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// //
// Copyright 2021-2023 BIA-Technologies Limited Liability Company // Copyright 2021-2024 BIA-Technologies Limited Liability Company
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -315,12 +315,24 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Инициализирует конструктор предиката // Инициализирует конструктор предиката
// Параметры:
// Условия - Структура, Соответствие из Произвольный - Набор условий, которыми инициализируется предикат
// Ключ - Строка - Имя реквизита
// Значение - Произвольный - Значение, которому должен быть равен реквизит
//
// //
// Возвращаемое значение: // Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания // ОбщийМодуль - Этот модуль для замыкания
Функция Инициализировать() Экспорт Функция Инициализировать(Условия = Неопределено) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст()); ЮТКонтекст.УстановитьЗначениеКонтекста(КлючКонтекста(), НовыйКонтекст());
Если ЗначениеЗаполнено(Условия) Тогда
Для Каждого Элемент Из Условия Цикл
Реквизит(Элемент.Ключ).Равно(Элемент.Значение);
КонецЦикла;
КонецЕсли;
Возврат ЮТПредикаты; Возврат ЮТПредикаты;
КонецФункции КонецФункции

View File

@ -309,6 +309,21 @@
КонецФункции КонецФункции
// Возвращает случайное предопреленное значения объекта конфигурации.
//
// Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: "Справочники.ВидыЦен", "Справочник.ВидыЦен"
// - Произвольный - Менеджер объекта метаданных. Примеры: Справочники.ВидыЦен
// Отбор - Структура, Соответствие из Произвольный - Отбора поиска предопределенных значений (сравнение на равенство)
//
// Возвращаемое значение:
// ПеречислениеСсылка
Функция СлучайноеПредопределенноеЗначение(Менеджер, Отбор = Неопределено) Экспорт
Возврат ЮТТестовыеДанныеВызовСервера.СлучайноеПредопределенноеЗначение(Менеджер, Отбор);
КонецФункции
// Возвращает случайный номер телефона. // Возвращает случайный номер телефона.
// //
// Параметры: // Параметры:
@ -526,8 +541,8 @@
// * При использовании на клиенте все значения должны быть сериализуемыми. // * При использовании на клиенте все значения должны быть сериализуемыми.
// //
// Параметры: // Параметры:
// Менеджер - Строка - Имя менеджера. Примеры: Справочники.Товары, Документы.ПриходТоваров // Менеджер - Строка - Имя менеджера. Примеры: "Справочники.Товары", "Документы.ПриходТоваров"
// // - Произвольный - Менеджер объекта метаданных. Примеры: Справочники.Товары, Документы.ПриходТоваров
// Возвращаемое значение: // Возвращаемое значение:
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных // ОбработкаОбъект.ЮТКонструкторТестовыхДанных
Функция КонструкторОбъекта(Менеджер) Экспорт Функция КонструкторОбъекта(Менеджер) Экспорт

View File

@ -201,6 +201,29 @@
КонецФункции КонецФункции
Функция СлучайноеПредопределенноеЗначение(Менеджер, Отбор) Экспорт
ИмяТаблицы = ЮТМетаданные.НормализованноеИмяТаблицы(Менеджер);
Условия = ЮТест.Предикат(Отбор)
.Реквизит("Предопределенный").Равно(Истина);
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Условия, "Ссылка");
Данные = ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса);
Если Данные.Количество() = 1 Тогда
Значение = Данные[0].Ссылка;
ИначеЕсли Данные.Количество() > 1 Тогда
Индекс = ЮТест.Данные().СлучайноеЧисло(0, Данные.Количество() - 1);
Значение = Данные[Индекс].Ссылка;
Иначе
Значение = Неопределено;
КонецЕсли;
Возврат Значение;
КонецФункции
Процедура УстановитьЗначенияРеквизитов(Знач Ссылка, Знач ЗначенияРеквизитов, Знач ПараметрыЗаписи = Неопределено) Экспорт Процедура УстановитьЗначенияРеквизитов(Знач Ссылка, Знач ЗначенияРеквизитов, Знач ПараметрыЗаписи = Неопределено) Экспорт
Объект = Ссылка.ПолучитьОбъект(); Объект = Ссылка.ПолучитьОбъект();

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// //
// Copyright 2021-2023 BIA-Technologies Limited Liability Company // Copyright 2021-2024 BIA-Technologies Limited Liability Company
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -61,11 +61,16 @@
// Возвращает API для формирования предикатов/утверждений, которые могут быть использованы для проверки коллекций. // Возвращает API для формирования предикатов/утверждений, которые могут быть использованы для проверки коллекций.
// //
// Параметры:
// Условия - Структура, Соответствие из Произвольный - Набор условий, которыми инициализируется предикат
// Ключ - Строка - Имя реквизита
// Значение - Произвольный - Значение, которому должен быть равен реквизит
//
// Возвращаемое значение: // Возвращаемое значение:
// ОбщийМодуль - см. ЮТПредикаты. // ОбщийМодуль - См. ЮТПредикаты.
Функция Предикат() Экспорт Функция Предикат(Условия = Неопределено) Экспорт
Возврат ЮТПредикаты.Инициализировать(); Возврат ЮТПредикаты.Инициализировать(Условия);
КонецФункции КонецФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// //
// Copyright 2021-2023 BIA-Technologies Limited Liability Company // Copyright 2021-2024 BIA-Technologies Limited Liability Company
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -23,6 +23,7 @@
ЮТТесты ЮТТесты
.ДобавитьТест("ОписаниеОбъектаМетаданных") .ДобавитьТест("ОписаниеОбъектаМетаданных")
.ДобавитьТест("РегистрыДвиженийДокумента") .ДобавитьТест("РегистрыДвиженийДокумента")
.ДобавитьТест("НормализованноеИмяТаблицы")
; ;
КонецПроцедуры КонецПроцедуры
@ -71,6 +72,30 @@
КонецПроцедуры КонецПроцедуры
Процедура НормализованноеИмяТаблицы() Экспорт
Варианты = ЮТОбщий.ЗначениеВМассиве("Справочник.Банки", "Справочники.Банки", ПредопределенноеЗначение("Справочник.Банки.ПустаяСсылка"));
#Если Сервер Тогда
Варианты.Добавить(Справочники.Банки);
Варианты.Добавить(Справочники.Банки.СоздатьЭлемент());
#КонецЕсли
Для Каждого Вариант Из Варианты Цикл
Описание = СтрШаблон("%1 (%2)", Вариант, ТипЗнч(Вариант));
ФактическоеЗначение = ЮТМетаданные.НормализованноеИмяТаблицы(Вариант);
ЮТест.ОжидаетЧто(ФактическоеЗначение, Описание).Равно("Справочник.Банки");
КонецЦикла;
ЮТест.ОжидаетЧто(ЮТМетаданные)
.Метод("НормализованноеИмяТаблицы").Параметр("123")
.ВыбрасываетИсключение("Неподдерживаемый параметр метода");
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции

View File

@ -47,6 +47,7 @@
.СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки")) .СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки"))
.СПараметрами(Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный))) .СПараметрами(Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 1, ДопустимыйЗнак.Неотрицательный)))
.СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки, ДокументСсылка.Заказ")) .СПараметрами(Новый ОписаниеТипов("СправочникСсылка.Банки, ДокументСсылка.Заказ"))
.ДобавитьТест("СлучайноеПредопределенноеЗначение")
; ;
КонецПроцедуры КонецПроцедуры
@ -516,4 +517,18 @@
КонецПроцедуры КонецПроцедуры
Процедура СлучайноеПредопределенноеЗначение() Экспорт
ОжидаемоеЗначение = ПредопределенноеЗначение("Справочник.ВидыЦен.Закупочная");
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен");
ЮТест.ОжидаетЧто(Значение).Равно(ОжидаемоеЗначение);
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен", Новый Структура("ПометкаУдаления", Ложь));
ЮТест.ОжидаетЧто(Значение).Равно(ОжидаемоеЗначение);
Значение = ЮТест.Данные().СлучайноеПредопределенноеЗначение("Справочники.ВидыЦен", Новый Структура("ПометкаУдаления", Истина));
ЮТест.ОжидаетЧто(Значение).Равно(Неопределено);
КонецПроцедуры
#КонецОбласти #КонецОбласти