InRangeEx

From SunFlurry wiki
Revision as of 18:54, 27 December 2025 by 1>Admin
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  InRangeEx (Логические функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Магическая функция или конструкция
Обращение к БД:Нет
Исключения:Аргументы неверного типа
Визуальность:Нет

Магическая функция проверяет, присутствует ли значение поиска в диапазонах значений для проверки. Искомое значение может быть числом, датой или строкой. Функция может упростить конструкцию If. В зависимости от режима (первый аргумент), для проверки используются строгие или нестрогие неравенства. В зависимости от режима, функция возвращает 1, если искомое значение присутствует по крайней мере в одном диапазоне или во всех диапазонах. Вычисление следующих аргументов диапазона не выполняется, если текущий удовлетворил или не удовлетворил условию поиска в зависимости от режима. При смешивании типов данных (к примеру, при поиске числа в диапазонах дат), значение считается ненайденным).

Синтаксис

InRangeEx(<Режим (INT)>=0,<Значение поиска>,<Начало диапазона 1>,<Конец диапазона 1>,<Начало диапазона 2>,<Конец диапазона 2>...):<Искомое значение присутствует в диапазоне (диапазонах) (INT)>

Аргументы

  • <Режим (INT)> - (необязательный аргумент) Аргумент задает режим функции и является битовой маской. Доступны сл. биты:
    • Бит 0: 1 -- использовать строгое равенство для проверки начала диапазонов (<) вместо нестрогого (<=).
    • Бит 1: 1 -- использовать строгое равенство для проверки конца диапазонов (>) вместо нестрогого (>=).
    • Бит 2: 1 -- функция возвращает 1 только если искомое значение находится внутри всех диапазонов, иначе любого из них.
  • <Значение поиска> - Значение для поиска.
  • <Начало диапазона X> - (необязательный аргумент) Значения начала дипазона.
  • <Конец диапазона X> - (необязательный аргумент) Значения окончания дипазона.

Возвращаемое значение

Возвращает 1, если значение поиска найдено в диапазонах поиска (или во всех диапазонах, в зависимости от режима), иначе возвращает 0.

Примеры


//Проверяется: NOT(((зДата>НачДата)And(зДата<КонДата))Or((зДата>НачДата2)And(зДата<КонДата2)))
If not InRangeEx(3,зДата,НачДата,КонДата,НачДата2,КонДата2) Then
  Message("Выбрана неверная дата","!");
  Exit;
EndIf;

If ((зДата<=НачДата)Or(зДата=>КонДата))And((зДата<=НачДата2)Or(зДата=>КонДата2)) Then
  Message("Выбрана неверная дата","!");
  Exit;
EndIf;

//Обе представленные конструкции имеют одинаковую функцию, при этом первая проще для понимания.