Skip to content

Commit

Permalink
исправлены ошибки
Browse files Browse the repository at this point in the history
- нельзя было протестировать произвольный тип, например, Массив
- ошибка несколько текущих выражений с отрицанием

доработка после #839
  • Loading branch information
artbear committed Apr 8, 2021
1 parent dbb8c16 commit 4d7c0a3
Showing 1 changed file with 36 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
&НаКлиенте
Перем ФлагОтрицанияДляСообщения;

&НаКлиенте
Перем ПроверяемоеЗначение;

// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Expand All @@ -26,7 +29,7 @@
&НаКлиенте
Функция Что(Знач ПроверяемоеЗначениеПараметр, Знач Сообщение = "") Экспорт

Объект.ПроверяемоеЗначение = ПроверяемоеЗначениеПараметр;
ПроверяемоеЗначение = ПроверяемоеЗначениеПараметр;
Объект.ДопСообщениеОшибки = Сообщение;
Объект.ФлагОтрицания = Ложь;

Expand Down Expand Up @@ -55,8 +58,8 @@

&НаКлиенте
Функция ЭтоИстина() Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение = Истина) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(Объект.ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ИСТИНОЙ.");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Истина) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ИСТИНОЙ.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -70,8 +73,8 @@

&НаКлиенте
Функция ЭтоЛожь() Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение = Ложь) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(Объект.ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ЛОЖЬЮ.");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Ложь) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Формат(ПроверяемоеЗначение, "БЛ=Ложь; БИ=Истина"), "является ЛОЖЬЮ.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -85,8 +88,8 @@

&НаКлиенте
Функция Равно(Знач ОжидаемоеЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение = ОжидаемоеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "РАВНО (" + ОжидаемоеЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = ОжидаемоеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "РАВНО (" + ОжидаемоеЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -95,8 +98,8 @@

&НаКлиенте
Функция Больше(Знач МеньшееЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение > МеньшееЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "БОЛЬШЕ (" + МеньшееЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение > МеньшееЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ (" + МеньшееЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -105,8 +108,8 @@

&НаКлиенте
Функция БольшеИлиРавно(Знач МеньшееИлиРавноеЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение >= МеньшееИлиРавноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "БОЛЬШЕ ИЛИ РАВНО (" + МеньшееИлиРавноеЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение >= МеньшееИлиРавноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "БОЛЬШЕ ИЛИ РАВНО (" + МеньшееИлиРавноеЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -120,8 +123,8 @@

&НаКлиенте
Функция МеньшеИлиРавно(Знач БольшееИлиРавноеЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение <= БольшееИлиРавноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "МЕНЬШЕ ИЛИ РАВНО (" + БольшееИлиРавноеЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение <= БольшееИлиРавноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ ИЛИ РАВНО (" + БольшееИлиРавноеЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -135,8 +138,8 @@

&НаКлиенте
Функция Меньше(Знач БольшееЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение < БольшееЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "МЕНЬШЕ (" + БольшееЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение < БольшееЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕНЬШЕ (" + БольшееЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -145,8 +148,8 @@

&НаКлиенте
Функция Заполнено() Экспорт
Если Не ЛогическоеВыражениеВерно(ЗначениеЗаполнено(Объект.ПроверяемоеЗначение)) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "является ЗАПОЛНЕННЫМ.");
Если Не ЛогическоеВыражениеВерно(ЗначениеЗаполнено(ПроверяемоеЗначение)) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является ЗАПОЛНЕННЫМ.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -155,8 +158,8 @@

&НаКлиенте
Функция Существует() Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение <> Неопределено И Объект.ПроверяемоеЗначение <> Null) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "СУЩЕСТВУЕТ.");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение <> Неопределено И ПроверяемоеЗначение <> Null) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "СУЩЕСТВУЕТ.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -165,8 +168,8 @@

&НаКлиенте
Функция ЭтоНеопределено() Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение = Неопределено) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "является НЕОПРЕДЕЛЕНО.");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Неопределено) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является НЕОПРЕДЕЛЕНО.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -180,8 +183,8 @@

&НаКлиенте
Функция ЭтоNull() Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение = Null) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "является NULL.");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение = Null) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "является NULL.");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -196,7 +199,7 @@
&НаКлиенте
Функция ИмеетТип(Знач ТипИлиИмяТипа) Экспорт
ОжидаемыйТип = ?(ТипЗнч(ТипИлиИмяТипа) = Тип("Строка"), Тип(ТипИлиИмяТипа), ТипИлиИмяТипа);
ТипПроверяемогоЗначения = ТипЗнч(Объект.ПроверяемоеЗначение);
ТипПроверяемогоЗначения = ТипЗнч(ПроверяемоеЗначение);
Если Не ЛогическоеВыражениеВерно(ТипПроверяемогоЗначения = ОжидаемыйТип) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке("тип - " + ТипПроверяемогоЗначения, "имеет тип (" + ОжидаемыйТип + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
Expand All @@ -207,8 +210,8 @@

&НаКлиенте
Функция Между(Знач НачальноеЗначение, Знач КонечноеЗначение) Экспорт
Если Не ЛогическоеВыражениеВерно(Объект.ПроверяемоеЗначение >= НачальноеЗначение И Объект.ПроверяемоеЗначение <= КонечноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(Объект.ПроверяемоеЗначение, "МЕЖДУ (" + НачальноеЗначение + ") и (" + КонечноеЗначение + ").");
Если Не ЛогическоеВыражениеВерно(ПроверяемоеЗначение >= НачальноеЗначение И ПроверяемоеЗначение <= КонечноеЗначение) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке(ПроверяемоеЗначение, "МЕЖДУ (" + НачальноеЗначение + ") и (" + КонечноеЗначение + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;;

Expand All @@ -220,9 +223,8 @@

Перем ИскомоеЗначениеНайдено;

ПроверяемоеЗначение = Объект.ПроверяемоеЗначение;
ДопСообщениеОшибки = Объект.ДопСообщениеОшибки;
ТипПроверяемоегоЗначения = ТипЗнч(Объект.ПроверяемоеЗначение);
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
Если СтрЧислоСтрок(ИскомоеЗначение) = 1 Тогда
ИскомоеЗначениеНайдено = Найти(ПроверяемоеЗначение, ИскомоеЗначение) > 0;
Expand Down Expand Up @@ -262,14 +264,14 @@
Функция ИмеетДлину(Знач ОжидаемаяДлина) Экспорт
Перем ФактическаяДлина;

ТипПроверяемоегоЗначения = ТипЗнч(Объект.ПроверяемоеЗначение);
ТипПроверяемоегоЗначения = ТипЗнч(ПроверяемоеЗначение);
Если ТипПроверяемоегоЗначения = Тип("Строка") Тогда
ФактическаяДлина = СтрДлина(Объект.ПроверяемоеЗначение);
ФактическаяДлина = СтрДлина(ПроверяемоеЗначение);
ИначеЕсли ТипПроверяемоегоЗначения = Тип("Массив") Или ТипПроверяемоегоЗначения = Тип("ФиксированныйМассив")
Или ТипПроверяемоегоЗначения = Тип("Структура") Или ТипПроверяемоегоЗначения = Тип("ФиксированнаяСтруктура")
Или ТипПроверяемоегоЗначения = Тип("Соответствие") Или ТипПроверяемоегоЗначения = Тип("ФиксированноеСоответствие")
Или ТипПроверяемоегоЗначения = Тип("СписокЗначений") Тогда
ФактическаяДлина = Объект.ПроверяемоеЗначение.Количество();
ФактическаяДлина = ПроверяемоеЗначение.Количество();
КонецЕсли;

Если ФактическаяДлина = Неопределено Тогда
Expand All @@ -278,7 +280,7 @@
КонецЕсли;

Если Не ЛогическоеВыражениеВерно(ФактическаяДлина = ОжидаемаяДлина) Тогда
СообщениеОшибки = СформироватьСообщениеОбОшибке("<" + Объект.ПроверяемоеЗначение + "> с длиной " + ФактическаяДлина, "ИМЕЕТ ДЛИНУ (" + ОжидаемаяДлина + ").");
СообщениеОшибки = СформироватьСообщениеОбОшибке("<" + ПроверяемоеЗначение + "> с длиной " + ФактическаяДлина, "ИМЕЕТ ДЛИНУ (" + ОжидаемаяДлина + ").");
ВызватьОшибкуПроверки(СообщениеОшибки);
КонецЕсли;

Expand All @@ -287,7 +289,7 @@

&НаКлиенте
Функция ВыбрасываетИсключение(Знач ФрагментИсключения = "") Экспорт
Контекст = Объект.ПроверяемоеЗначение;
Контекст = ПроверяемоеЗначение;
СтрокаПараметры = "";
Если ТипЗнч(Объект.ПараметрыМетода) = Тип("Массив") Тогда
Для Сч = 0 По Объект.ПараметрыМетода.Количество() - 1 Цикл
Expand Down Expand Up @@ -317,26 +319,6 @@
КонецФункции

// { Helpers
&НаСервере
Процедура ВыполнитьМетодОбъектаНаСервере(Знач ИмяМетода, Знач КоличествоПараметров, Знач Параметр1 = Неопределено, Знач Параметр2 = Неопределено)
ОбъектНаСервере = ЭтотОбъектНаСервере();

СтрокаПараметры = "";
Если КоличествоПараметров = 1 Тогда
СтрокаПараметры = "Параметр1";
ИначеЕсли КоличествоПараметров = 2 Тогда
СтрокаПараметры = "Параметр1, Параметр2";
КонецЕсли;

Попытка
Выполнить("ОбъектНаСервере." + ИмяМетода + "(" + СтрокаПараметры + ")");
Исключение
ОписаниеОшибки = ОписаниеОшибки();
ВызватьИсключение "Вызов метода <" + ИмяМетода +">: " + ОписаниеОшибки;
КонецПопытки;

ЗначениеВРеквизитФормы(ОбъектНаСервере, "Объект");
КонецПроцедуры

&НаСервере
Функция ЭтотОбъектНаСервере()
Expand Down Expand Up @@ -413,7 +395,7 @@
Функция ЛогическоеВыражениеВерно(Знач ЛогическоеВыражение)
Результат = Объект.ФлагОтрицания <> ЛогическоеВыражение;
ФлагОтрицанияДляСообщения = Объект.ФлагОтрицания;
ФлагОтрицания = Ложь;
Объект.ФлагОтрицания = Ложь;

Возврат Результат;
КонецФункции
Expand Down

0 comments on commit 4d7c0a3

Please sign in to comment.