Имя: Пароль:
1C
1С v8
Как организовать проверку на вхождение в диапазон.
0 igorby
 
14.08.15
09:34
Допустим есть диапазоны:
0-9,  10-19,   20-29 и тд.
Получаем некое число и нужно проверить в какой диапазон оно входит.
Можно конечно использовать условие  на больше меньше, но может есть какой вариан по красивее или готовая типовая функция есть?
1 shuhard_серый
 
14.08.15
09:36
(0) в данном случае можно делить на 10 и брать целую часть, это и будет номер диапазона =)
2 wms
 
14.08.15
09:38
запросом
3 igorby
 
14.08.15
09:38
нет, пример условный, нужен универсальный механизм....
4 МихаилМ
 
14.08.15
09:38
диапазоны могут пересекаться?
5 magicSan
 
14.08.15
09:39
(0) длина диапозона постояна?
6 shuhard_серый
 
14.08.15
09:39
(3)[нужен универсальный механизм.]
генеришь запрос в цикле с произвольным beetwin
7 magicSan
 
14.08.15
09:43
(6) Циклы для неудачников.

делаешь спсиокзначений - каждое значение начало диапозона, в запросе находишь первое значение больше которого задаваемое число , берешь следющие за ним . профит
8 magicSan
 
14.08.15
09:44
(7) Следующие можно не брать - нашли позицию из списка берешь следующий элимент отнимаешь 1 видишь диапозон
9 Timon1405
 
14.08.15
09:45
УТ11
// Определяет, является ли символ разделителем.
//
// Параметры:
//  КодСимвола      - Число  - код проверяемого символа;
//  РазделителиСлов - Строка - символы разделителей.
//
// Возвращаемое значение:
//  Булево - истина, если символ является разделителем.
//
Функция ЭтоРазделительСлов(КодСимвола, РазделителиСлов = Неопределено) Экспорт
    
    Если РазделителиСлов <> Неопределено Тогда
        Возврат Найти(РазделителиСлов, Символ(КодСимвола)) > 0;
    КонецЕсли;
        
    Диапазоны = Новый Массив;
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57));         // цифры
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90));         // латиница большие
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 97, 122));         // латиница маленькие
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 1040, 1103));     // кириллица
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 1025, 1025));     // символ "Ё"
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 1105, 1105));     // символ "ё"
    Диапазоны.Добавить(Новый Структура("Мин,Макс", 95, 95));         // символ "_"
    
    Для Каждого Диапазон Из Диапазоны Цикл
        Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Истина;
    
КонецФункции
10 igorby
 
14.08.15
09:46
(7) спасибо я уже тоже нашел....
Основная теорема систематики: Новые системы плодят новые проблемы.