Имя: Пароль:
1C
1С v8
Округление до десятков в большую сторону в запросе. Как ?
,
0 Румата
 
24.10.21
09:08
Сейчас написал так : ВЫРАЗИТЬ ((НашеЧисло+5)/ 10 КАК ЧИСЛО(15, 0)) * 10
Но при случаях, когда НашеЧисло равно 10 или 20 или 30 округление происходит не правильно. Задавать НашеЧисло+4.99999999 не вижу смысла, т.к. это ошибочно. Как сделать правильное округление в большую сторону до десятков в запросе, подскажите ?
1 ДенисЧ
 
24.10.21
09:11
ВЫРАЗИТЬ() - это не округление. Это циркумци́зия.
Надо именно добавлять, а потом резать. Не дожидясь.
2 Румата
 
24.10.21
09:16
(1) Ну а как решить такую задачу, понятно что не округление, деля на 10 и обрезая дробную часть мы получаем целое число, потом мы все умножаем на 10. Без округления в большую сторону все прекрасно работает.
3 pechkin
 
24.10.21
09:18
(0) тебе шашечки или ехать?
4 hhhh
 
24.10.21
09:18
(2) ну так  НашеЧисло+4.99999999.  Смысл в этом есть всё-таки.
5 Румата
 
24.10.21
09:23
В типовой УТ 10.3 в справочнике типы цен можно выбрать округление либо по арифметическим правилам, либо в большую сторону. Интересно как это реализовано ? Наверняка в запросах тоже идет округление.
6 Румата
 
24.10.21
09:29
Выбор когда Выразить(НашеЧисло,КАК ЧИСЛО(15, 0)) = НашеЧисло Тогда
+0
Иначе
+5
Конец

Может так ?
7 pechkin
 
24.10.21
09:55
(6) чем это лучше (0) ?
8 Конструктор1С
 
24.10.21
10:44
(0) вычисления в запросе - зло!
9 ДенисЧ
 
24.10.21
10:47
(8) Скажи это селезнёвцам, которые тангенсы в запросы принесли ))
10 Конструктор1С
 
24.10.21
10:48
(9) у них там своя наркомания
11 pechkin
 
24.10.21
10:54
(9) ну так в скл же есть. Добавление таких функций - полдня работы стажера
12 ДенисЧ
 
24.10.21
11:49
(11) В скл есть и всякие оконные функции, и cast() и convert()
Но что-то не добавляют.
13 aka MIK
 
24.10.21
12:34
(0) +0.5 а потом выразить
14 hhhh
 
24.10.21
12:45
(13) +0.4999
15 pechkin
 
24.10.21
12:54
9 нужно больше чем точность исходного значения.
Для суммы достаточно 0.499
16 pechkin
 
24.10.21
12:54
(12) во всех скл?
17 Гость из Мариуполя
 
гуру
24.10.21
14:53
хм.. а что,  РежимОкругления.Окр15как10 не работает ?
18 Гость из Мариуполя
 
гуру
24.10.21
14:59
а черт, не посмотрел, что в запросе
тогда извиняюсь
19 lodger
 
25.10.21
09:00
(5) в типовых это место давно переписано на компоновщик данных. то есть округляет сервер1с, а не sql.
20 Ненавижу 1С
 
гуру
25.10.21
09:23
так уже предлагали?


    (ВЫРАЗИТЬ(ТЗ.Аргумент - 0.5 КАК ЧИСЛО(15, 0))) + ВЫБОР
        КОГДА ТЗ.Аргумент = (ВЫРАЗИТЬ(ТЗ.Аргумент КАК ЧИСЛО(15, 0)))
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК Результат
21 Ненавижу 1С
 
гуру
25.10.21
09:31
или даже так:

(ВЫРАЗИТЬ(ТЗ.Аргумент - 0.5 КАК ЧИСЛО(15, 0))) - (ВЫРАЗИТЬ((ВЫРАЗИТЬ(ТЗ.Аргумент - 0.5 КАК ЧИСЛО(15, 0))) - ТЗ.Аргумент + 0.5 КАК ЧИСЛО(15, 0))) + 1
22 Конструктор1С
 
27.10.21
09:12
(18) не "нужно в запросе", а "приспичило в запросе"
23 DimG
 
27.10.21
09:27
в 20 платформе добавили ОКР
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.