Difference between revisions of "InRangeEx"
1>Admin |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 19:06, 27 December 2025
| InRangeEx (Логические функции) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Магическая функция проверяет, присутствует ли значение поиска в диапазонах значений для проверки. Искомое значение может быть числом, датой или строкой. Функция может упростить конструкцию If. В зависимости от режима (первый аргумент), для проверки используются строгие или нестрогие неравенства. В зависимости от режима, функция возвращает 1, если искомое значение присутствует по крайней мере в одном диапазоне или во всех диапазонах. Вычисление следующих аргументов диапазона не выполняется, если текущий удовлетворил или не удовлетворил условию поиска в зависимости от режима. При смешивании типов данных (к примеру, при поиске числа в диапазонах дат), значение считается ненайденным).
Синтаксис
InRangeEx(<Режим (INT)>=0,<Значение поиска>,<Начало диапазона 1>,<Конец диапазона 1>,<Начало диапазона 2>,<Конец диапазона 2>...):<Искомое значение присутствует в диапазоне (диапазонах) (INT)>
Аргументы
<Режим (INT)>- (необязательный аргумент) Аргумент задает режим функции и является битовой маской. Доступны сл. биты:- Бит 0: 1 -- использовать строгое равенство для проверки начала диапазонов (
<) вместо нестрогого (<=). - Бит 1: 1 -- использовать строгое равенство для проверки конца диапазонов (
>) вместо нестрогого (>=). - Бит 2: 1 -- функция возвращает 1 только если искомое значение находится внутри всех диапазонов, иначе любого из них.
- Бит 0: 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;
//Обе представленные конструкции имеют одинаковую функцию, при этом первая проще для понимания.