mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2024-12-03 08:45:31 +02:00
Рефакторинг придикатов
This commit is contained in:
parent
a3add5b9f7
commit
ed1244a3c4
@ -40,7 +40,7 @@
|
||||
Предикаты = НаборПредикатов(Предикаты);
|
||||
Для Каждого Выражение Из Предикаты Цикл
|
||||
|
||||
ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
ЮТСравнениеКлиентСервер.ПроверитьВыражениеПредиката(Значение, Выражение, Результат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Если НЕ Результат.Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
@ -193,10 +193,12 @@
|
||||
ТекстПроверяемоеЗначение = "проверяемое значение",
|
||||
ПредставлениеПроверяемогоЗначения = Неопределено) Экспорт
|
||||
|
||||
Возврат Новый Структура("ОписаниеПроверки, ТекстПроверяемоеЗначение, ПредставлениеПроверяемогоЗначения",
|
||||
ОписаниеПроверки,
|
||||
ТекстПроверяемоеЗначение,
|
||||
ПредставлениеПроверяемогоЗначения);
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("ОписаниеПроверки", ОписаниеПроверки);
|
||||
Параметры.Вставить("ТекстПроверяемоеЗначение", ТекстПроверяемоеЗначение);
|
||||
Параметры.Вставить("ПредставлениеПроверяемогоЗначения", ПредставлениеПроверяемогоЗначения);
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -204,110 +206,6 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Вычислить выражение предиката.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ЮТСравнениеКлиентСервер.ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3);
|
||||
Иначе
|
||||
ВидСравненияВыражения = Выражение.ВидСравнения;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Неопределено;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда
|
||||
|
||||
Результат = ЮТСравнениеКлиентСервер.ЗначенияРавны(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, ПараметрыСравнения);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда
|
||||
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение)
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда
|
||||
|
||||
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда
|
||||
|
||||
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, Истина, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда
|
||||
|
||||
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда
|
||||
|
||||
Результат = ЮТСравнениеКлиентСервер.ПроверитьНеравенство(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение, , Истина, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьТипПараметра(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьНаличиеСвойства(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьДлину(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьСодержит(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда
|
||||
|
||||
ЮТСравнениеКлиентСервер.ПроверитьСоответствуетШаблону(СтатусПроверки, ПараметрыПроверки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения);
|
||||
|
||||
КонецЕсли;
|
||||
// BSLLS:CognitiveComplexity-on
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЭтоПредикатОбщийМодуль(ТипПредикатов, Предикаты)
|
||||
|
||||
Возврат ТипПредикатов = Тип("ОбщийМодуль") И Предикаты = ЮТПредикаты;
|
||||
@ -328,42 +226,4 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
Если Результат Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ШаблонСообщения = ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыПроверки - см. ПараметрыПроверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный
|
||||
Функция ПроверяемоеЗначение(ПараметрыПроверки)
|
||||
|
||||
Если ПараметрыПроверки.ОбъектПроверки.ИмяСвойства <> Неопределено Тогда
|
||||
Значение = ЮТСравнениеКлиентСервер.ЗначениеСвойства(ПараметрыПроверки.ОбъектПроверки.Значение, ПараметрыПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
Значение = ПараметрыПроверки.ОбъектПроверки.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Значение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -66,7 +66,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
|
@ -112,144 +112,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьТипПараметра(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение));
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьНаличиеСвойства(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
Значение = ПроверяемоеЗначение;
|
||||
|
||||
ПутьКСвойству = ЧастиПути(ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ПройденныйПуть = Новый Массив();
|
||||
|
||||
Для Каждого Часть Из ПутьКСвойству Цикл
|
||||
|
||||
ПройденныйПуть.Добавить(Часть);
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
Значение = Значение.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть);
|
||||
Исключение
|
||||
ЕстьСвойство = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Если ЕстьСвойство Тогда
|
||||
Значение = Значение[Часть];
|
||||
Иначе
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Успешно = ЕстьСвойство;
|
||||
Реверс(Успешно, ПараметрыПроверки);
|
||||
Если НЕ Успешно Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьЗаполненность(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение);
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьДлину(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Число") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение);
|
||||
|
||||
Если ФактическаяДлина = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическаяДлина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСодержит(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Результат = НайтиЗначение(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСоответствуетШаблону(РезультатПроверки, ПараметрыПроверки) Экспорт
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ПараметрыПроверки.ОжидаемоеЗначение, "Строка") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
Если СоответствуетШаблону = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СоответствуетШаблону;
|
||||
Реверс(Результат, ПараметрыПроверки);
|
||||
|
||||
Если НЕ Результат Тогда
|
||||
ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
@ -511,21 +373,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры проверки.
|
||||
//
|
||||
// Параметры:
|
||||
@ -665,4 +512,229 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область РеализацияПредикатор
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Экспорт
|
||||
|
||||
Попытка
|
||||
ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
Исключение
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(СтатусПроверки, ИнформацияОбОшибке());
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Вычислить выражение предиката.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Произвольный - Значение
|
||||
// Выражение - см. ЮТФабрика.ВыражениеПредиката
|
||||
// СтатусПроверки - см. ЮТФабрика.ОписаниеРезультатаПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
ВидыСравнения = ЮТПредикаты.Выражения();
|
||||
|
||||
ПараметрыПроверки = ПараметрыПроверки(Выражение.ВидСравнения, Значение, Выражение.ИмяРеквизита, Выражение.Значение, Ложь);
|
||||
|
||||
ПараметрыПроверки.ОписаниеПроверки = ПараметрыСообщенийОбОшибке.ОписаниеПроверки;
|
||||
ПараметрыПроверки.ТекстПроверяемоеЗначение = ПараметрыСообщенийОбОшибке.ТекстПроверяемоеЗначение;
|
||||
ПараметрыПроверки.ОбъектПроверки.Представление = ПараметрыСообщенийОбОшибке.ПредставлениеПроверяемогоЗначения;
|
||||
|
||||
Если СтрНачинаетсяС(Выражение.ВидСравнения, "Не") И ВидыСравнения.Свойство(Сред(Выражение.ВидСравнения, 3)) Тогда
|
||||
ПараметрыПроверки.Реверс = Истина;
|
||||
ВидСравненияВыражения = Сред(Выражение.ВидСравнения, 3);
|
||||
Иначе
|
||||
ВидСравненияВыражения = Выражение.ВидСравнения;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Неопределено;
|
||||
|
||||
ОжидаемоеЗначение = Выражение.Значение;
|
||||
ПроверяемоеЗначение = ПроверяемоеЗначение(ПараметрыПроверки);
|
||||
|
||||
Если ВидСравненияВыражения = ВидыСравнения.Равно Тогда
|
||||
|
||||
Результат = ЗначенияРавны(ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыСравнения);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Заполнено Тогда
|
||||
|
||||
Результат = ЗначениеЗаполнено(ПроверяемоеЗначение)
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Больше Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.БольшеРавно Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, Истина, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Меньше Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.МеньшеРавно Тогда
|
||||
|
||||
Результат = ПроверитьНеравенство(ПроверяемоеЗначение, ОжидаемоеЗначение, , Истина, Истина);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетТип Тогда
|
||||
|
||||
ПроверитьТипПараметра(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетСвойство Тогда
|
||||
|
||||
Результат = ПроверитьНаличиеСвойства(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.ИмеетДлину Тогда
|
||||
|
||||
Результат = ПроверитьДлину(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.Содержит Тогда
|
||||
|
||||
Результат = ПроверитьСодержит(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
ИначеЕсли ВидСравненияВыражения = ВидыСравнения.СодержитСтрокуПоШаблону Тогда
|
||||
|
||||
Результат = ПроверитьСоответствуетШаблону(СтатусПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение СтрШаблон("Неизвестное выражение предиката `%1`", Выражение.ВидСравнения);
|
||||
|
||||
КонецЕсли;
|
||||
// BSLLS:CognitiveComplexity-on
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, СтатусПроверки, ПараметрыПроверки, ПроверяемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ФактическоеЗначение)
|
||||
|
||||
Если Результат Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
ТекстОшибки,
|
||||
ФактическоеЗначение,
|
||||
ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьТипПараметра(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, Новый ОписаниеТипов("ОписаниеТипов, Тип, Строка")) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ЮТПроверкиСлужебный.ТипЗначенияСоответствует(ПроверяемоеЗначение, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
Если ПараметрыПроверки.Реверс Тогда
|
||||
Результат = НЕ Результат;
|
||||
КонецЕсли;
|
||||
|
||||
ОбработатьРезультатСравнения(Результат, РезультатПроверки, ПараметрыПроверки, ТипЗнч(ПроверяемоеЗначение));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПроверитьНаличиеСвойства(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
Значение = ПроверяемоеЗначение;
|
||||
|
||||
ПутьКСвойству = ЧастиПути(ОжидаемоеЗначение);
|
||||
|
||||
ПройденныйПуть = Новый Массив();
|
||||
|
||||
Для Каждого Часть Из ПутьКСвойству Цикл
|
||||
|
||||
ПройденныйПуть.Добавить(Часть);
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
|
||||
Значение = Значение.Получить();
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть);
|
||||
Исключение
|
||||
ЕстьСвойство = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Если ЕстьСвойство Тогда
|
||||
Значение = Значение[Часть];
|
||||
Иначе
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ЕстьСвойство;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьДлину(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Число") Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
ФактическаяДлина = ДлинаЗначения(ПроверяемоеЗначение);
|
||||
|
||||
Если ФактическаяДлина = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ФактическаяДлина = ПараметрыПроверки.ОжидаемоеЗначение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьСодержит(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Результат = НайтиЗначение(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
Если Результат = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьСоответствуетШаблону(РезультатПроверки, ПроверяемоеЗначение, ОжидаемоеЗначение, ПараметрыПроверки)
|
||||
|
||||
Если НЕ ПроверитьТипЗначения(РезультатПроверки, ОжидаемоеЗначение, "Строка") Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствуетШаблону = СоответствуетШаблону(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
|
||||
Если СоответствуетШаблону = Неопределено Тогда
|
||||
ТекстОшибки = СтрШаблон("тип проверяемого значения `%1` не обрабатывается утверждением", ТипЗнч(ПроверяемоеЗначение));
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуКРезультатуПроверки(РезультатПроверки, ТекстОшибки, ПараметрыПроверки);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СоответствуетШаблону;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -767,9 +767,7 @@
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
Функция НеИмеетДлину(Знач ОжидаемоеЗначение, Знач ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
УстановитьОписаниеПроверки(Контекст, ОписаниеПроверки);
|
||||
ПроверитьДлину(Контекст, ОжидаемоеЗначение, Истина);
|
||||
ПроверитьПредикат(ЮТПредикаты.Выражения().НеИмеетДлину, ОжидаемоеЗначение, ОписаниеПроверки);
|
||||
Возврат ЮТУтверждения;
|
||||
|
||||
КонецФункции
|
||||
@ -1628,18 +1626,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьДлину(Контекст, ОжидаемоеЗначение, Реверс)
|
||||
|
||||
ПроверитьТипЗначения(Контекст, ОжидаемоеЗначение, "Число");
|
||||
|
||||
ФактическаяДлина = ДлинаПроверяемогоЗначения(Контекст);
|
||||
Результат = ФактическаяДлина = ОжидаемоеЗначение;
|
||||
|
||||
Сообщение = СтрШаблон("имеет длину (размер) `%1`", ОжидаемоеЗначение);
|
||||
ОбработатьРезультатСравнения(Результат, Сообщение, Реверс, ФактическаяДлина, ОжидаемоеЗначение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьРезультатСравнения(Знач Результат, Знач Сообщение, Реверс, ПроверяемоеЗначение, ОжидаемоеЗначение)
|
||||
|
||||
Если Реверс Тогда
|
||||
@ -1803,6 +1789,7 @@
|
||||
|
||||
ПараметрыСообщенийОбОшибке = ЮТПредикатыКлиентСервер.ПараметрыСообщенийОбОшибке(ПолноеОписаниеПроверки);
|
||||
Результат = ЮТПредикатыКлиентСервер.ПроверитьПредикаты(Контекст.ОбъектПроверки.Значение, Предикат, ПараметрыСообщенийОбОшибке, ПараметрыСравнения);
|
||||
|
||||
ОбработатьРезультаПроверки(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
Loading…
Reference in New Issue
Block a user