mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
Merge pull request #94 from bia-technologies/feature/request-extend
Расширение API для работы с запросами
This commit is contained in:
commit
8eb095a10c
@ -54,6 +54,41 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет первую запись таблицы соответствующую условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя таблицы базы
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Структура, Неопределено - Содержит все данные записи, включая табличный части
|
||||
Функция Запись(ИмяТаблицы, Предикат) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет записи таблицы соответствующую условиям
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяТаблицы - Строка - Имя таблицы базы
|
||||
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
|
||||
// - см. ЮТФабрика.ВыражениеПредиката
|
||||
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
|
||||
// - Неопределено - Проверит, что таблица не пустая
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура - Найденные записи, включая табличный части
|
||||
Функция Записи(ИмяТаблицы, Предикат) Экспорт
|
||||
|
||||
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
|
||||
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
|
||||
//
|
||||
// Параметры:
|
||||
@ -107,9 +142,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание запроса:
|
||||
// * ИмяТаблицы - Строка -
|
||||
// * ВыбираемыеПоля - Структура - Выражения выбираемых полей:
|
||||
// * Ключ - Строка - Имя поля
|
||||
// * Значение - Строка - выражение поля
|
||||
// * ВыбираемыеПоля - Массив из Строка
|
||||
// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
|
||||
// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
|
||||
// * ЗначенияПараметров - Структура - Набор параметров запроса
|
||||
@ -117,7 +150,7 @@
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("ИмяТаблицы", "");
|
||||
Описание.Вставить("ВыбираемыеПоля", Новый Структура);
|
||||
Описание.Вставить("ВыбираемыеПоля", Новый Массив);
|
||||
Описание.Вставить("КоличествоЗаписей", Неопределено);
|
||||
Описание.Вставить("Условия", Новый Массив());
|
||||
Описание.Вставить("ЗначенияПараметров", Новый Структура());
|
||||
|
@ -23,26 +23,7 @@
|
||||
Запрос = Запрос(ОписаниеЗапроса);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
Если НЕ ДляКлиента Тогда
|
||||
Возврат РезультатЗапроса.Выгрузить();
|
||||
ИначеЕсли РезультатЗапроса.Пустой() Тогда
|
||||
Возврат Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Ключи = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(РезультатЗапроса.Колонки, "Имя"), ",");
|
||||
Результат = Новый Массив();
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
Запись = Новый Структура(Ключи);
|
||||
ЗаполнитьЗначенияСвойств(Запись, Выборка);
|
||||
Результат.Добавить(Запись);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
Возврат ВыгрузитьРезультатЗапроса(РезультатЗапроса, ДляКлиента);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -88,6 +69,35 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет записи результат запроса
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
|
||||
// ОднаЗапись - Булево - Вернуть первую запись
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Структура, Структура, Неопределено - Записи
|
||||
Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт
|
||||
|
||||
Если ОднаЗапись Тогда
|
||||
ОписаниеЗапроса.КоличествоЗаписей = 1;
|
||||
КонецЕсли;
|
||||
|
||||
Запрос = Запрос(ОписаниеЗапроса);
|
||||
РезультатЗапроса = Запрос.Выполнить();
|
||||
|
||||
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
|
||||
|
||||
Если НЕ ОднаЗапись Тогда
|
||||
Возврат Записи;
|
||||
ИначеЕсли Записи.Количество() Тогда
|
||||
Возврат Записи[0];
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -108,14 +118,10 @@
|
||||
Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей));
|
||||
КонецЕсли;
|
||||
|
||||
ВыбираемыеПоля = Новый Массив();
|
||||
Для Каждого Выражение Из ОписаниеЗапроса.ВыбираемыеПоля Цикл
|
||||
Поле = СтрШаблон(" %1 КАК %2", ?(Выражение.Значение = Неопределено, Выражение.Ключ, Выражение.Значение), Выражение.Ключ);
|
||||
ВыбираемыеПоля.Добавить(Поле);
|
||||
КонецЦикла;
|
||||
|
||||
Если НЕ ВыбираемыеПоля.Количество() Тогда
|
||||
ВыбираемыеПоля.Добавить("1 КАК Поле");
|
||||
Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда
|
||||
ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля;
|
||||
Иначе
|
||||
ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле");
|
||||
КонецЕсли;
|
||||
|
||||
Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
|
||||
@ -159,4 +165,51 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыгрузитьРезультатЗапроса(РезультатЗапроса, ВМассив)
|
||||
|
||||
Если НЕ ВМассив Тогда
|
||||
Возврат РезультатЗапроса.Выгрузить();
|
||||
Иначе
|
||||
Результат = Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Если РезультатЗапроса.Пустой() Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Реквизиты = Новый Массив();
|
||||
ТабличныеЧасти = Новый Массив();
|
||||
|
||||
ТипРезультатЗапроса = Тип("РезультатЗапроса");
|
||||
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
|
||||
|
||||
Реквизиты.Добавить(Колонка.Имя);
|
||||
|
||||
Если Колонка.ТипЗначения.СодержитТип(ТипРезультатЗапроса) Тогда
|
||||
ТабличныеЧасти.Добавить(Колонка.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ПараметрыКонструктора = СтрСоединить(Реквизиты, ",");
|
||||
|
||||
Выборка = РезультатЗапроса.Выбрать();
|
||||
|
||||
Пока Выборка.Следующий() Цикл
|
||||
|
||||
Запись = Новый Структура(ПараметрыКонструктора);
|
||||
ЗаполнитьЗначенияСвойств(Запись, Выборка);
|
||||
|
||||
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
|
||||
Запись[ТабличнаяЧасть] = ВыгрузитьРезультатЗапроса(Выборка[ТабличнаяЧасть], ВМассив);
|
||||
КонецЦикла;
|
||||
|
||||
Результат.Добавить(Запись);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -22,7 +22,11 @@
|
||||
|
||||
Описание = ЮТЗапросы.ОписаниеЗапроса();
|
||||
Описание.ИмяТаблицы = ИмяТаблицы;
|
||||
Описание.ВыбираемыеПоля.Вставить("Проверка", "1");
|
||||
Если ВыбираемыеПоля = Неопределено Тогда
|
||||
Описание.ВыбираемыеПоля.Добавить("1 КАК Проверка");
|
||||
Иначе
|
||||
ЗаполнитьВыбираемыеПоля(Описание, ВыбираемыеПоля);
|
||||
КонецЕсли;
|
||||
|
||||
СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров);
|
||||
|
||||
@ -93,4 +97,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля)
|
||||
|
||||
ТипПараметра = ТипЗнч(ВыбираемыеПоля);
|
||||
|
||||
Если ТипПараметра = Тип("Строка") Тогда
|
||||
ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина);
|
||||
ТипПараметра = Тип("Массив");
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипПараметра = Тип("Массив") Тогда
|
||||
|
||||
ОписаниеЗапроса.ВыбираемыеПоля = ВыбираемыеПоля;
|
||||
|
||||
ИначеЕсли ТипПараметра = Тип("Структура") Тогда
|
||||
|
||||
Для Каждого Поле Из ВыбираемыеПоля Цикл
|
||||
Выражение = СтрШаблон("%1 КАК %2", Поле.Значение, Поле.Ключ);
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Добавить(Выражение);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -108,6 +108,120 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным наименованием
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеНаименование - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным кодом
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйКод - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет наличие в таблице записей с указанным номером
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйНомер - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция СодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
|
||||
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным наименованием
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемоеНаименование - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным кодом
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйКод - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет отсутствие в таблице записей с указанным номером
|
||||
//
|
||||
// Параметры:
|
||||
// ОжидаемыйНомер - Строка
|
||||
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
|
||||
// + `Истина` - Подбираются только непомеченные на удаление записи.
|
||||
// + `Ложь` - пометка на удаление игнорируется
|
||||
//
|
||||
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеСодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
|
||||
|
||||
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
|
||||
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -170,4 +284,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПредикатПоискаПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, ПроверятьПометкуУдаления)
|
||||
|
||||
Условия = ЮТПредикаты.Инициализировать()
|
||||
.Реквизит(ИмяРеквизита).Равно(ЗначениеРеквизита);
|
||||
|
||||
Если ПроверятьПометкуУдаления Тогда
|
||||
Условия.Реквизит("ПометкаУдаления").Равно(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Условия;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -26,6 +26,8 @@
|
||||
.ДобавитьТест("ТаблицаСодержитЗаписи")
|
||||
.ДобавитьТест("РезультатЗапроса")
|
||||
.ДобавитьТест("РезультатПустой")
|
||||
.ДобавитьТест("Запись")
|
||||
.ДобавитьТест("Записи")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -123,8 +125,8 @@
|
||||
ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка");
|
||||
ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления");
|
||||
ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка);
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Наименование");
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Число", "1+1");
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Наименование");
|
||||
ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса))
|
||||
.ИмеетДлину(1)
|
||||
@ -153,4 +155,110 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Запись() Экспорт
|
||||
|
||||
// Справочник
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Фикция("Наименование")
|
||||
.Фикция("Поставщик");
|
||||
Ссылка = Конструктор.Записать();
|
||||
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Ссылка").Равно(Ссылка));
|
||||
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик));
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеЗаписи)
|
||||
.ИмеетТип("Структура")
|
||||
.Заполнено()
|
||||
.Свойство("Ссылка").Равно(Ссылка)
|
||||
.Свойство("Наименование").Равно(ДанныеОбъекта.Наименование)
|
||||
.Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик);
|
||||
|
||||
// Справочник поиск по реквизиту
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик));
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеЗаписи)
|
||||
.Свойство("Ссылка").Равно(Ссылка);
|
||||
|
||||
// Документ, тест на табличную часть
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара")
|
||||
.Фикция("Склад")
|
||||
.Фикция("Организация")
|
||||
.Фикция("Поставщик")
|
||||
.ТабличнаяЧасть("Товары")
|
||||
.ДобавитьСтроку()
|
||||
.Фикция("Товар")
|
||||
.Фикция("Цена");
|
||||
|
||||
Ссылка = Конструктор.Записать();
|
||||
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара", ЮТест.Предикат()
|
||||
.Реквизит("Ссылка").Равно(Ссылка));
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеЗаписи)
|
||||
.Свойство("Ссылка").Равно(Ссылка)
|
||||
.Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик)
|
||||
.Свойство("Товары")
|
||||
.ИмеетТип("Массив")
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("Товары[0].НомерСтроки").Равно(1)
|
||||
.Свойство("Товары[0].Товар").Равно(ДанныеОбъекта.Товары[0].Товар);
|
||||
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Товар").Равно(ДанныеОбъекта.Товары[0].Товар));
|
||||
ЮТест.ОжидаетЧто(ДанныеЗаписи)
|
||||
.Свойство("Ссылка").Равно(Ссылка)
|
||||
.Свойство("Товар").Равно(ДанныеОбъекта.Товары[0].Товар);
|
||||
|
||||
// Регистры
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
|
||||
.Фикция("Период")
|
||||
.Фикция("Валюта")
|
||||
.Фикция("Курс");
|
||||
Конструктор.Записать();
|
||||
ДанныеОбъекта = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ДанныеЗаписи = ЮТЗапросы.Запись("РегистрСведений.КурсыВалют", ЮТест.Предикат()
|
||||
.Реквизит("Валюта").Равно(ДанныеОбъекта.Валюта));
|
||||
|
||||
ЮТест.ОжидаетЧто(ДанныеЗаписи)
|
||||
.Свойство("Валюта").Равно(ДанныеОбъекта.Валюта)
|
||||
.Свойство("Курс").Равно(ДанныеОбъекта.Курс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Записи() Экспорт
|
||||
|
||||
ТоварыПоставщика = Новый Соответствие();
|
||||
Поставщик = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
|
||||
|
||||
Для Инд = 1 По 5 Цикл
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Фикция("Наименование")
|
||||
.Установить("Поставщик", Поставщик);
|
||||
ТоварыПоставщика.Вставить(Конструктор.Записать(), Конструктор.ДанныеОбъекта());
|
||||
КонецЦикла;
|
||||
|
||||
Записи = ЮТЗапросы.Записи("Справочник.Товары", ЮТест.Предикат()
|
||||
.Реквизит("Поставщик").Равно(Поставщик));
|
||||
|
||||
ЮТест.ОжидаетЧто(Записи)
|
||||
.ИмеетТип("Массив")
|
||||
.ИмеетДлину(5);
|
||||
|
||||
Для Каждого Запись Из Записи Цикл
|
||||
ЮТест.ОжидаетЧто(Запись)
|
||||
.ИмеетТип("Структура")
|
||||
.Свойство("Ссылка")
|
||||
.Свойство("Поставщик").Равно(Поставщик)
|
||||
.Свойство("Код");
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -24,6 +24,12 @@
|
||||
.ДобавитьТест("СодержитЗаписи")
|
||||
.ДобавитьТест("НеСодержитЗаписи")
|
||||
.ДобавитьТест("СообщенияОбОшибках")
|
||||
.ДобавитьТест("СодержитЗаписиСНаименованием")
|
||||
.ДобавитьТест("СодержитЗаписиСКодом")
|
||||
.ДобавитьТест("СодержитЗаписиСНомером")
|
||||
.ДобавитьТест("НеСодержитЗаписиСНаименованием")
|
||||
.ДобавитьТест("НеСодержитЗаписиСКодом")
|
||||
.ДобавитьТест("НеСодержитЗаписиСНомером")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -155,20 +161,156 @@
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Индекс, Ошибка, Вариант.ОжидаемоеСообщение);
|
||||
ПроверитьОшибкуУтверждения("Вариант " + Индекс, Ошибка, Вариант.ОжидаемоеСообщение);
|
||||
Индекс = Индекс + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СодержитЗаписиСНаименованием() Экспорт
|
||||
|
||||
ИмяТаблицы = "Справочник.Товары";
|
||||
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Фикция("Наименование");
|
||||
Данные = Конструктор.ДанныеОбъекта();
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование);
|
||||
|
||||
Объект = Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование);
|
||||
|
||||
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование, Ложь);
|
||||
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "Ожидали, что проверяемая таблица `Справочник.Товары` содержит записи с `Наименование` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СодержитЗаписиСКодом() Экспорт
|
||||
|
||||
ИмяТаблицы = "Справочник.Товары";
|
||||
Код = "t00000001";
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Установить("Код", Код);
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код);
|
||||
|
||||
Объект = Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код);
|
||||
|
||||
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код, Ложь);
|
||||
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` содержит записи с `Код` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СодержитЗаписиСНомером() Экспорт
|
||||
|
||||
ИмяТаблицы = "Документ.Оплата";
|
||||
Номер = "t00000001";
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата")
|
||||
.Установить("Номер", Номер);
|
||||
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер);
|
||||
|
||||
Объект = Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер);
|
||||
|
||||
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер, Ложь);
|
||||
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` содержит записи с `Номер` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура НеСодержитЗаписиСНаименованием() Экспорт
|
||||
|
||||
ИмяТаблицы = "Справочник.Товары";
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Фикция("Наименование")
|
||||
.Установить("ПометкаУдаления", Истина);
|
||||
Данные = Конструктор.ДанныеОбъекта();
|
||||
|
||||
Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование);
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование, Ложь);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Наименование` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура НеСодержитЗаписиСКодом() Экспорт
|
||||
|
||||
ИмяТаблицы = "Справочник.Товары";
|
||||
Код = "t00000001";
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
|
||||
.Установить("Код", Код)
|
||||
.Установить("ПометкаУдаления", Истина);
|
||||
|
||||
Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код);
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код, Ложь);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Код` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура НеСодержитЗаписиСНомером() Экспорт
|
||||
|
||||
ИмяТаблицы = "Документ.Оплата";
|
||||
Номер = "t00000001";
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата")
|
||||
.Установить("Номер", Номер)
|
||||
.Установить("ПометкаУдаления", Истина);
|
||||
|
||||
Конструктор.Записать();
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер);
|
||||
Попытка
|
||||
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер, Ложь);
|
||||
Исключение
|
||||
Ошибка = ИнформацияОбОшибке();
|
||||
КонецПопытки;
|
||||
|
||||
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` не содержит записи с `Номер` равно");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПроверитьОшибкуУтверждения(Индекс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт
|
||||
Процедура ПроверитьОшибкуУтверждения(Префикс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт
|
||||
|
||||
ЮТест.ОжидаетЧто(ИнформацияОбОшибке, "Вариант " + Индекс)
|
||||
ЮТест.ОжидаетЧто(ИнформацияОбОшибке, Префикс)
|
||||
.ЭтоНеНеопределено()
|
||||
.Свойство("Описание")
|
||||
.НачинаетсяС("[Failed]")
|
||||
|
@ -63,4 +63,12 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьРеквизит(Ссылка, ИмяРеквизита, ЗначениеРеквизита) Экспорт
|
||||
|
||||
Объект = Ссылка.ПолучитьОбъект();
|
||||
Объект[ИмяРеквизита] = ЗначениеРеквизита;
|
||||
Объект.Записать();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user