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

Новые методы модуля ЮТЗапросы

This commit is contained in:
Potoyalo 2023-07-23 02:25:27 +07:00
parent 437245ce7c
commit ba4e82b9f4
3 changed files with 143 additions and 4 deletions

View File

@ -46,10 +46,9 @@
// ИмяРеквизита - Строка - Имя получаемого реквизита, можно указать путь к вложенному реквизиту через точку
//
// Возвращаемое значение:
// Структура Из Произвольный - Значения реквизитов ссылки
// Произвольный - Значение реквизита ссылки
Функция ЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт
//@skip-check constructor-function-return-section
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина);
КонецФункции
@ -89,6 +88,45 @@
КонецФункции
// Возвращает значения реквизитов первой записи таблицы, соответствующей условиям
//
// Параметры:
// ИмяТаблицы - Строка
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
// - см. ЮТФабрика.ВыражениеПредиката
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
// ИменаРеквизитов - Строка - Имена получаемых реквизитов
//
// Возвращаемое значение:
// Произвольный - Значение реквизита записи
//
Функция ЗначенияРеквизитовЗаписи(ИмяТаблицы, Предикат, ИменаРеквизитов) Экспорт
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИменаРеквизитов);
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Ложь);
КонецФункции
// Возвращает значение реквизита первой записи таблицы, соответствующей условиям
//
// Параметры:
// ИмяТаблицы - Строка
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
// - см. ЮТФабрика.ВыражениеПредиката
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
// ИмяРеквизита - Строка - Имя получаемого реквизита
//
// Возвращаемое значение:
// Структура Из Произвольный - Значения реквизитов записи
//
Функция ЗначениеРеквизитаЗаписи(ИмяТаблицы, Предикат, ИмяРеквизита) Экспорт
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, ИмяРеквизита);
//@skip-check constructor-function-return-section
Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, Истина);
КонецФункции
// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
//
// Параметры:

View File

@ -51,8 +51,8 @@
// ОдинРеквизит - Булево
//
// Возвращаемое значение:
// Структура Из Произвольный - Значения реквизитов ссылки, про значений получения множества реквизитов
// Произвольный - Значения реквизитов ссылки, если при получении значения одного реквизита
// - Структура Из Произвольный - Значения реквизитов ссылки при получении значений множества реквизитов
// - Произвольный - Значение реквизита ссылки при получении значения одного реквизита
Функция ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, ОдинРеквизит) Экспорт
ИмяТаблицы = Ссылка.Метаданные().ПолноеИмя();
@ -98,6 +98,39 @@
КонецФункции
// Возвращает значения реквизитов записи
//
// Параметры:
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
// ОдинРеквизит - Булево
//
// Возвращаемое значение:
// - Структура Из Произвольный - Значения множества реквизитов записи
// - Произвольный - Значение одного реквизита записи
//
Функция ЗначенияРеквизитовЗаписи(ОписаниеЗапроса, ОдинРеквизит) Экспорт
Запись = Записи(ОписаниеЗапроса, Истина);
Если ТипЗнч(Запись) <> Тип("Структура") Тогда
Если ОдинРеквизит Тогда
Возврат Неопределено;
Иначе
Реквизиты = СтрСоединить(ОписаниеЗапроса.ВыбираемыеПоля, ",");
Возврат Новый Структура(Реквизиты);
КонецЕсли;
КонецЕсли;
Если ОдинРеквизит Тогда
Для каждого КлючЗнач Из Запись Цикл
Возврат КлючЗнач.Значение;
КонецЦикла;
Иначе
Возврат Запись;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -28,6 +28,8 @@
.ДобавитьТест("РезультатПустой")
.ДобавитьТест("Запись")
.ДобавитьТест("Записи")
.ДобавитьТест("ЗначенияРеквизитовЗаписи")
.ДобавитьТест("ЗначениеРеквизитаЗаписи")
;
КонецПроцедуры
@ -261,4 +263,70 @@
КонецПроцедуры
Процедура ЗначенияРеквизитовЗаписи() Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Фикция("Наименование")
.Фикция("Штрихкод")
.Фикция("Поставщик");
Данные = Конструктор.ДанныеОбъекта();
Конструктор.Записать();
Предикат = ЮТест.Предикат().Реквизит("Наименование").Равно(Данные.Наименование);
ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитовЗаписи("Справочник.Товары", Предикат, "Наименование");
ЮТест.ОжидаетЧто(ДанныеСсылки)
.ИмеетТип("Структура")
.Заполнено()
.Свойство("Наименование").Равно(Данные.Наименование);
Предикат = ЮТест.Предикат()
.Реквизит("Штрихкод").Равно(Данные.Штрихкод)
.Реквизит("Поставщик").Равно(Данные.Поставщик);
ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитовЗаписи("Справочник.Товары", Предикат, "Штрихкод, Поставщик");
ЮТест.ОжидаетЧто(ДанныеСсылки)
.ИмеетТип("Структура")
.Заполнено()
.Свойство("Штрихкод").Равно(Данные.Штрихкод)
.Свойство("Поставщик").Равно(Данные.Поставщик);
Предикат = ЮТест.Предикат().Реквизит("Ссылка").Равно(ПредопределенноеЗначение("Справочник.Товары.ПустаяСсылка"));
ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитовЗаписи("Справочник.Товары", Предикат, "Код, Поставщик");
ЮТест.ОжидаетЧто(ДанныеСсылки)
.ИмеетТип("Структура")
.Заполнено()
.Свойство("Код").Равно(Неопределено)
.Свойство("Поставщик").Равно(Неопределено);
КонецПроцедуры
Процедура ЗначениеРеквизитаЗаписи() Экспорт
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Фикция("Наименование")
.Фикция("Поставщик");
Данные = Конструктор.ДанныеОбъекта();
Конструктор.Записать();
Предикат = ЮТест.Предикат().Реквизит("Наименование").Равно(Данные.Наименование);
ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизитаЗаписи("Справочник.Товары", Предикат, "Наименование"))
.ИмеетТип("Строка")
.Заполнено()
.Равно(Данные.Наименование);
Предикат = ЮТест.Предикат().Реквизит("Поставщик").Равно(Данные.Поставщик);
ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизитаЗаписи("Справочник.Товары", Предикат, "Поставщик"))
.Равно(Данные.Поставщик);
Предикат = ЮТест.Предикат()
.Реквизит("Наименование").Равно(Данные.Наименование)
.Реквизит("Поставщик").Равно(Данные.Поставщик);
ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизитаЗаписи("Справочник.Товары", Предикат, "Наименование, Поставщик"))
.Равно(Данные.Наименование);
Предикат = ЮТест.Предикат().Реквизит("Ссылка").Равно(ПредопределенноеЗначение("Справочник.Товары.ПустаяСсылка"));
ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизитаЗаписи("Справочник.Товары", Предикат, "Наименование"))
.Равно(Неопределено);
КонецПроцедуры
#КонецОбласти