diff --git a/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs b/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs
index c634a6bd..67c99dfb 100644
--- a/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs
+++ b/exts/yaxunit/.settings/com.e1c.v8codestyle.bsl.prefs
@@ -1,3 +1,3 @@
-addModuleStrictTypesAnnotation=true
+addModuleStrictTypesAnnotation=false
createModuleStructure=true
eclipse.preferences.version=1
diff --git a/exts/yaxunit/.settings/templates/common_module.bsl b/exts/yaxunit/.settings/templates/common_module.bsl
index daedcb22..6b1c2284 100644
--- a/exts/yaxunit/.settings/templates/common_module.bsl
+++ b/exts/yaxunit/.settings/templates/common_module.bsl
@@ -18,39 +18,6 @@
#Область СлужебныйПрограммныйИнтерфейс
-Процедура ИсполняемыеСценарии() Экспорт
-
- ЮТТесты
- .ДобавитьТест("ТестовыйМетод")
- .ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
- ;
-
-КонецПроцедуры
-
-#Область События
-
-Процедура ПередВсемиТестами() Экспорт
-
-КонецПроцедуры
-
-Процедура ПередКаждымТестом() Экспорт
-
-КонецПроцедуры
-
-Процедура ПослеКаждогоТеста() Экспорт
-
-КонецПроцедуры
-
-Процедура ПослеВсехТестов() Экспорт
-
-КонецПроцедуры
-
-#КонецОбласти
-
-Процедура ТестовыйМетод() Экспорт
-
-КонецПроцедуры
-
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
new file mode 100644
index 00000000..aa56287b
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
@@ -0,0 +1,130 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+///////////////////////////////////////////////////////////////////
+// Расширяет возможности тестирования,
+// позволяет в упрощенной форме получать данны из информационной базы
+// как с сервера так и с клиента.
+///////////////////////////////////////////////////////////////////
+#Область ПрограммныйИнтерфейс
+
+// Возвращает значения реквизитов ссылки
+//
+// Параметры:
+// Ссылка - ЛюбаяСсылка
+// ИменаРеквизитов - Строка - Имена получаемых реквизитов, разделенные запятой.
+// Важно, нельзя указывать реквизиты через точку.
+//
+// Возвращаемое значение:
+// Структура Из Произвольный - Значения реквизитов ссылки
+Функция ЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт
+
+ //@skip-check constructor-function-return-section
+ Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, Ложь);
+
+КонецФункции
+
+// Возвращает значение реквизита ссылки
+//
+// Параметры:
+// Ссылка - ЛюбаяСсылка
+// ИмяРеквизита - Строка - Имя получаемого реквизита, можно указать путь к вложенному реквизиту через точку
+//
+// Возвращаемое значение:
+// Структура Из Произвольный - Значения реквизитов ссылки
+Функция ЗначениеРеквизита(Ссылка, ИмяРеквизита) Экспорт
+
+ //@skip-check constructor-function-return-section
+ Возврат ЮТЗапросыВызовСервера.ЗначенияРеквизитов(Ссылка, ИмяРеквизита, Истина);
+
+КонецФункции
+
+// Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
+//
+// Параметры:
+// ИмяТаблицы - Строка - Имя таблицы базы
+// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
+// - см. ЮТФабрика.ВыражениеПредиката
+// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
+// - Неопределено - Проверит, что таблица не пустая
+// Возвращаемое значение:
+// Булево - Таблица содержит записи
+Функция ТаблицаСодержитЗаписи(ИмяТаблицы, Предикат = Неопределено) Экспорт
+
+ ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат);
+ Возврат НЕ РезультатПустой(ОписаниеЗапроса);
+
+КонецФункции
+
+// Возвращает результат выполнения простого запроса.
+//
+// Параметры:
+// ОписаниеЗапроса - см. ОписаниеЗапроса
+//
+// Возвращаемое значение:
+// - ТаблицаЗначений - Результат запроса для сервера
+// - Массив из Структура - Результат запроса для клиента
+Функция РезультатЗапроса(ОписаниеЗапроса) Экспорт
+
+#Если Клиент Тогда
+ Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Истина);
+#Иначе
+ Возврат ЮТЗапросыВызовСервера.РезультатЗапроса(ОписаниеЗапроса, Ложь);
+#КонецЕсли
+
+КонецФункции
+
+// Определяет, есть ли в результате записи
+//
+// Параметры:
+// ОписаниеЗапроса - см. ОписаниеЗапроса
+//
+// Возвращаемое значение:
+// Булево - Результат пустой
+Функция РезультатПустой(ОписаниеЗапроса) Экспорт
+
+ Возврат ЮТЗапросыВызовСервера.РезультатПустой(ОписаниеЗапроса);
+
+КонецФункции
+
+// Описание простого запроса
+//
+// Возвращаемое значение:
+// Структура - Описание запроса:
+// * ИмяТаблицы - Строка -
+// * ВыбираемыеПоля - Структура - Выражения выбираемых полей:
+// * Ключ - Строка - Имя поля
+// * Значение - Строка - выражение поля
+// * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
+// * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
+// * ЗначенияПараметров - Структура - Набор параметров запроса
+Функция ОписаниеЗапроса() Экспорт
+
+ Описание = Новый Структура();
+ Описание.Вставить("ИмяТаблицы", "");
+ Описание.Вставить("ВыбираемыеПоля", Новый Структура);
+ Описание.Вставить("КоличествоЗаписей", Неопределено);
+ Описание.Вставить("Условия", Новый Массив());
+ Описание.Вставить("ЗначенияПараметров", Новый Структура());
+
+ //@skip-check constructor-function-return-section
+ Возврат Описание;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
new file mode 100644
index 00000000..892f6961
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/ЮТЗапросы.mdo
@@ -0,0 +1,11 @@
+
+
+ ЮТЗапросы
+
+ ru
+ Запросы
+
+ true
+ true
+ true
+
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
new file mode 100644
index 00000000..931cadad
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
@@ -0,0 +1,162 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция РезультатЗапроса(ОписаниеЗапроса, ДляКлиента) Экспорт
+
+ Запрос = Запрос(ОписаниеЗапроса);
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Если НЕ ДляКлиента Тогда
+ Возврат РезультатЗапроса.Выгрузить();
+ ИначеЕсли РезультатЗапроса.Пустой() Тогда
+ Возврат Новый Массив();
+ КонецЕсли;
+
+ Ключи = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(РезультатЗапроса.Колонки, "Имя"), ",");
+ Результат = Новый Массив();
+
+ Выборка = РезультатЗапроса.Выбрать();
+
+ Пока Выборка.Следующий() Цикл
+
+ Запись = Новый Структура(Ключи);
+ ЗаполнитьЗначенияСвойств(Запись, Выборка);
+ Результат.Добавить(Запись);
+
+ КонецЦикла;
+
+ Возврат Результат;
+
+КонецФункции
+
+// Результат пустой.
+//
+// Параметры:
+// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
+//
+// Возвращаемое значение:
+// Булево - Результат пустой
+Функция РезультатПустой(Знач ОписаниеЗапроса) Экспорт
+
+ Запрос = Запрос(ОписаниеЗапроса);
+ РезультатЗапроса = Запрос.Выполнить();
+
+ Возврат РезультатЗапроса.Пустой();
+
+КонецФункции
+
+// Возвращает значения реквизитов ссылки
+//
+// Параметры:
+// Ссылка - ЛюбаяСсылка
+// ИменаРеквизитов - Строка
+// ОдинРеквизит - Булево
+//
+// Возвращаемое значение:
+// Структура Из Произвольный - Значения реквизитов ссылки, про значений получения множества реквизитов
+// Произвольный - Значения реквизитов ссылки, если при получении значения одного реквизита
+Функция ЗначенияРеквизитов(Ссылка, ИменаРеквизитов, ОдинРеквизит) Экспорт
+
+ ИмяТаблицы = Ссылка.Метаданные().ПолноеИмя();
+
+ ТекстЗапроса = СтрШаблон("ВЫБРАТЬ ПЕРВЫЕ 1 %1 ИЗ %2 ГДЕ Ссылка = &Ссылка", ИменаРеквизитов, ИмяТаблицы);
+ Запрос = Новый Запрос(ТекстЗапроса);
+ Запрос.УстановитьПараметр("Ссылка", Ссылка);
+
+ Если ОдинРеквизит Тогда
+ Возврат ЗначениеИзЗапроса(Запрос, 0);
+ Иначе
+ Возврат ЗначенияИзЗапроса(Запрос, ИменаРеквизитов);
+ КонецЕсли;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+// Запрос.
+//
+// Параметры:
+// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
+//
+// Возвращаемое значение:
+// Запрос
+Функция Запрос(ОписаниеЗапроса)
+
+ Строки = Новый Массив();
+ Строки.Добавить("ВЫБРАТЬ ");
+
+ Если ОписаниеЗапроса.КоличествоЗаписей <> Неопределено Тогда
+ Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей));
+ КонецЕсли;
+
+ ВыбираемыеПоля = Новый Массив();
+ Для Каждого Выражение Из ОписаниеЗапроса.ВыбираемыеПоля Цикл
+ Поле = СтрШаблон(" %1 КАК %2", ?(Выражение.Значение = Неопределено, Выражение.Ключ, Выражение.Значение), Выражение.Ключ);
+ ВыбираемыеПоля.Добавить(Поле);
+ КонецЦикла;
+
+ Если НЕ ВыбираемыеПоля.Количество() Тогда
+ ВыбираемыеПоля.Добавить("1 КАК Поле");
+ КонецЕсли;
+
+ Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
+ Строки.Добавить("ИЗ " + ОписаниеЗапроса.ИмяТаблицы);
+
+ Если ОписаниеЗапроса.Условия.Количество() Тогда
+ Строки.Добавить("ГДЕ (");
+ Строки.Добавить(СтрСоединить(ОписаниеЗапроса.Условия, ") И (" + Символы.ПС));
+ Строки.Добавить(")");
+ КонецЕсли;
+
+ Запрос = Новый Запрос(СтрСоединить(Строки, Символы.ПС));
+ ЮТОбщий.ОбъединитьВСтруктуру(Запрос.Параметры, ОписаниеЗапроса.ЗначенияПараметров);
+
+ Возврат Запрос;
+
+КонецФункции
+
+Функция ЗначенияИзЗапроса(Запрос, Реквизиты)
+
+ Результат = Новый Структура(Реквизиты);
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ Если Выборка.Следующий() Тогда
+ ЗаполнитьЗначенияСвойств(Результат, Выборка);
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
+Функция ЗначениеИзЗапроса(Запрос, Реквизит)
+
+ Выборка = Запрос.Выполнить().Выбрать();
+
+ Если Выборка.Следующий() Тогда
+ Возврат Выборка[Реквизит];
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo
new file mode 100644
index 00000000..10fbfd8d
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/ЮТЗапросыВызовСервера.mdo
@@ -0,0 +1,10 @@
+
+
+ ЮТЗапросыВызовСервера
+
+ ru
+ Запросы вызов сервера
+
+ true
+ true
+
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
new file mode 100644
index 00000000..9ee6615b
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
@@ -0,0 +1,96 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ОписаниеЗапроса(ИмяТаблицы, ПредикатыУсловия, ВыбираемыеПоля = Неопределено) Экспорт
+
+ Описание = ЮТЗапросы.ОписаниеЗапроса();
+ Описание.ИмяТаблицы = ИмяТаблицы;
+ Описание.ВыбираемыеПоля.Вставить("Проверка", "1");
+
+ СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров);
+
+ Возврат Описание;
+
+КонецФункции
+
+Процедура СформироватьУсловия(Предикат, КоллекцияУсловий, ЗначенияПараметров) Экспорт
+
+ Если Предикат = Неопределено Тогда
+ Возврат;
+ КонецЕсли;
+
+ Предикаты = ЮТПредикатыКлиентСервер.НаборПредикатов(Предикат);
+ ВидыСравнения = ЮТПредикаты.Выражения();
+
+ Для Каждого ВыражениеПредиката Из Предикаты Цикл
+
+ ИмяПараметра = "Параметр_" + ЮТОбщий.ЧислоВСтроку(ЗначенияПараметров.Количество() + 1);
+ Шаблон = ШаблонУсловия(ВыражениеПредиката.ВидСравнения, ВидыСравнения);
+
+ Условие = СтрШаблон(Шаблон, ВыражениеПредиката.ИмяРеквизита, ИмяПараметра);
+
+ КоллекцияУсловий.Добавить(Условие);
+ ЗначенияПараметров.Вставить(ИмяПараметра, ВыражениеПредиката.Значение);
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция ШаблонУсловия(Знач Выражение, ВыраженияПредикатов)
+
+ Отрицание = ЮТПредикатыКлиентСервер.ЭтоВыраженияОтрицания(Выражение);
+ Если Отрицание Тогда
+ Выражение = ЮТПредикатыКлиентСервер.ВыраженияБезОтрицания(Выражение);
+ КонецЕсли;
+
+ Если Выражение = ВыраженияПредикатов.Равно Тогда
+ Шаблон = "%1 = &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.Больше Тогда
+ Шаблон = "%1 > &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.БольшеРавно Тогда
+ Шаблон = "%1 >= &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.Меньше Тогда
+ Шаблон = "%1 < &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.МеньшеРавно Тогда
+ Шаблон = "%1 <= &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.ИмеетТип Тогда
+ Шаблон = "ТИПЗНАЧЕНИЯ(%1) = &%2";
+ ИначеЕсли Выражение = ВыраженияПредикатов.Содержит Тогда
+ Шаблон = "%1 ПОДОБНО ""%%"" + &%2 + ""%%""";
+ ИначеЕсли Выражение = ВыраженияПредикатов.Заполнено Тогда
+ // TODO Реализовать
+ ВызватьИсключение "Проверка заполненности пока не поддерживается";
+ Иначе
+ ВызватьИсключение "Неподдерживаемое выражения предикатов " + Выражение;
+ КонецЕсли;
+
+ Если Отрицание Тогда
+ Шаблон = СтрШаблон("НЕ (%1)", Шаблон);
+ КонецЕсли;
+
+ Возврат Шаблон;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo
new file mode 100644
index 00000000..f0a71297
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/ЮТЗапросыКлиентСервер.mdo
@@ -0,0 +1,11 @@
+
+
+ ЮТЗапросыКлиентСервер
+
+ ru
+ Запросы клиент сервер
+
+ true
+ true
+ true
+
diff --git a/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl
index 5a3c974c..e7140744 100644
--- a/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТКонструкторВариантов/Module.bsl
@@ -45,11 +45,20 @@
// Параметр3 - Произвольный
// Параметр4 - Произвольный
// Параметр5 - Произвольный
+// Параметр6 - Произвольный
+// Параметр7 - Произвольный
//
// Возвращаемое значение:
// ОбщийМодуль - Этот же модуль, для замыкания
-Функция Добавить(Параметр1, Параметр2 = Неопределено, Параметр3 = Неопределено, Параметр4 = Неопределено, Параметр5 = Неопределено) Экспорт
-
+Функция Добавить(Параметр1,
+ Параметр2 = Неопределено,
+ Параметр3 = Неопределено,
+ Параметр4 = Неопределено,
+ Параметр5 = Неопределено,
+ Параметр6 = Неопределено,
+ Параметр7 = Неопределено) Экспорт
+// BSLLS:MagicNumber-off
+// BSLLS:NumberOfValuesInStructureConstructor-off
Варианты = ЮТКонтекст.ЗначениеКонтекста(КлючКонтекста());
Если Варианты.КоличествоРеквизитов = 1 Тогда
@@ -62,8 +71,13 @@
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4);
ИначеЕсли Варианты.КоличествоРеквизитов = 5 Тогда
Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5);
+ ИначеЕсли Варианты.КоличествоРеквизитов = 6 Тогда
+ Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6);
+ ИначеЕсли Варианты.КоличествоРеквизитов = 7 Тогда
+ Вариант = Новый Структура(Варианты.Реквизиты, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7);
КонецЕсли;
-
+// BSLLS:NumberOfValuesInStructureConstructor-on
+// BSLLS:MagicNumber-on
Варианты.Варианты.Добавить(Вариант);
Возврат ЮТКонструкторВариантов;
diff --git a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl
index 2457a174..18a26edd 100644
--- a/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТПредикатыКлиентСервер/Module.bsl
@@ -78,24 +78,24 @@
КонецФункции
-Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель) Экспорт
+Функция ПредставлениеПредикатов(Знач Предикаты, Разделитель, ШаблонСвойства = "содержит свойство `%1`, которое") Экспорт
Представления = Новый Массив();
Предикаты = НаборПредикатов(Предикаты);
Для Каждого Выражение Из Предикаты Цикл
- Представления.Добавить(ПредставлениеПредиката(Выражение));
+ Представления.Добавить(ПредставлениеПредиката(Выражение, ШаблонСвойства));
КонецЦикла;
Возврат СтрСоединить(Представления, Разделитель);
КонецФункции
-Функция ПредставлениеПредиката(ВыражениеПредиката) Экспорт
+Функция ПредставлениеПредиката(ВыражениеПредиката, ШаблонСвойства) Экспорт
Если ВыражениеПредиката.ИмяРеквизита = Неопределено Тогда
ПроверяемоеЗначение = "";
Иначе
- ПроверяемоеЗначение = СтрШаблон("содержит свойство `%1`, которое ", ВыражениеПредиката.ИмяРеквизита);
+ ПроверяемоеЗначение = СтрШаблон(ШаблонСвойства, ВыражениеПредиката.ИмяРеквизита) + " ";
КонецЕсли;
Выражение = СтрШаблон(ШаблонВыражения(ВыражениеПредиката.ВидСравнения), ВыражениеПредиката.Значение);
@@ -146,14 +146,26 @@
КонецФункции
+Функция ЭтоВыраженияОтрицания(Выражение) Экспорт
+
+ Возврат СтрНачинаетсяС(Выражение, "Не");
+
+КонецФункции
+
+Функция ВыраженияБезОтрицания(Выражение) Экспорт
+
+ Возврат Сред(Выражение, 3);
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
-Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
+Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
Попытка
- ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения);
+ ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
Исключение
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
КонецПопытки;
@@ -166,15 +178,19 @@
// Значение - Произвольный - Значение
// Выражение - см. ЮТФабрика.ВыражениеПредиката
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
-// БазовыеПараметрыПроверки - см. ПараметрыПроверки
+// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
// ПараметрыСравнения - Неопределено
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
-Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, БазовыеПараметрыПроверки, ПараметрыСравнения)
+Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
// BSLLS:CognitiveComplexity-off
ВидыСравнения = ЮТПредикаты.Выражения();
+
ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
- ЗаполнитьЗначенияСвойств(ПараметрыПроверки, БазовыеПараметрыПроверки, "ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения");
+
+ ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
+ ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
+ ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
ПараметрыПроверки.Реверс = Истина;
@@ -236,21 +252,21 @@
//
// Параметры:
// ОписаниеПроверки - Строка - Описание конкретной проверки
-// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
+// ТекстПроверяемоеЗначение - Строка - Человекочитаемое описание проверяемого значения
// ПредставлениеПроверяемогоЗначения - Неопределено - Представление проверяемого значения
//
// Возвращаемое значение:
// Структура - Параметры сообщений об ошибке:
-// * ОписаниеПроверки - Строка - Описание конкретной проверки
-// * ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
-// * ПредставлениеПроверяемогоЗначения - Неопределено -
+// * ОписаниеПроверки - Неопределено, Строка - Описание конкретной проверки
+// * ТекстПроверяемоеЗначение - Неопределено, Строка - Человекочитаемое описание проверяемого значения
+// * ПредставлениеПроверяемогоЗначения - Неопределено, Строка -
Функция ПараметрыСообщенийОбОшибке(ОписаниеПроверки = Неопределено,
- ОбъектПроверки = "проверяемое значение",
+ ТекстПроверяемоеЗначение = "проверяемое значение",
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
- Возврат Новый Структура("ОписаниеПроверки, ОбъектПроверки, ПредставлениеПроверяемогоЗначения",
+ Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
ОписаниеПроверки,
- ОбъектПроверки,
+ ТекстПроверяемоеЗначение,
ПредставлениеПроверяемогоЗначения);
КонецФункции
diff --git a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
index 57411934..4dcf81b3 100644
--- a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
@@ -94,12 +94,13 @@
//
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке
-Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке) Экспорт
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
+Процедура СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке, ОписаниеПроверки = Неопределено) Экспорт
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
СтруктураОшибки.ОшибкаУтверждения = Ложь;
- ВызватьОшибкуИсполнения(ИнформацияОбОшибке);
+ ВызватьОшибкуИсполнения(ИнформацияОбОшибке, ОписаниеПроверки);
КонецПроцедуры
@@ -107,16 +108,20 @@
// При этом сохраняет в контекст состояние, для дальнейшей обработки
//
// Параметры:
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
// Сообщение - Строка
// ПроверяемоеЗначение - Произвольный
// ОжидаемоеЗначение - Произвольный
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
-Процедура СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
+Процедура СгенерироватьОшибкуСравнения(ОписаниеПроверки,
+ Сообщение,
+ ПроверяемоеЗначение,
+ ОжидаемоеЗначение,
+ ОбъектПроверки = "проверяемое значение") Экспорт
УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение);
- Контекст = ЮТКонтекст.КонтекстПроверки();
- ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст);
- ВызватьОшибкуПроверки(ТекстСообщения);
+ ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
+ ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
КонецПроцедуры
@@ -124,15 +129,15 @@
// При этом сохраняет в контекст состояние, для дальнейшей обработки
//
// Параметры:
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
// Сообщение - Строка
// ПроверяемоеЗначение - Произвольный
// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
-Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
+Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение);
- Контекст = ЮТКонтекст.КонтекстПроверки();
- ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ПроверяемоеЗначение, Сообщение, ОбъектПроверки, Контекст);
- ВызватьОшибкуПроверки(ТекстСообщения);
+ ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
+ ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
КонецПроцедуры
@@ -160,9 +165,10 @@
// Служебный метод, предварительно нужно самостоятельно настроить контекст (см. ЮТКонтекст.КонтекстОшибки)
// Параметры:
// ТекстСообщения - Строка
-Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения) Экспорт
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
+Процедура ВызватьОшибкуПроверки(Знач ТекстСообщения, ОписаниеПроверки = Неопределено) Экспорт
- СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений());
+ СообщениеОбОшибке = СообщениеОбОшибке(ТекстСообщения, ПрефиксОшибкиУтверждений(), ОписаниеПроверки);
ВызватьИсключение СообщениеОбОшибке;
КонецПроцедуры
@@ -307,20 +313,27 @@
КонецПроцедуры
-Функция ФорматированныйТекстОшибкиУтверждения(Знач ПроверяемоеЗначение, ТекстОжидания, ОбъектПроверки, Контекст) Экспорт
+// Форматированный текст ошибки утверждения.
+//
+// Параметры:
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
+// ТекстОжидания - Строка - Описание ожидания
+// ОбъектПроверки - Строка - Объект проверки
+//
+// Возвращаемое значение:
+// Строка - Форматированный текст ошибки утверждения
+Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
- ИмяСвойства = Контекст.ИмяСвойства;
-
- Если ЗначениеЗаполнено(ИмяСвойства) Тогда
- ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ИмяСвойства);
+ Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
+ ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
Иначе
ВставкаСвойство = "";
КонецЕсли;
- Если ЗначениеЗаполнено(Контекст.ПредставлениеПроверяемогоЗначения) Тогда
- ПредставлениеЗначения = Контекст.ПредставлениеПроверяемогоЗначения;
+ Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
+ ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
Иначе
- ПредставлениеЗначения = СтрШаблон("`%1`", Контекст.ПроверяемоеЗначение);
+ ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
КонецЕсли;
// Заголовок сообщения
@@ -336,6 +349,20 @@
КонецФункции
+Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт
+
+ Если ОписаниеПроверки <> Неопределено Тогда
+ ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(ОписаниеПроверки.ПрефиксОшибки, ОписаниеПроверки.ОписаниеПроверки, " ");
+ СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": ");
+ Иначе
+ СообщениеОбОшибке = ТекстОшибки;
+ КонецЕсли;
+
+ СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2);
+ Возврат СообщениеОбОшибке;
+
+КонецФункции
+
Процедура ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, Ошибка) Экспорт
РезультатПроверки.Успешно = Ложь;
@@ -517,21 +544,17 @@
КонецПроцедуры
-Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке)
+Процедура ВызватьОшибкуИсполнения(Знач ИнформацияОбОшибке, ОписаниеПроверки)
ТекстОшибки = ИнформациюОбОшибкеВСтроку(ИнформацияОбОшибке);
- СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения());
+ СообщениеОбОшибке = СообщениеОбОшибке(ТекстОшибки, ПрефиксОшибкиВыполнения(), ОписаниеПроверки);
ВызватьИсключение СообщениеОбОшибке;
КонецПроцедуры
-Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки)
+Функция СообщениеОбОшибке(ТекстОшибки, ПрефиксТипаОшибки, ОписаниеПроверки = Неопределено) Экспорт
- Контекст = ЮТКонтекст.КонтекстПроверки();
- ПрефиксОшибки = ЮТОбщий.ДобавитьСтроку(Контекст.ПрефиксОшибки, Контекст.ОписаниеПроверки, " ");
-
- СообщениеОбОшибке = ЮТОбщий.ДобавитьСтроку(ПрефиксОшибки, ТекстОшибки, ": ");
- СообщениеОбОшибке = ВРег(Лев(СообщениеОбОшибке, 1)) + Сред(СообщениеОбОшибке, 2);
+ СообщениеОбОшибке = ДобавитьОписания(ТекстОшибки, ОписаниеПроверки);
Возврат СтрШаблон("%1 <%2>", ПрефиксТипаОшибки, СообщениеОбОшибке);
diff --git a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
index 87ffacf6..f7e130db 100644
--- a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
@@ -249,18 +249,33 @@
КонецПроцедуры
+// Параметры проверки.
+//
+// Параметры:
+// ВидСравнения - Строка
+// ПроверяемоеЗначение - Произвольный
+// ИмяСвойства - Строка
+// ОжидаемоеЗначение - Произвольный
+// Реверс - Булево
+//
+// Возвращаемое значение:
+// Структура - Параметры проверки:
+// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения
+// * ПрефиксОшибки - Строка, Неопределено -
+// * ОписаниеПроверки - Строка, Неопределено -
+// * ВидСравнения - Строка
+// * ОжидаемоеЗначение - Произвольный
+// * Реверс - Булево
+// * ТекстПроверяемоеЗначение - Строка
Функция ПараметрыПроверки(ВидСравнения, ПроверяемоеЗначение, ИмяСвойства, ОжидаемоеЗначение, Реверс = Ложь) Экспорт
- Параметры = Новый Структура();
+ Параметры = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение);
+ Параметры.ОбъектПроверки.ИмяСвойства = ИмяСвойства;
Параметры.Вставить("ВидСравнения", ВидСравнения);
- Параметры.Вставить("ПроверяемоеЗначение", ПроверяемоеЗначение);
Параметры.Вставить("ОжидаемоеЗначение", ОжидаемоеЗначение);
- Параметры.Вставить("ИмяСвойства", ИмяСвойства);
Параметры.Вставить("Реверс", Реверс);
- Параметры.Вставить("ОбъектПроверки", Неопределено);
- Параметры.Вставить("ОписаниеПроверки", Неопределено);
- Параметры.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
+ Параметры.Вставить("ТекстПроверяемоеЗначение", "проверяемое значение");
Возврат Параметры;
@@ -503,22 +518,11 @@
Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
-
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
- Если ЗначениеЗаполнено(ПараметрыПроверки.ПредставлениеПроверяемогоЗначения) Тогда
- ПредставлениеЗначения = ПараметрыПроверки.ПредставлениеПроверяемогоЗначения;
- Иначе
- ПредставлениеЗначения = СтрШаблон("`%1`", ПараметрыПроверки.ПроверяемоеЗначение);
- КонецЕсли;
+ ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
+ ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
- ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПредставлениеЗначения,
- Сообщение,
- ПараметрыПроверки.ОбъектПроверки,
- ПараметрыПроверки);
-
- ТекстОшибки = ЮТОбщий.ДобавитьСтроку(ПараметрыПроверки.ОписаниеПроверки, ТекстОшибки, ": ");
- ТекстОшибки = ВРег(Лев(ТекстОшибки, 1)) + Сред(ТекстОшибки, 2);
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
ТекстОшибки,
ФактическоеЗначение,
@@ -535,10 +539,10 @@
// Произвольный
Функция ПроверяемоеЗначение(ПараметрыПроверки)
- Если ПараметрыПроверки.ИмяСвойства <> Неопределено Тогда
- Значение = ЗначениеСвойства(ПараметрыПроверки.ПроверяемоеЗначение, ПараметрыПроверки.ИмяСвойства);
+ Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
+ Значение = ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
Иначе
- Значение = ПараметрыПроверки.ПроверяемоеЗначение;
+ Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
КонецЕсли;
Возврат Значение;
diff --git a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
index bce8b716..001244d8 100644
--- a/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТУтверждения/Module.bsl
@@ -39,10 +39,14 @@
//
Функция Что(Знач ПроверяемоеЗначение, Знач Сообщение = "") Экспорт
- Контекст = ИнициализироватьКонтекстУтверждения();
- Контекст.ПроверяемоеЗначение = ПроверяемоеЗначение;
+ Контекст = НовыйКонтекстУтверждения(ПроверяемоеЗначение);
+
+ Контекст.ОбъектПроверки.Значение = ПроверяемоеЗначение;
Контекст.ПрефиксОшибки = Сообщение;
+ ЮТКонтекст.УстановитьКонтекстУтверждений(Контекст);
+ ЮТКонтекст.УстановитьКонтекстОшибки();
+
Возврат ЮТУтверждения;
КонецФункции
@@ -57,8 +61,10 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Метод(Знач ИмяМетода, Знач ПараметрыМетода = Неопределено) Экспорт
- ПроверитьТипЗначения(ИмяМетода, "Строка", "имени метода", Истина);
- ПроверитьТипЗначения(ПараметрыМетода, "Массив", "параметров метода", Истина);
+ Контекст = Контекст();
+
+ ПроверитьТипЗначения(Контекст, ИмяМетода, "Строка", "имени метода", Истина);
+ ПроверитьТипЗначения(Контекст, ПараметрыМетода, "Массив", "параметров метода", Истина);
Контекст = Контекст();
Контекст.ИмяМетода = ИмяМетода;
@@ -80,7 +86,7 @@
Контекст = Контекст();
Если НЕ ЗначениеЗаполнено(Контекст.ИмяМетода) Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод");
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения("Перед установкой параметров нужно указать метод", Контекст);
КонецЕсли;
Если Контекст.ПараметрыМетода = Неопределено Тогда
@@ -102,7 +108,7 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеющееПредставление(Представление) Экспорт
- Контекст().ПредставлениеПроверяемогоЗначения = Представление;
+ Контекст().ОбъектПроверки.Представление = Представление;
Возврат ЮТУтверждения;
КонецФункции
@@ -121,13 +127,13 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Свойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
Контекст = Контекст();
- Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ Контекст.ОбъектПроверки.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
- Путь = НормализованныйПутьКСвойству(Контекст.ПроверяемоеЗначение, ИмяСвойства, Истина);
+ Путь = НормализованныйПутьКСвойству(Контекст.ОбъектПроверки.Значение, ИмяСвойства, Истина);
- Контекст.ИмяСвойства = ИмяСвойства;
+ Контекст.ОбъектПроверки.ИмяСвойства = ИмяСвойства;
Контекст.НормализованныйПутьКСвойству = Путь;
Возврат ЮТУтверждения;
@@ -146,12 +152,12 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
Контекст = Контекст();
- Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ Контекст.ОбъектПроверки.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
- Если ЗначениеСодержитСвойство(Контекст.ПроверяемоеЗначение, ИмяСвойства) Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
+ Если ЗначениеСодержитСвойство(Контекст.ОбъектПроверки.Значение, ИмяСвойства) Тогда
+ СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -182,7 +188,7 @@
Функция Объект() Экспорт
Контекст = Контекст();
- Контекст.ИмяСвойства = Неопределено;
+ Контекст.ОбъектПроверки.ИмяСвойства = Неопределено;
Возврат ЮТУтверждения;
@@ -199,8 +205,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетСвойство(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
НормализованныйПутьКСвойству(ПроверяемоеЗначение, ИмяСвойства, Истина);
Возврат ЮТУтверждения;
@@ -219,11 +226,12 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеИмеетСвойства(Знач ИмяСвойства, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Если ЗначениеСодержитСвойство(ПроверяемоеЗначение, ИмяСвойства) Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
+ СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -240,8 +248,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетСвойстваРавные(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ОбъектыРавны(ПроверяемоеЗначение, ОжидаемоеЗначение);
Возврат ЮТУтверждения;
@@ -258,8 +267,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоИстина(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Истина, Ложь, "является истиной");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Истина, Ложь, "является истиной");
Возврат ЮТУтверждения;
КонецФункции
@@ -274,8 +284,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоНеИстина(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Истина, Истина, "является истиной");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Истина, Истина, "является истиной");
Возврат ЮТУтверждения;
КонецФункции
@@ -290,8 +301,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Ложь, Ложь, "является ложью");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Ложь, Ложь, "является ложью");
Возврат ЮТУтверждения;
КонецФункции
@@ -306,8 +318,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоНеЛожь(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Ложь, Истина, "является ложью");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Ложь, Истина, "является ложью");
Возврат ЮТУтверждения;
КонецФункции
@@ -325,8 +338,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Равно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(ОжидаемоеЗначение, Ложь, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, ОжидаемоеЗначение, Ложь, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
Возврат ЮТУтверждения;
КонецФункции
@@ -344,8 +358,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(ОжидаемоеЗначение, Истина, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, ОжидаемоеЗначение, Истина, СтрШаблон("равно `%1`", ОжидаемоеЗначение));
Возврат ЮТУтверждения;
КонецФункции
@@ -360,16 +375,17 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Больше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ПроверяемоеЗначение > ОжидаемоеЗначение;
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Не Результат Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("больше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
+ СгенерироватьОшибкуСравнения(СтрШаблон("больше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -386,16 +402,17 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция БольшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ПроверяемоеЗначение >= ОжидаемоеЗначение;
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Не Результат Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("больше или равно `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
+ СгенерироватьОшибкуСравнения(СтрШаблон("больше или равно `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -412,16 +429,17 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Меньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ПроверяемоеЗначение < ОжидаемоеЗначение;
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Не Результат Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("меньше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
+ СгенерироватьОшибкуСравнения(СтрШаблон("меньше чем `%1`", ОжидаемоеЗначение), ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -438,17 +456,18 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция МеньшеИлиРавно(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ПроверяемоеЗначение <= ОжидаемоеЗначение;
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Не Результат Тогда
Сообщение = СтрШаблон("меньше или равно `%1`", ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -464,8 +483,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Заполнено(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьЗаполненность(Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьЗаполненность(Контекст, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -479,8 +499,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеЗаполнено(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьЗаполненность(Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьЗаполненность(Контекст, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -494,8 +515,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Существует(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьСуществование(Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьСуществование(Контекст, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -509,8 +531,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеСуществует(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьСуществование(Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьСуществование(Контекст, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -524,8 +547,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Неопределено, Ложь, "является неопределено");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Неопределено, Ложь, "является неопределено");
Возврат ЮТУтверждения;
КонецФункции
@@ -539,8 +563,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоНеНеопределено(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Неопределено, Истина, "является неопределено");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Неопределено, Истина, "является неопределено");
Возврат ЮТУтверждения;
КонецФункции
@@ -554,8 +579,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоNull(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Null, Ложь, "является null");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Null, Ложь, "является null");
Возврат ЮТУтверждения;
КонецФункции
@@ -569,8 +595,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЭтоНеNull(Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- СравнитьЗначения(Null, Истина, "является null");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ СравнитьЗначения(Контекст, Null, Истина, "является null");
Возврат ЮТУтверждения;
КонецФункции
@@ -585,8 +612,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипПараметра(ОжидаемоеЗначение, Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -601,8 +629,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеИмеетТип(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипПараметра(ОжидаемоеЗначение, Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьТипПараметра(Контекст, ОжидаемоеЗначение, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -630,8 +659,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция Содержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьСодержание(ОжидаемоеЗначение, Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -659,8 +689,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеСодержит(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьСодержание(ОжидаемоеЗначение, Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -686,8 +717,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьДлину(ОжидаемоеЗначение, Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьДлину(Контекст, ОжидаемоеЗначение, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -713,10 +745,11 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетДлинуБольше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипЗначения(ОжидаемоеЗначение, "Число");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число");
- ФактическаяДлина = ДлинаПроверяемогоЗначения();
+ ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст);
Результат = ФактическаяДлина > ОжидаемоеЗначение;
Сообщение = СтрШаблон("имеет длину (размер) больше `%1`", ОжидаемоеЗначение);
@@ -746,10 +779,11 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ИмеетДлинуМеньше(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипЗначения(ОжидаемоеЗначение, "Число");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число");
- ФактическаяДлина = ДлинаПроверяемогоЗначения();
+ ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст);
Результат = ФактическаяДлина < ОжидаемоеЗначение;
Сообщение = СтрШаблон("имеет длину (размер) меньше `%1`", ОжидаемоеЗначение);
@@ -779,8 +813,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьДлину(ОжидаемоеЗначение, Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьДлину(Контекст, ОжидаемоеЗначение, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -795,26 +830,26 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ВыбрасываетИсключение(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- Контекст = Контекст();
- Модуль = ПроверяемоеЗначение();
+ Модуль = ПроверяемоеЗначение(Контекст);
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Не Результат.ИсключениеВозникло Тогда
ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение);
ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки);
+ ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст);
ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) = 0 Тогда
ТекстОшибки = СтрШаблон("ожидали, что метод `%1` вызовет исключение `%2`, но получили `%3`.",
Контекст.ИмяМетода,
ОжидаемоеЗначение,
Результат.ТекстИсключения);
ЮТРегистрацияОшибок.УстановитьДанныеОшибкиСравнения(Результат.ТекстИсключения, ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки);
+ ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст);
Иначе
Возврат ЮТУтверждения;
КонецЕсли;
@@ -832,13 +867,13 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НеВыбрасываетИсключение(Знач ОжидаемоеЗначение = Неопределено, Знач ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
Попытка
- Контекст = Контекст();
- Модуль = ПроверяемоеЗначение();
+ Модуль = ПроверяемоеЗначение(Контекст);
Результат = ВызватьМетод(Модуль, Контекст.ИмяМетода, Контекст.ПараметрыМетода)
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Результат.ИсключениеВозникло Тогда
@@ -846,10 +881,10 @@
Если НЕ ЗначениеЗаполнено(ОжидаемоеЗначение) Тогда
ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение, но это не так.", Контекст.ИмяМетода);
- ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки);
+ ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст);
ИначеЕсли СтрНайти(Результат.ТекстИсключения, ОжидаемоеЗначение) <> 0 Тогда
ТекстОшибки = СтрШаблон("ожидали, что метод `%1` не вызовет исключение `%2`, но это не так.", Контекст.ИмяМетода, ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки);
+ ЮТРегистрацияОшибок.ВызватьОшибкуПроверки(ТекстОшибки, Контекст);
КонецЕсли;
КонецЕсли;
@@ -869,17 +904,18 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция НачинаетсяС(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт
- ПроверяемоеЗначение = ПроверяемоеЗначение();
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипЗначения(ПроверяемоеЗначение, "Строка", "проверяемого значения");
- ПроверитьТипЗначения(СтрокаПоиска, "Строка", "ожидаемого значения");
- ПроверитьЗаполненностьЗначения(СтрокаПоиска, "ожидаемое значение");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
+ ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
+ ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
+ ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");
Результат = СтрНачинаетсяС(ПроверяемоеЗначение, СтрокаПоиска);
Если НЕ Результат Тогда
Сообщение = СтрШаблон("начинается с `%1`", СтрокаПоиска);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -898,17 +934,18 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЗаканчиваетсяНа(СтрокаПоиска, ОписаниеПроверки = Неопределено) Экспорт
- ПроверяемоеЗначение = ПроверяемоеЗначение();
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьТипЗначения(ПроверяемоеЗначение, "Строка", "проверяемого значения");
- ПроверитьТипЗначения(СтрокаПоиска, "Строка", "ожидаемого значения");
- ПроверитьЗаполненностьЗначения(СтрокаПоиска, "ожидаемое значение");
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
+ ПроверитьТипЗначения(Контекст, ПроверяемоеЗначение, "Строка", "проверяемого значения");
+ ПроверитьТипЗначения(Контекст, СтрокаПоиска, "Строка", "ожидаемого значения");
+ ПроверитьЗаполненностьЗначения(Контекст, СтрокаПоиска, "ожидаемое значение");
Результат = СтрЗаканчиваетсяНа(ПроверяемоеЗначение, СтрокаПоиска);
Если НЕ Результат Тогда
Сообщение = СтрШаблон("заканчивается на `%1`", СтрокаПоиска);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, СтрокаПоиска);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -928,8 +965,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция МеждуВключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Истина, Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Истина, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -947,8 +985,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция МеждуИсключаяГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Ложь, Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Ложь, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -966,8 +1005,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция МеждуВключаяНачалоГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Истина, Ложь);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Истина, Ложь);
Возврат ЮТУтверждения;
КонецФункции
@@ -985,8 +1025,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция МеждуВключаяОкончаниеГраницы(НачалоИнтервала, ОкончаниеИнтервала, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, Ложь, Истина);
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, Ложь, Истина);
Возврат ЮТУтверждения;
КонецФункции
@@ -1001,15 +1042,16 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция КаждыйЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ОбъектПроверки = "каждый элемент проверяемого значения";
Для Каждого Элемент Из ПроверяемоеЗначение Цикл
Если НЕ ЗначениеСодержитСвойство(Элемент, ИмяСвойства) Тогда
Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки);
КонецЕсли;
КонецЦикла;
@@ -1030,8 +1072,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция КаждыйЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ОбъектПроверки = "каждый элемент проверяемого значения";
ОписаниеОжидания = Новый Структура(ИмяСвойства, ОжидаемоеЗначение);
@@ -1040,14 +1083,14 @@
Путь = НормализованныйПутьКСвойству(Элемент, ИмяСвойства, Ложь);
Если Путь = Неопределено Тогда
Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
КонецЕсли;
ЗначениеСвойства = ЗначениеСвойства(Элемент, Путь);
Если НЕ ЗначенияРавны(ЗначениеСвойства, ОжидаемоеЗначение) Тогда
Сообщение = СтрШаблон("содержит свойство `%1`, которое равно `%2`", ИмяСвойства, ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
КонецЕсли;
КонецЦикла;
@@ -1066,8 +1109,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЛюбойЭлементСодержитСвойство(ИмяСвойства, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ОбъектПроверки = "хоть один элемент проверяемого значения";
Найден = Ложь;
@@ -1082,7 +1126,7 @@
Если НЕ Найден Тогда
Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ИмяСвойства, ОбъектПроверки);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -1101,8 +1145,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЛюбойЭлементСодержитСвойствоСоЗначением(ИмяСвойства, ОжидаемоеЗначение, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ОбъектПроверки = "хоть один элемент проверяемого значения";
НайденоСвойство = Ложь;
@@ -1127,10 +1172,10 @@
ОписаниеОжидания = Новый Структура(ИмяСвойства, ОжидаемоеЗначение);
Если НЕ НайденоСвойство Тогда
Сообщение = СтрШаблон("содержит свойство `%1`", ИмяСвойства);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
ИначеЕсли НЕ НайденоЗначение Тогда
Сообщение = СтрШаблон("содержит свойство `%1`, которое равно `%2`", ИмяСвойства, ОжидаемоеЗначение);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОписаниеОжидания, ОбъектПроверки);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -1150,15 +1195,16 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция СоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки);
РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(ПроверяемоеЗначение, Предикат, ПараметрыСообщенийОбОшибке);
Если НЕ РезультатПроверки.Успешно Тогда
- ОбработатьРезультатПроверки(РезультатПроверки);
+ ОбработатьРезультатПроверки(Контекст, РезультатПроверки);
КонецЕсли;
Возврат ЮТУтверждения;
@@ -1179,8 +1225,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция КаждыйЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки, "каждый элемент проверяемого значения");
@@ -1188,7 +1235,7 @@
РезультатПроверки = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Элемент, Предикат, ПараметрыСообщенийОбОшибке);
Если НЕ РезультатПроверки.Успешно Тогда
- ОбработатьРезультатПроверки(РезультатПроверки);
+ ОбработатьРезультатПроверки(Контекст, РезультатПроверки);
КонецЕсли;
КонецЦикла;
@@ -1211,8 +1258,9 @@
// ОбщийМодуль - Этот модуль для замыкания
Функция ЛюбойЭлементСоответствуетПредикату(Предикат, ОписаниеПроверки = Неопределено) Экспорт
- УстановитьОписаниеПроверки(ОписаниеПроверки);
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ПараметрыСообщенийОбОшибке = ПараметрыСообщенийОбОшибке(ПроверяемоеЗначение, ОписаниеПроверки);
@@ -1230,7 +1278,7 @@
Если НЕ Успешно Тогда
Сообщение = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, " и ");
- ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, "один из элементов проверяемого значения");
+ СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, "один из элементов проверяемого значения");
КонецЕсли;
Возврат ЮТУтверждения;
@@ -1247,45 +1295,11 @@
// Используется для принудительного сброса контекста утверждения
Процедура СброситьКонтекст() Экспорт
- ИнициализироватьКонтекстУтверждения();
+ ЮТКонтекст.УстановитьКонтекстУтверждений(Неопределено);
+ ЮТКонтекст.УстановитьКонтекстОшибки();
КонецПроцедуры
-// Инициализирует контекст утверждений
-//
-// Возвращаемое значение:
-// Структура - контекст утверждений:
-// * ПроверяемоеЗначение - Произвольный
-// - Неопределено
-// * ПредставлениеПроверяемогоЗначения - Неопределено
-// - Строка
-// * ПрефиксОшибки - Строка
-// * ИмяМетода - Строка
-// * ИмяСвойства - Строка
-// - Неопределено
-// * НормализованныйПутьКСвойству - Неопределено - Не указано свойство
-// - Массив из Строка, Число
-// * ПараметрыМетода - Неопределено - Не установлены
-// - Массив из Произвольный
-// * ОписаниеПроверки - Строка
-// - Неопределено
-Функция НовыйКонтекстУтверждения() Экспорт
-
- Контекст = Новый Структура;
-
- Контекст.Вставить("ПроверяемоеЗначение", Неопределено);
- Контекст.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
- Контекст.Вставить("ПрефиксОшибки", "");
- Контекст.Вставить("ИмяМетода", "");
- Контекст.Вставить("ИмяСвойства", Неопределено);
- Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено);
- Контекст.Вставить("ПараметрыМетода", Неопределено);
- Контекст.Вставить("ОписаниеПроверки", Неопределено);
-
- Возврат Контекст;
-
-КонецФункции
-
// Обработчик события "ПередКаждымТестом"
//
// Параметры:
@@ -1302,39 +1316,50 @@
#Область Контекст
-Функция ИнициализироватьКонтекстУтверждения()
+// Контекст.
+//
+// Возвращаемое значение:
+// см. НовыйКонтекстУтверждения
+Функция Контекст() Экспорт
- Контекст = НовыйКонтекстУтверждения();
+ //@skip-check constructor-function-return-section
+ Возврат ЮТКонтекст.КонтекстПроверки();
- ЮТКонтекст.УстановитьКонтекстУтверждений(Контекст);
- ЮТКонтекст.УстановитьКонтекстОшибки();
+КонецФункции
+
+// Инициализирует контекст утверждений
+//
+// Параметры:
+// ПроверяемоеЗначение - Произвольный - Проверяемое значение
+//
+// Возвращаемое значение:
+// Структура - контекст утверждений:
+// * ОбъектПроверки - см. ЮТФабрика.ОписаниеПроверяемогоЗначения
+// * ИмяМетода - Строка
+// * НормализованныйПутьКСвойству - Неопределено - Не указано свойство
+// - Массив из Строка, Число
+// * ПараметрыМетода - Неопределено - Не установлены
+// - Массив из Произвольный
+Функция НовыйКонтекстУтверждения(ПроверяемоеЗначение)
+
+ Контекст = ЮТФабрика.ОписаниеПроверки(ПроверяемоеЗначение);
+
+ Контекст.Вставить("ИмяМетода", "");
+ Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено);
+ Контекст.Вставить("ПараметрыМетода", Неопределено);
Возврат Контекст;
КонецФункции
-Функция Контекст() Экспорт
-
- КонтекстУтверждения = ЮТКонтекст.КонтекстПроверки();
-
- Если КонтекстУтверждения = Неопределено Тогда
- КонтекстУтверждения = ИнициализироватьКонтекстУтверждения();
- КонецЕсли;
-
- Возврат КонтекстУтверждения;
-
-КонецФункции
-
#КонецОбласти
-Функция ПроверяемоеЗначение()
+Функция ПроверяемоеЗначение(Контекст)
- Контекст = Контекст();
-
- Если Контекст.ИмяСвойства <> Неопределено Тогда
- Значение = ЗначениеСвойства(Контекст.ПроверяемоеЗначение, Контекст.НормализованныйПутьКСвойству);
+ Если Контекст.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
+ Значение = ЗначениеСвойства(Контекст.ОбъектПроверки.Значение, Контекст.НормализованныйПутьКСвойству);
Иначе
- Значение = Контекст.ПроверяемоеЗначение;
+ Значение = Контекст.ОбъектПроверки.Значение;
КонецЕсли;
Возврат Значение;
@@ -1442,7 +1467,7 @@
Значение = Значение[Часть];
ИначеЕсли ФиксироватьОшибку Тогда
ПутьСвойства = СтрСоединить(ПройденныйПуть, ".");
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка);
+ СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка);
Иначе
Возврат Неопределено;
КонецЕсли;
@@ -1596,14 +1621,14 @@
#Область ПроверкаТипов
-Процедура ПроверитьТипПараметра(Знач ОжидаемоеЗначение, Реверс = Ложь)
+Процедура ПроверитьТипПараметра(Контекст, Знач ОжидаемоеЗначение, Реверс = Ложь)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
- ПроверитьТипЗначения(ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка"));
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
+ ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка"));
Результат = ТипЗначенияСоответствует(ПроверяемоеЗначение, ОжидаемоеЗначение);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Сообщение = СтрШаблон("имеет тип `%1`", ОжидаемоеЗначение);
@@ -1611,7 +1636,8 @@
КонецПроцедуры
-Процедура ПроверитьТипЗначения(Значение,
+Процедура ПроверитьТипЗначения(Контекст,
+ Значение,
Знач ОжидаемыйТип,
Описание = "ожидаемого значения",
ЕслиУстановлен = Ложь,
@@ -1629,7 +1655,7 @@
ТипЗнч(Значение),
ОжидаемыйТип,
Суффикс);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
КонецЕсли;
КонецПроцедуры
@@ -1689,62 +1715,62 @@
КонецФункции
-Процедура УстановитьОписаниеПроверки(ОписаниеПроверки)
+Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки)
- Контекст().ОписаниеПроверки = ОписаниеПроверки;
+ Контекст.ОписаниеПроверки = ОписаниеПроверки;
КонецПроцедуры
-Процедура СравнитьЗначения(ОжидаемоеЗначение, Реверс, Сообщение)
+Процедура СравнитьЗначения(Контекст, ОжидаемоеЗначение, Реверс, Сообщение)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецПроцедуры
-Процедура ПроверитьЗаполненность(Реверс)
+Процедура ПроверитьЗаполненность(Контекст, Реверс)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
ОбработатьРезультатСравнения(Результат, "является заполненным", Реверс, ПроверяемоеЗначение, Неопределено);
КонецПроцедуры
-Процедура ПроверитьСуществование(Реверс)
+Процедура ПроверитьСуществование(Контекст, Реверс)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = ПроверяемоеЗначение <> Null И ПроверяемоеЗначение <> Неопределено;
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
ОбработатьРезультатСравнения(Результат, "существует", Реверс, ПроверяемоеЗначение, Неопределено);
КонецПроцедуры
-Процедура ПроверитьСодержание(ОжидаемоеЗначение, Реверс)
+Процедура ПроверитьСодержание(Контекст, ОжидаемоеЗначение, Реверс)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если Результат = Неопределено Тогда
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
КонецЕсли;
Сообщение = СтрШаблон("содержит `%1`", ОжидаемоеЗначение);
@@ -1752,29 +1778,29 @@
КонецПроцедуры
-Функция ДлинаПроверяемогоЗначения()
+Функция ДлинаПроверяемогоЗначения(Контекст)
Попытка
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение);
Исключение
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке(), Контекст);
КонецПопытки;
Если ФактическаяДлина = Неопределено Тогда
ТекстОшибки = СтрШаблон("Тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
КонецЕсли;
Возврат ФактическаяДлина;
КонецФункции
-Процедура ПроверитьДлину(ОжидаемоеЗначение, Реверс)
+Процедура ПроверитьДлину(Контекст, ОжидаемоеЗначение, Реверс)
- ПроверитьТипЗначения(ОжидаемоеЗначение, "Число");
+ ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число");
- ФактическаяДлина = ДлинаПроверяемогоЗначения();
+ ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст);
Результат = ФактическаяДлина = ОжидаемоеЗначение;
Сообщение = СтрШаблон("имеет длину (размер) `%1`", ОжидаемоеЗначение);
@@ -1790,26 +1816,26 @@
КонецЕсли;
Если Не Результат Тогда
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, ОжидаемоеЗначение);
КонецЕсли;
КонецПроцедуры
-Процедура ПроверитьМежду(НачалоИнтервала, ОкончаниеИнтервала, ВключаяНачало, ВключаяОкончание)
+Процедура ПроверитьМежду(Контекст, НачалоИнтервала, ОкончаниеИнтервала, ВключаяНачало, ВключаяОкончание)
- ПроверяемоеЗначение = ПроверяемоеЗначение();
+ ПроверяемоеЗначение = ПроверяемоеЗначение(Контекст);
ТипЗначения = ТипЗнч(ПроверяемоеЗначение);
Суффикс = ". Он должен совпадать с типом проверяемого значения";
- ПроверитьТипЗначения(НачалоИнтервала, ТипЗначения, "левой границы интервала", , Суффикс);
- ПроверитьТипЗначения(ОкончаниеИнтервала, ТипЗначения, "правой границы интервала", , Суффикс);
+ ПроверитьТипЗначения(Контекст, НачалоИнтервала, ТипЗначения, "левой границы интервала", , Суффикс);
+ ПроверитьТипЗначения(Контекст, ОкончаниеИнтервала, ТипЗначения, "правой границы интервала", , Суффикс);
Если НачалоИнтервала > ОкончаниеИнтервала Тогда
ТекстОшибки = СтрШаблон("Не корректно задан интервал, левая граница (%1) не должна быть больше правой (%2)",
НачалоИнтервала,
ОкончаниеИнтервала);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
КонецЕсли;
Результат = Истина;
@@ -1832,16 +1858,16 @@
ОкончаниеИнтервала,
?(ВключаяОкончание, "]", ")"),);
Сообщение = "находится в интервале " + Интервал;
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, Интервал);
+ СгенерироватьОшибкуСравнения(Сообщение, ПроверяемоеЗначение, Интервал);
КонецЕсли;
КонецПроцедуры
-Процедура ПроверитьЗаполненностьЗначения(Значение, Описание)
+Процедура ПроверитьЗаполненностьЗначения(Контекст, Значение, Описание)
Если НЕ ЗначениеЗаполнено(Значение) Тогда
ТекстОшибки = СтрШаблон("Ожидали, что %1 заполнено, но это не так", Описание);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ТекстОшибки, Контекст);
КонецЕсли;
КонецПроцедуры
@@ -1868,19 +1894,19 @@
Если Не ЭтоСоответствие И (Не СтруктураОбъекта.Свойство(Ключ) Или СтруктураОбъекта[Ключ] = ЗначениеОтсутствующегоРеквизита) Тогда
Сообщение = СтрШаблон("не содержат свойство '%1'", Ключ);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон);
+ СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон);
КонецЕсли;
Если НЕ ЗначенияРавны(Объект[Ключ], ОбъектЭталон[Ключ]) Тогда
Сообщение = СтрШаблон("имеет свойство '%1', которое равно `%2`", Ключ, ОбъектЭталон[Ключ]);
- ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон);
+ СгенерироватьОшибкуСравнения(Сообщение, СтруктураОбъекта, ОбъектЭталон);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
-Процедура ОбработатьРезультатПроверки(Результат)
+Процедура ОбработатьРезультатПроверки(Контекст, Результат)
Если НЕ Результат.Успешно Тогда
@@ -1892,7 +1918,7 @@
ТекстИсключения = СтрШаблон("%1 <%2>", ЮТРегистрацияОшибок.ПрефиксОшибкиУтверждений(), Сообщение.Сообщение);
ВызватьИсключение ТекстИсключения;
Иначе
- ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение);
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(Сообщение, Контекст);
КонецЕсли;
КонецЦикла;
@@ -1913,4 +1939,25 @@
КонецФункции
+// Вызывает ошибку проверки утверждений
+// При этом сохраняет в контекст состояние, для дальнейшей обработки
+//
+// Параметры:
+// Сообщение - Строка
+// ПроверяемоеЗначение - Произвольный
+// ОбъектПроверки - Строка - Человекочитаемое описание проверяемого значения
+Процедура СгенерироватьОшибкуУтверждения(Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение")
+
+ Контекст = Контекст();
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, Сообщение, ПроверяемоеЗначение, ОбъектПроверки);
+
+КонецПроцедуры
+
+Процедура СгенерироватьОшибкуСравнения(Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки = "проверяемое значение")
+
+ Контекст = Контекст();
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(Контекст, Сообщение, ФактическоеЗначение, ОжидаемоеЗначение, ОбъектПроверки);
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
new file mode 100644
index 00000000..c07f56a4
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl
@@ -0,0 +1,173 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+///////////////////////////////////////////////////////////////////
+// Предоставляет методы для формирования утверждений проверяющих данные информационной базы.
+//
+// Например:
+//
+// ```bsl
+// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
+// .СодержитЗаписи();
+// ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
+// .СодержитЗаписи(ЮТест.Предикат()
+// .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта));
+// ```
+///////////////////////////////////////////////////////////////////
+#Область ПрограммныйИнтерфейс
+
+// Инициализирует модуль для проверки утверждений.
+//
+// * Запоминает/устанавливает имя проверяемой таблицы
+// * Запоминает описание.
+//
+// Параметры:
+// ИмяТаблицы - Строка - Имя проверяемой таблицы, например, Справочник.Товары, РегистрНакопления.ТоварыНаСкладах
+// ОписаниеПроверки - Строка - Описание проверки, которое будет выведено при возникновении ошибки
+//
+// Возвращаемое значение:
+// ОбщийМодуль - Этот модуль для замыкания
+// Примеры
+// ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары").СодержитЗаписи();
+//
+Функция ЧтоТаблица(ИмяТаблицы, ОписаниеПроверки = "") Экспорт
+
+ Контекст = НовыйКонтекст(ИмяТаблицы);
+ Контекст.ПрефиксОшибки = ОписаниеПроверки;
+
+ ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст);
+
+ Возврат ЮТУтвержденияИБ;
+
+КонецФункции
+
+// Проверяет наличие в таблице записей удовлетворяющих условиям
+//
+// Параметры:
+// Предикат - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
+// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
+// - см. ЮТФабрика.ВыражениеПредиката
+// - Неопределено - Проверит, что таблица не пустая
+// ОписаниеУтверждения - Строка - Описание конкретного утверждения
+//
+// Возвращаемое значение:
+// ОбщийМодуль - Этот модуль для замыкания
+Функция СодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт
+
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения);
+ Результат = ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат);
+
+ Если Не Результат Тогда
+ Контекст = Контекст();
+ СгенерироватьОшибкуУтверждения(Контекст, Предикат, "содержит записи");
+ КонецЕсли;
+
+ Возврат ЮТУтвержденияИБ;
+
+КонецФункции
+
+// Проверяет отсутствие в таблице записей удовлетворяющих условиям
+//
+// Параметры:
+// Предикат - ОбщийМодуль - Условия сформированные с использованием см. ЮТест.Предикат
+// - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
+// - см. ЮТФабрика.ВыражениеПредиката
+// - Неопределено - Проверит, что таблица пустая
+// ОписаниеУтверждения - Строка - Описание конкретного утверждения
+//
+// Возвращаемое значение:
+// ОбщийМодуль - Этот модуль для замыкания
+Функция НеСодержитЗаписи(Знач Предикат = Неопределено, Знач ОписаниеУтверждения = Неопределено) Экспорт
+
+ Контекст = Контекст();
+ УстановитьОписаниеПроверки(Контекст, ОписаниеУтверждения);
+ Результат = НЕ ЮТЗапросы.ТаблицаСодержитЗаписи(Контекст.ОбъектПроверки.Значение, Предикат);
+
+ Если Не Результат Тогда
+ Контекст = Контекст();
+ СгенерироватьОшибкуУтверждения(Контекст, Предикат, "не содержит записи");
+ КонецЕсли;
+
+ Возврат ЮТУтвержденияИБ;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#Область Контекст
+
+// Контекст.
+//
+// Возвращаемое значение:
+// см. НовыйКонтекст
+Функция Контекст()
+
+ //@skip-check constructor-function-return-section
+ Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекста());
+
+КонецФункции
+
+// Инициализирует контекст
+//
+// Параметры:
+// ИмяТаблицы - Строка
+//
+// Возвращаемое значение:
+// см. ЮТФабрика.ОписаниеПроверки
+Функция НовыйКонтекст(ИмяТаблицы)
+
+ Контекст = ЮТФабрика.ОписаниеПроверки(ИмяТаблицы);
+
+ Возврат Контекст;
+
+КонецФункции
+
+Функция ИмяКонтекста()
+
+ Возврат "КонтекстУтвержденияИБ";
+
+КонецФункции
+
+#КонецОбласти
+
+Процедура СгенерироватьОшибкуУтверждения(Контекст, Предикат, Сообщение)
+
+ Если Предикат <> Неопределено Тогда
+ ПредставлениеПредиката = ЮТПредикатыКлиентСервер.ПредставлениеПредикатов(Предикат, ", ", "`%1`");
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ПредставлениеПредиката) Тогда
+ СообщениеОбОшибке = СтрШаблон("%1 с %2", Сообщение, ПредставлениеПредиката);
+ Иначе
+ СообщениеОбОшибке = Сообщение;
+ КонецЕсли;
+
+ ЮТРегистрацияОшибок.СгенерироватьОшибкуУтверждения(Контекст, СообщениеОбОшибке, Неопределено, "проверяемая таблица");
+
+КонецПроцедуры
+
+Процедура УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки)
+
+ Контекст.ОписаниеПроверки = ОписаниеПроверки;
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo
new file mode 100644
index 00000000..c13cfd3b
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/ЮТУтвержденияИБ.mdo
@@ -0,0 +1,11 @@
+
+
+ ЮТУтвержденияИБ
+
+ ru
+ Утверждения ИБ
+
+ true
+ true
+ true
+
diff --git a/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
index 163e53be..7c1f84ea 100644
--- a/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
@@ -540,6 +540,50 @@
КонецФункции
+// Формирует описание проверяемого значения.
+// Используется в утверждения для формирования дружелюбного сообщения об ошибке.
+//
+// Параметры:
+// ПроверяемоеЗначение - Произвольный - Проверяемое значение
+//
+// Возвращаемое значение:
+// Структура - Описание проверяемого значения:
+// * Значение - Произвольный
+// * Представление - Строка - Представление объекта
+// - Неопределено - Если не указано тогда используется платформенное предсталение (`Строка(Значение)`)
+// * ИмяСвойства - Строка, Число, Неопределено - Имя проверяемого реквизита, индекса
+Функция ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение) Экспорт
+
+ Описание = Новый Структура();
+ Описание.Вставить("Значение", ПроверяемоеЗначение);
+ Описание.Вставить("Представление", Неопределено);
+ Описание.Вставить("ИмяСвойства", Неопределено);
+
+ Возврат Описание;
+
+КонецФункции
+
+// Описание проверки.
+//
+// Параметры:
+// ПроверяемоеЗначение - Произвольный
+//
+// Возвращаемое значение:
+// Структура - Описание проверки:
+// * ОбъектПроверки - см. ОписаниеПроверяемогоЗначения
+// * ПрефиксОшибки - Строка, Неопределено -
+// * ОписаниеПроверки - Строка, Неопределено -
+Функция ОписаниеПроверки(ПроверяемоеЗначение) Экспорт
+
+ Описание = Новый Структура();
+ Описание.Вставить("ОбъектПроверки", ОписаниеПроверяемогоЗначения(ПроверяемоеЗначение));
+ Описание.Вставить("ПрефиксОшибки", Неопределено);
+ Описание.Вставить("ОписаниеПроверки", Неопределено);
+
+ Возврат Описание;
+
+КонецФункции
+
#КонецОбласти
#Область КонструкторыКонтекстов
diff --git a/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl
index 98458f1b..6453e191 100644
--- a/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТест/Module.bsl
@@ -24,7 +24,7 @@
// Возвращает API формирования утверждения для проверки теста.
//
// Параметры:
-// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение
+// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение
// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки
//
// Возвращаемое значение:
@@ -35,6 +35,20 @@
КонецФункции
+// Возвращает API формирования утверждения для проверки данных базы.
+//
+// Параметры:
+// ИмяТаблицы - Произвольный - Имя таблицы базы, например, `Справочник.Пользователи`, `Документ.ПКО`, `РегистрСведений.ИнформацияОбОшибках`
+// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки
+//
+// Возвращаемое значение:
+// ОбщийМодуль - Утверждения для проверки данных базы, см. ЮТУтвержденияИБ
+Функция ОжидаетЧтоТаблицаБазы(ИмяТаблицы, Сообщение = "") Экспорт
+
+ Возврат ЮТУтвержденияИБ.ЧтоТаблица(ИмяТаблицы, Сообщение);
+
+КонецФункции
+
// Возвращает API для работы с тестовыми данными.
//
// Возвращаемое значение:
@@ -115,6 +129,7 @@
// Неопределено - Если метод вызывается за рамками тестового набора
Функция КонтекстТестовогоНабора() Экспорт
+ //@skip-check constructor-function-return-section
Возврат ЮТКонтекст.КонтекстНабора();
КонецФункции
@@ -126,8 +141,8 @@
//
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`.
// Возвращаемое значение:
-// Структура - Контекст тестового модуля
-// Неопределено - Если метод вызывается за рамками тестового модуля
+// - Структура - Контекст тестового модуля
+// - Неопределено - Если метод вызывается за рамками тестового модуля
Функция КонтекстМодуля() Экспорт
Возврат ЮТКонтекст.КонтекстМодуля();
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index 595b2d20..8dc1a06e 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -40,6 +40,9 @@
CommonModule.МокитоПроверки
CommonModule.МокитоСлужебный
CommonModule.ЮТест
+ CommonModule.ЮТЗапросы
+ CommonModule.ЮТЗапросыВызовСервера
+ CommonModule.ЮТЗапросыКлиентСервер
CommonModule.ЮТИсполнительКлиент
CommonModule.ЮТИсполнительКлиентСервер
CommonModule.ЮТИсполнительСервер
@@ -74,6 +77,7 @@
CommonModule.ЮТТестовыеДанныеСлужебный
CommonModule.ЮТТесты
CommonModule.ЮТУтверждения
+ CommonModule.ЮТУтвержденияИБ
CommonModule.ЮТФабрика
CommonModule.ЮТФайлы
CommonModule.ЮТФильтрация
diff --git a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo
index 5d1b269d..f3e464bc 100644
--- a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo
+++ b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo
@@ -14,6 +14,10 @@
CommonModule.МокитоПроверки
CommonModule.МокитоСлужебный
CommonModule.ЮТест
+ CommonModule.ЮТЗапросы
+ CommonModule.ЮТЗапросыВызовСервера
+ CommonModule.ЮТЗапросыКлиентСервер
+ CommonModule.ЮТИсполнительКлиент
CommonModule.ЮТИсполнительКлиентСервер
CommonModule.ЮТИсполнительСервер
CommonModule.ЮТКонструкторВариантов
@@ -27,6 +31,7 @@
CommonModule.ЮТМетаданные
CommonModule.ЮТМетаданныеПовтИсп
CommonModule.ЮТМетаданныеСервер
+ CommonModule.ЮТНастройкиВыполнения
CommonModule.ЮТОбщий
CommonModule.ЮТОбщийВызовСервера
CommonModule.ЮТОтчет
@@ -34,15 +39,21 @@
CommonModule.ЮТОтчетJUnit
CommonModule.ЮТПараметрыЗапуска
CommonModule.ЮТПовторногоИспользования
+ CommonModule.ЮТПредикаты
+ CommonModule.ЮТПредикатыКлиентСервер
CommonModule.ЮТРасширения
CommonModule.ЮТРегистрацияОшибок
CommonModule.ЮТСобытия
+ CommonModule.ЮТСравнениеКлиентСервер
+ CommonModule.ЮТСравнениеСервер
CommonModule.ЮТТестовыеДанные
CommonModule.ЮТТестовыеДанныеВызовСервера
CommonModule.ЮТТестовыеДанныеСлужебный
CommonModule.ЮТТесты
CommonModule.ЮТУтверждения
+ CommonModule.ЮТУтвержденияИБ
CommonModule.ЮТФабрика
+ CommonModule.ЮТФайлы
CommonModule.ЮТФильтрация
CommonModule.ЮТЧитатель
CommonModule.ЮТЧитательСервер
diff --git a/tests/.settings/com.e1c.v8codestyle.bsl.prefs b/tests/.settings/com.e1c.v8codestyle.bsl.prefs
new file mode 100644
index 00000000..67c99dfb
--- /dev/null
+++ b/tests/.settings/com.e1c.v8codestyle.bsl.prefs
@@ -0,0 +1,3 @@
+addModuleStrictTypesAnnotation=false
+createModuleStructure=true
+eclipse.preferences.version=1
diff --git a/tests/.settings/templates/common_module.bsl b/tests/.settings/templates/common_module.bsl
new file mode 100644
index 00000000..daedcb22
--- /dev/null
+++ b/tests/.settings/templates/common_module.bsl
@@ -0,0 +1,58 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты
+ .ДобавитьТест("ТестовыйМетод")
+ .ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
+ ;
+
+КонецПроцедуры
+
+#Область События
+
+Процедура ПередВсемиТестами() Экспорт
+
+КонецПроцедуры
+
+Процедура ПередКаждымТестом() Экспорт
+
+КонецПроцедуры
+
+Процедура ПослеКаждогоТеста() Экспорт
+
+КонецПроцедуры
+
+Процедура ПослеВсехТестов() Экспорт
+
+КонецПроцедуры
+
+#КонецОбласти
+
+Процедура ТестовыйМетод() Экспорт
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+#КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
new file mode 100644
index 00000000..6f549c6e
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
@@ -0,0 +1,156 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты.ВТранзакции()
+ .ДобавитьТест("ЗначенияРеквизитов")
+ .ДобавитьТест("ЗначениеРеквизита")
+ .ДобавитьТест("ТаблицаСодержитЗаписи")
+ .ДобавитьТест("РезультатЗапроса")
+ .ДобавитьТест("РезультатПустой")
+ ;
+
+КонецПроцедуры
+
+Процедура ЗначенияРеквизитов() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Штрихкод")
+ .Фикция("Поставщик");
+ Данные = Конструктор.ДанныеОбъекта();
+ Ссылка = Конструктор.Записать();
+
+ ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитов(Ссылка, "Наименование");
+ ЮТест.ОжидаетЧто(ДанныеСсылки)
+ .ИмеетТип("Структура")
+ .Заполнено()
+ .Свойство("Наименование").Равно(Данные.Наименование);
+
+ ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитов(Ссылка, "Штрихкод, Поставщик");
+ ЮТест.ОжидаетЧто(ДанныеСсылки)
+ .ИмеетТип("Структура")
+ .Заполнено()
+ .Свойство("Штрихкод").Равно(Данные.Штрихкод)
+ .Свойство("Поставщик").Равно(Данные.Поставщик);
+
+ ДанныеСсылки = ЮТЗапросы.ЗначенияРеквизитов(ПредопределенноеЗначение("Справочник.Товары.ПустаяСсылка"), "Код, Поставщик");
+ ЮТест.ОжидаетЧто(ДанныеСсылки)
+ .ИмеетТип("Структура")
+ .Заполнено()
+ .Свойство("Код").Равно(Неопределено)
+ .Свойство("Поставщик").Равно(Неопределено);
+
+КонецПроцедуры
+
+Процедура ЗначениеРеквизита() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+ Данные = Конструктор.ДанныеОбъекта();
+ Ссылка = Конструктор.Записать();
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизита(Ссылка, "Наименование"))
+ .ИмеетТип("Строка")
+ .Заполнено()
+ .Равно(Данные.Наименование);
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизита(Ссылка, "Поставщик"))
+ .Равно(Данные.Поставщик);
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизита(Ссылка, "Наименование, Поставщик"))
+ .Равно(Данные.Наименование);
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ЗначениеРеквизита(ПредопределенноеЗначение("Справочник.Товары.ПустаяСсылка"), "Наименование"))
+ .Равно(Неопределено);
+
+КонецПроцедуры
+
+Процедура ТаблицаСодержитЗаписи() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+ Конструктор.Записать();
+ ДанныеСправочника = Конструктор.ДанныеОбъекта();
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ТаблицаСодержитЗаписи("Справочник.Товары")).ЭтоИстина();
+ ЮТест.ОжидаетЧто(ЮТЗапросы.ТаблицаСодержитЗаписи("Справочник.МобильныеУстройства")).ЭтоЛожь();
+
+ ЮТест.ОжидаетЧто(
+ ЮТЗапросы.ТаблицаСодержитЗаписи("Справочник.Товары",
+ ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(ДанныеСправочника.Наименование)))
+ .ЭтоИстина();
+
+ ЮТест.ОжидаетЧто(
+ ЮТЗапросы.ТаблицаСодержитЗаписи("Справочник.Товары",
+ ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(1)))
+ .ЭтоЛожь();
+
+КонецПроцедуры
+
+Процедура РезультатЗапроса() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+ Ссылка = Конструктор.Записать();
+ ДанныеСправочника = Конструктор.ДанныеОбъекта();
+
+ ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса();
+ ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары";
+ ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка");
+ ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления");
+ ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка);
+ ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Наименование");
+ ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Число", "1+1");
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса))
+ .ИмеетДлину(1)
+ .Свойство("[0].Наименование").Равно(ДанныеСправочника.Наименование)
+ .Свойство("[0].Число").Равно(2);
+
+КонецПроцедуры
+
+Процедура РезультатПустой() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+ Ссылка = Конструктор.Записать();
+ ДанныеСправочника = Конструктор.ДанныеОбъекта();
+
+ ОписаниеЗапроса = ЮТЗапросы.ОписаниеЗапроса();
+ ОписаниеЗапроса.ИмяТаблицы = "Справочник.Товары";
+ ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка");
+ ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка);
+
+ ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоЛожь();
+
+ ОписаниеЗапроса.Условия.Добавить("ПометкаУдаления");
+ ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатПустой(ОписаниеЗапроса)).ЭтоИстина();
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo b/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo
new file mode 100644
index 00000000..47e37a97
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/ОМ_ЮТЗапросы.mdo
@@ -0,0 +1,11 @@
+
+
+ ОМ_ЮТЗапросы
+
+ ru
+ О м ЮТЗапросы
+
+ true
+ true
+ true
+
diff --git a/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl b/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
index fac28cd0..2e5ad8c2 100644
--- a/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТУтверждения/Module.bsl
@@ -96,21 +96,21 @@
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено")
- .Свойство("ИмяСвойства").Равно(Неопределено);
+ .Свойство("ОбъектПроверки.ИмяСвойства").Равно(Неопределено);
ЮТУтверждения.Что(Объект)
.Свойство("Примитив");
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
ЮТУтверждения.Что(ДанныеКонтекста, "Свойство установлено")
- .Свойство("ИмяСвойства").Равно("Примитив");
+ .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Примитив");
ЮТУтверждения.Что(Объект)
.Свойство("Объект.Первый");
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
ЮТУтверждения.Что(ДанныеКонтекста, "Составное свойство")
- .Свойство("ИмяСвойства").Равно("Объект.Первый");
+ .Свойство("ОбъектПроверки.ИмяСвойства").Равно("Объект.Первый");
// Негативные тесты
Попытка
diff --git a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl
new file mode 100644
index 00000000..80153394
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl
@@ -0,0 +1,183 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// 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.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Процедура ИсполняемыеСценарии() Экспорт
+
+ ЮТТесты.ВТранзакции()
+ .ДобавитьТест("СодержитЗаписи")
+ .ДобавитьТест("НеСодержитЗаписи")
+ .ДобавитьТест("СообщенияОбОшибках")
+ ;
+
+КонецПроцедуры
+
+Процедура СодержитЗаписи() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+ Конструктор.Записать();
+ ДанныеСправочника = Конструктор.ДанныеОбъекта();
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
+ .Фикция("Валюта")
+ .Фикция("Период")
+ .Фикция("Курс");
+ ДанныеРегистра = Конструктор.ДанныеОбъекта();
+ Конструктор.Записать();
+
+ Конструктор
+ .Фикция("Период")
+ .Фикция("Курс")
+ .Записать();
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
+ .СодержитЗаписи();
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(ДанныеСправочника.Наименование));
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик));
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(ДанныеСправочника.Наименование)
+ .Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик));
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
+ .СодержитЗаписи();
+
+ ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Валюта").Равно(ДанныеРегистра.Валюта));
+
+КонецПроцедуры
+
+Процедура НеСодержитЗаписи() Экспорт
+
+ Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Фикция("Наименование")
+ .Фикция("Поставщик");
+
+ ИмяТаблицы = "Справочник.Товары";
+
+ ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы)
+ .НеСодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(Конструктор.ДанныеОбъекта().Наименование));
+
+ ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы)
+ .НеСодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Поставщик").Равно(Конструктор.ДанныеОбъекта().Поставщик));
+
+ ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы)
+ .НеСодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(Конструктор.ДанныеОбъекта().Наименование)
+ .Реквизит("Поставщик").Равно(Конструктор.ДанныеОбъекта().Поставщик));
+ Конструктор.Записать();
+
+ ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы)
+ .СодержитЗаписи(ЮТест.Предикат()
+ .Реквизит("Поставщик").Равно(Конструктор.ДанныеОбъекта().Поставщик));
+
+КонецПроцедуры
+
+Процедура СообщенияОбОшибках() Экспорт
+
+ МетодНеСодержитЗаписи = "НеСодержитЗаписи";
+ МетодСодержитЗаписи = "СодержитЗаписи";
+ ТаблицаСправочник = "Справочник.Товары";
+ ТаблицаБезЗаписей = "Справочник.МобильныеУстройства";
+
+ Наименование = ЮТест.Данные().СлучайнаяСтрока();
+ ПредикатНаименование = ЮТест.Предикат()
+ .Реквизит("Наименование").Равно(Наименование)
+ .Получить();
+
+ ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+ .Установить("Наименование", Наименование)
+ .Записать();
+ Префикс = "Ожидали, что проверяемая таблица ";
+ Варианты = ЮТест.Варианты("ИмяТаблицы, Метод, Предикат, ОжидаемоеСообщение, ОписаниеПроверки, ОписаниеУтверждения")
+
+ .Добавить(ТаблицаСправочник, МетодНеСодержитЗаписи, Неопределено,
+ Префикс + "`Справочник.Товары` не содержит записи, но это не так.")
+
+ .Добавить(ТаблицаСправочник, МетодНеСодержитЗаписи, ПредикатНаименование,
+ СтрШаблон("%1`Справочник.Товары` не содержит записи с `Наименование` равно `%2`, но это не так.", Префикс, Наименование))
+
+ .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено,
+ Префикс + "`Справочник.МобильныеУстройства` содержит записи, но это не так.")
+
+ .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено,
+ СтрШаблон("Описание проверки: %1`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), "Описание проверки")
+
+ .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено,
+ СтрШаблон("Описание проверки: %1`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), , "Описание проверки")
+
+ .Добавить(ТаблицаБезЗаписей, МетодСодержитЗаписи, Неопределено,
+ СтрШаблон("Описание проверки: %1`Справочник.МобильныеУстройства` содержит записи, но это не так.", СтрочнаяПерваяБуква(Префикс)), "Описание", "проверки")
+ ;
+
+ Индекс = 1;
+
+ Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
+
+ ЮТест.ОжидаетЧтоТаблицаБазы(Вариант.ИмяТаблицы, Вариант.ОписаниеПроверки);
+
+ Ошибка = Неопределено;
+ Попытка
+ Если Вариант.Метод = МетодНеСодержитЗаписи Тогда
+ ЮТУтвержденияИБ.НеСодержитЗаписи(Вариант.Предикат, Вариант.ОписаниеУтверждения);
+ ИначеЕсли Вариант.Метод = МетодСодержитЗаписи Тогда
+ ЮТУтвержденияИБ.СодержитЗаписи(Вариант.Предикат, Вариант.ОписаниеУтверждения);
+ КонецЕсли;
+ Исключение
+ Ошибка = ИнформацияОбОшибке();
+ КонецПопытки;
+
+ ПроверитьОшибкуУтверждения(Индекс, Ошибка, Вариант.ОжидаемоеСообщение);
+ Индекс = Индекс + 1;
+
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Процедура ПроверитьОшибкуУтверждения(Индекс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт
+
+ ЮТест.ОжидаетЧто(ИнформацияОбОшибке, "Вариант " + Индекс)
+ .ЭтоНеНеопределено()
+ .Свойство("Описание")
+ .НачинаетсяС("[Failed]")
+ .Содержит(ОжидаемоеОписание);
+
+КонецПроцедуры
+
+Функция СтрочнаяПерваяБуква(Строка)
+ Возврат НРег(Лев(Строка, 1)) + Сред(Строка, 2);
+КонецФункции
+
+#КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo
new file mode 100644
index 00000000..c55cd336
--- /dev/null
+++ b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/ОМ_ЮТУтвержденияИБ.mdo
@@ -0,0 +1,11 @@
+
+
+ ОМ_ЮТУтвержденияИБ
+
+ ru
+ ЮТУтверждения ИБ
+
+ true
+ true
+ true
+
diff --git a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
index af6d5805..fb55ef37 100644
--- a/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТЧитатель/Module.bsl
@@ -93,7 +93,7 @@
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
- .ИмеетДлину(15);
+ .ИмеетДлину(17);
КонецПроцедуры
diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo
index 9c023b60..6cff90e2 100644
--- a/tests/src/Configuration/Configuration.mdo
+++ b/tests/src/Configuration/Configuration.mdo
@@ -29,6 +29,7 @@
CommonModule.ОМ_Общий
CommonModule.ОМ_ОшибкаЗагрузкиСценариев
CommonModule.ОМ_ЮТест
+ CommonModule.ОМ_ЮТЗапросы
CommonModule.ОМ_ЮТКонструкторТестовыхДанных
CommonModule.ОМ_ЮТПредикатыКлиентСервер
CommonModule.ОМ_ЮТСравнениеКлиентСервер
@@ -36,6 +37,7 @@
CommonModule.ОМ_ЮТТестовыеДанныеСлужебный
CommonModule.ОМ_ЮТТесты
CommonModule.ОМ_ЮТУтверждения
+ CommonModule.ОМ_ЮТУтвержденияИБ
CommonModule.ОМ_ЮТФильтрация
CommonModule.ОМ_ЮТЧитатель
CommonModule.ПомощникТестированияВызовСервера