1
0
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:
Koryakin Aleksey 2023-05-18 01:26:53 +03:00 committed by GitHub
commit 8eb095a10c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 541 additions and 38 deletions

View File

@ -54,6 +54,41 @@
КонецФункции
// Возвращяет первую запись таблицы соответствующую условиям
//
// Параметры:
// ИмяТаблицы - Строка - Имя таблицы базы
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
// - см. ЮТФабрика.ВыражениеПредиката
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
// - Неопределено - Проверит, что таблица не пустая
// Возвращаемое значение:
// Структура, Неопределено - Содержит все данные записи, включая табличный части
Функция Запись(ИмяТаблицы, Предикат) Экспорт
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
//@skip-check constructor-function-return-section
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина);
КонецФункции
// Возвращяет записи таблицы соответствующую условиям
//
// Параметры:
// ИмяТаблицы - Строка - Имя таблицы базы
// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
// - см. ЮТФабрика.ВыражениеПредиката
// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
// - Неопределено - Проверит, что таблица не пустая
// Возвращаемое значение:
// Массив из Структура - Найденные записи, включая табличный части
Функция Записи(ИмяТаблицы, Предикат) Экспорт
ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь);
КонецФункции
// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
//
// Параметры:
@ -107,9 +142,7 @@
// Возвращаемое значение:
// Структура - Описание запроса:
// * ИмяТаблицы - Строка -
// * ВыбираемыеПоля - Структура - Выражения выбираемых полей:
// * Ключ - Строка - Имя поля
// * Значение - Строка - выражение поля
// * ВыбираемыеПоля - Массив из Строка
// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
// * ЗначенияПараметров - Структура - Набор параметров запроса
@ -117,7 +150,7 @@
Описание = Новый Структура();
Описание.Вставить("ИмяТаблицы", "");
Описание.Вставить("ВыбираемыеПоля", Новый Структура);
Описание.Вставить("ВыбираемыеПоля", Новый Массив);
Описание.Вставить("КоличествоЗаписей", Неопределено);
Описание.Вставить("Условия", Новый Массив());
Описание.Вставить("ЗначенияПараметров", Новый Структура());

View File

@ -23,26 +23,7 @@
Запрос = Запрос(ОписаниеЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ ДляКлиента Тогда
Возврат РезультатЗапроса.Выгрузить();
ИначеЕсли РезультатЗапроса.Пустой() Тогда
Возврат Новый Массив();
КонецЕсли;
Ключи = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(РезультатЗапроса.Колонки, "Имя"), ",");
Результат = Новый Массив();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Запись = Новый Структура(Ключи);
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Результат.Добавить(Запись);
КонецЦикла;
Возврат Результат;
Возврат ВыгрузитьРезультатЗапроса(РезультатЗапроса, ДляКлиента);
КонецФункции
@ -88,6 +69,35 @@
КонецФункции
// Возвращяет записи результат запроса
//
// Параметры:
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
// ОднаЗапись - Булево - Вернуть первую запись
//
// Возвращаемое значение:
// Массив из Структура, Структура, Неопределено - Записи
Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт
Если ОднаЗапись Тогда
ОписаниеЗапроса.КоличествоЗаписей = 1;
КонецЕсли;
Запрос = Запрос(ОписаниеЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
Если НЕ ОднаЗапись Тогда
Возврат Записи;
ИначеЕсли Записи.Количество() Тогда
Возврат Записи[0];
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -108,14 +118,10 @@
Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей));
КонецЕсли;
ВыбираемыеПоля = Новый Массив();
Для Каждого Выражение Из ОписаниеЗапроса.ВыбираемыеПоля Цикл
Поле = СтрШаблон(" %1 КАК %2", ?(Выражение.Значение = Неопределено, Выражение.Ключ, Выражение.Значение), Выражение.Ключ);
ВыбираемыеПоля.Добавить(Поле);
КонецЦикла;
Если НЕ ВыбираемыеПоля.Количество() Тогда
ВыбираемыеПоля.Добавить("1 КАК Поле");
Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда
ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля;
Иначе
ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле");
КонецЕсли;
Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
@ -159,4 +165,51 @@
КонецФункции
Функция ВыгрузитьРезультатЗапроса(РезультатЗапроса, ВМассив)
Если НЕ ВМассив Тогда
Возврат РезультатЗапроса.Выгрузить();
Иначе
Результат = Новый Массив();
КонецЕсли;
Если РезультатЗапроса.Пустой() Тогда
Возврат Результат;
КонецЕсли;
Реквизиты = Новый Массив();
ТабличныеЧасти = Новый Массив();
ТипРезультатЗапроса = Тип("РезультатЗапроса");
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
Реквизиты.Добавить(Колонка.Имя);
Если Колонка.ТипЗначения.СодержитТип(ТипРезультатЗапроса) Тогда
ТабличныеЧасти.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
ПараметрыКонструктора = СтрСоединить(Реквизиты, ",");
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Запись = Новый Структура(ПараметрыКонструктора);
ЗаполнитьЗначенияСвойств(Запись, Выборка);
Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
Запись[ТабличнаяЧасть] = ВыгрузитьРезультатЗапроса(Выборка[ТабличнаяЧасть], ВМассив);
КонецЦикла;
Результат.Добавить(Запись);
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти

View File

@ -22,7 +22,11 @@
Описание = ЮТЗапросы.ОписаниеЗапроса();
Описание.ИмяТаблицы = ИмяТаблицы;
Описание.ВыбираемыеПоля.Вставить("Проверка", "1");
Если ВыбираемыеПоля = Неопределено Тогда
Описание.ВыбираемыеПоля.Добавить("1 КАК Проверка");
Иначе
ЗаполнитьВыбираемыеПоля(Описание, ВыбираемыеПоля);
КонецЕсли;
СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров);
@ -93,4 +97,32 @@
КонецФункции
Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля)
ТипПараметра = ТипЗнч(ВыбираемыеПоля);
Если ТипПараметра = Тип("Строка") Тогда
ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина);
ТипПараметра = Тип("Массив");
КонецЕсли;
Если ТипПараметра = Тип("Массив") Тогда
ОписаниеЗапроса.ВыбираемыеПоля = ВыбираемыеПоля;
ИначеЕсли ТипПараметра = Тип("Структура") Тогда
Для Каждого Поле Из ВыбираемыеПоля Цикл
Выражение = СтрШаблон("%1 КАК %2", Поле.Значение, Поле.Ключ);
ОписаниеЗапроса.ВыбираемыеПоля.Добавить(Выражение);
КонецЦикла;
Иначе
ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля);
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -108,6 +108,120 @@
КонецФункции
// Проверяет наличие в таблице записей с указанным наименованием
//
// Параметры:
// ОжидаемоеНаименование - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция СодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
// Проверяет наличие в таблице записей с указанным кодом
//
// Параметры:
// ОжидаемыйКод - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция СодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
// Проверяет наличие в таблице записей с указанным номером
//
// Параметры:
// ОжидаемыйНомер - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция СодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
Возврат СодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
// Проверяет отсутствие в таблице записей с указанным наименованием
//
// Параметры:
// ОжидаемоеНаименование - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция НеСодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления);
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
// Проверяет отсутствие в таблице записей с указанным кодом
//
// Параметры:
// ОжидаемыйКод - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция НеСодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления);
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
// Проверяет отсутствие в таблице записей с указанным номером
//
// Параметры:
// ОжидаемыйНомер - Строка
// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления.
// + `Истина` - Подбираются только непомеченные на удаление записи.
// + `Ложь` - пометка на удаление игнорируется
//
// ОписаниеУтверждения - Строка - Описание конкретного утверждения
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция НеСодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт
Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления);
Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -170,4 +284,17 @@
КонецПроцедуры
Функция ПредикатПоискаПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, ПроверятьПометкуУдаления)
Условия = ЮТПредикаты.Инициализировать()
.Реквизит(ИмяРеквизита).Равно(ЗначениеРеквизита);
Если ПроверятьПометкуУдаления Тогда
Условия.Реквизит("ПометкаУдаления").Равно(Ложь);
КонецЕсли;
Возврат Условия;
КонецФункции
#КонецОбласти

View File

@ -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);
Для Каждого Запись Из Записи Цикл
ЮТест.ОжидаетЧто(Запись)
.ИмеетТип("Структура")
.Свойство("Ссылка")
.Свойство("Поставщик").Равно(Поставщик)
.Свойство("Код");
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -24,6 +24,12 @@
.ДобавитьТест("СодержитЗаписи")
.ДобавитьТест("НеСодержитЗаписи")
.ДобавитьТест("СообщенияОбОшибках")
.ДобавитьТест("СодержитЗаписиСНаименованием")
.ДобавитьТест("СодержитЗаписиСКодом")
.ДобавитьТест("СодержитЗаписиСНомером")
.ДобавитьТест("НеСодержитЗаписиСНаименованием")
.ДобавитьТест("НеСодержитЗаписиСКодом")
.ДобавитьТест("НеСодержитЗаписиСНомером")
;
КонецПроцедуры
@ -155,20 +161,156 @@
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Индекс, Ошибка, Вариант.ОжидаемоеСообщение);
ПроверитьОшибкуУтверждения("Вариант " + Индекс, Ошибка, Вариант.ОжидаемоеСообщение);
Индекс = Индекс + 1;
КонецЦикла;
КонецПроцедуры
Процедура СодержитЗаписиСНаименованием() Экспорт
ИмяТаблицы = "Справочник.Товары";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Фикция("Наименование");
Данные = Конструктор.ДанныеОбъекта();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование);
Объект = Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование);
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование, Ложь);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "Ожидали, что проверяемая таблица `Справочник.Товары` содержит записи с `Наименование` равно");
КонецПроцедуры
Процедура СодержитЗаписиСКодом() Экспорт
ИмяТаблицы = "Справочник.Товары";
Код = "t00000001";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Установить("Код", Код);
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код);
Объект = Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код);
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код, Ложь);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` содержит записи с `Код` равно");
КонецПроцедуры
Процедура СодержитЗаписиСНомером() Экспорт
ИмяТаблицы = "Документ.Оплата";
Номер = "t00000001";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата")
.Установить("Номер", Номер);
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер);
Объект = Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер);
ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина);
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер, Ложь);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` содержит записи с `Номер` равно");
КонецПроцедуры
Процедура НеСодержитЗаписиСНаименованием() Экспорт
ИмяТаблицы = "Справочник.Товары";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Фикция("Наименование")
.Установить("ПометкаУдаления", Истина);
Данные = Конструктор.ДанныеОбъекта();
Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование, Ложь);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Наименование` равно");
КонецПроцедуры
Процедура НеСодержитЗаписиСКодом() Экспорт
ИмяТаблицы = "Справочник.Товары";
Код = "t00000001";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
.Установить("Код", Код)
.Установить("ПометкаУдаления", Истина);
Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код, Ложь);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Код` равно");
КонецПроцедуры
Процедура НеСодержитЗаписиСНомером() Экспорт
ИмяТаблицы = "Документ.Оплата";
Номер = "t00000001";
Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата")
.Установить("Номер", Номер)
.Установить("ПометкаУдаления", Истина);
Конструктор.Записать();
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер);
Попытка
ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер, Ложь);
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` не содержит записи с `Номер` равно");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПроверитьОшибкуУтверждения(Индекс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт
Процедура ПроверитьОшибкуУтверждения(Префикс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт
ЮТест.ОжидаетЧто(ИнформацияОбОшибке, "Вариант " + Индекс)
ЮТест.ОжидаетЧто(ИнформацияОбОшибке, Префикс)
.ЭтоНеНеопределено()
.Свойство("Описание")
.НачинаетсяС("[Failed]")

View File

@ -63,4 +63,12 @@
КонецФункции
Процедура УстановитьРеквизит(Ссылка, ИмяРеквизита, ЗначениеРеквизита) Экспорт
Объект = Ссылка.ПолучитьОбъект();
Объект[ИмяРеквизита] = ЗначениеРеквизита;
Объект.Записать();
КонецПроцедуры
#КонецОбласти