Имя: Пароль:
1C
1С v8
Определить в какую группу входит число
,
0 Vlaloplo
 
18.01.22
12:00
Всем привет, можно ли как то оптимально определить, в какую группы десяток входит число? Например число 12 находится между 10 и 19, число 25 между 20 и 29 и т.д. Вариант наподобие если  >= 10 и <= 19 тогда
                         Возврат "от 10 до 19"
                       КонецЕсли - не подходит, т.к числа идут до 999 и кучу ИначеЕсли плодить не хочется
Так же число меньше 10 не учитываем, т.е 10 минимальное число, максимальное 999
1 Василий Алибабаевич
 
18.01.22
12:07
(0) Примерно так :
Диапазоны = Новый Соответствие;
Диапазоны.Вставить(1, "10...19");
Диапазоны.Вставить(2, "20...29");
Диапазоны.Вставить(3, "30...39");
Диапазоны.Вставить(4, "40...49");
Диапазоны.Вставить(5, "50...59");
...

Результат = Диапазоны.Получить(Цел(тестовоеЧисло/10));
2 acht
 
18.01.22
12:10
НомерГруппыДесяток = Цел(Число/10);

Внезапно, да?
3 Vlaloplo
 
18.01.22
12:15
(1) Спасибо
(2), согласен, очень внезапно, спасибо :)
4 Zapal
 
18.01.22
12:18
(3) а как ты из этого сделаешь Возврат "от 10 до 19"?
5 Zapal
 
18.01.22
12:22
(1) 99 строк Вставить() однако
6 Ryzeman
 
18.01.22
12:22
(4) X = НомерГруппыДесяток * 10;
Y = X + 9;
Возврат "от " + Строка(X) + " до "+ Строка(Y);
7 Ryzeman
 
18.01.22
12:23
Хотя в проде я бы X и Y не использовал бы. Даже для такой цели :)
8 Мимохожий Однако
 
18.01.22
12:25
Можно смотреть первый символ числа в формате два знака с лидирующими нулями. Какой символ, такая и группа десятки
9 pechkin
 
18.01.22
12:27
(6) сейчас модно писать

СтрШаблон("от %1 до %2", X, Y)
10 Ryzeman
 
18.01.22
12:28
(9) я забыл какая БСПщная функция меняет параметры))
11 Ryzeman
 
18.01.22
12:30
(9) А стоп, про эту функцию я даже не знал. Видел в типовых через БСП собираются в такие шаблоны и парамтеризурются по БСП
12 Garykom
 
гуру
18.01.22
12:31
(0) У тебя в школе по математике что было?
13 Vlaloplo
 
18.01.22
12:32
(12) четверка) Бывает, иногда забываешь очевидные вещи)
14 Garykom
 
гуру
18.01.22
12:34
И да условие с Если можно проверять в цикле
Это если обычной математикой делением с остатком не выходит
Заполняешь ТЗ например своими границами а затем циклом проверяешь одним
Если ПроверяемоеЧисло>ТекСтр.НижняяГраница и ПроверяемоеЧисло<ТекСтр.ВерхняяГраница Тогда
15 Garykom
 
гуру
18.01.22
12:36
(14)+ Сча кстати модно уже запросами
16 Garykom
 
гуру
18.01.22
12:37
И да эта штука очень нужна когда вхождение в периоды дата/время проверять надо
17 Василий Алибабаевич
 
18.01.22
12:38
(5) Заполнить можно программно. Ну... Кто совладает.
18 Dmitrii
 
гуру
18.01.22
12:57
(17) Ну тут уже свою библиотеку надо писать. С подсистемами, ролями, программным интерфейсом и пр.
19 acht
 
18.01.22
13:00
(18) Микросервис. И обязательно на go
20 DES
 
18.01.22
13:15
(0) может быть так?
Занести в ТЗ строки диапазонов
Добавить ТЗ искомую строку
отсортировать ТЗ
Найти искомую строку
Получить номер строки
21 Dmitrii
 
гуру
18.01.22
14:11
+ к (18) Библиотека Арифметических Сервисов 1С:БАриС.
22 Мультук
 
гуру
18.01.22
14:13
(19)

Как go? А куда же девать вставки на asm ? :-)
23 Vlaloplo
 
18.01.22
14:58
Как оказалось очевидную вещь спросил, а мне тут уже целую подсистему предложили для этого написать, вот это подход))
24 Garykom
 
гуру
18.01.22
15:06
стебутся

завидуют вероятно
25 youalex
 
18.01.22
15:31
(23) Скажи спасибо что пока еще никто не предложил сохранять промежуточный результат в единственном элементе справочника)
26 Смотрящий
 
18.01.22
15:36
(25) В константе...
27 Garykom
 
гуру
18.01.22
15:37
(26) до какой то версии платформы это было да жутковато
28 acht
 
18.01.22
15:44
(25) > никто не предложил
Для настоящих гениев это очевидно:
https://geniy1s.ru/nekanonicheskij-sposob-spuskaniya-parametra-nizhestoyashhim-proczeduram/
29 Garykom
 
гуру
18.01.22
15:51
(28) настоящий гкодер
зачем передавать в функцию параметры? когда можно их сохранить в базу перед вызовом и пусть функция их оттуда берет да