Как в вычисляемом поле скд округлить число?

1. Shecurok 16.04.21 10:58 Сейчас в теме
Добрый день. Вопрос собственно в шапке.

Формат не предлагать, он влияет только на отображение, но не округление.

Просто число у меня получается
12,7320513433843053416917466128131335
, которое необходимо сократить до 12,75.

Сама формула для этого поля следующая:

ВЫБОР КОГДА Net_Sales_YTD <> 0 ТОГДА ((Net_Sales_YTD - COGS) / Вычислить("Сумма(Net_Sales_YTD)") * 100)
Иначе 0
Конец


Пытался сделать так:
ВЫБОР КОГДА Net_Sales_YTD <> 0 ТОГДА ВЫРАЗИТЬ(((Net_Sales_YTD - COGS) / Вычислить("Сумма(Net_Sales_YTD)") * 100) КАК ЧИСЛО (15,2))


Ругается на неопознаный оператор ВЫБОР <<?>> КОГДА...

Написал как то не так?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
8. SlavaKron 16.04.21 11:10 Сейчас в теме
(1)
12,7320513433843053416917466128131335
, которое необходимо сократить до 12,75.
По какому принципу 12.732 может быть округлено до 12.75?
Nubsdale; +1 Ответить
12. Shecurok 16.04.21 11:15 Сейчас в теме
(8) я так понимаю она с последнего начнетт округлять, нет? не с 12.732, а с 12.<>335
18. Nubsdale 16.04.21 11:16 Сейчас в теме
(12) 12.732 округлить можно до 13, или до 12.7 или 12.73 или 12.74, но никак не в 12.75 :-) попробуйте просто ОКР()
19. Shecurok 16.04.21 11:17 Сейчас в теме
(18) ну 74 еще подойдет. сейчас гляну
20. Nubsdale 16.04.21 11:17 Сейчас в теме
(19) вам выше писали именно про арифметические правила округления
9. Nubsdale 16.04.21 11:10 Сейчас в теме
(1)
которое необходимо сократить до 12,75.

ВЫРАЗИТЬ(Net_Sales_YTD КАК (Число(10,2)) КАК Net_Sales_YTD
29. starik-2005 3036 16.04.21 15:01 Сейчас в теме
(1)
Написал как то не так?
"КОНЕЦ" во втором примере где?
2. Shecurok 16.04.21 11:01 Сейчас в теме
А, ошибка из модуля, забыл оттуда формулу убрать, смотрел там скобки как открываются\закрываются
3. Shecurok 16.04.21 11:01 Сейчас в теме
Но формула в любом случае не работает, "синтаксическая ошибка"
4. Shecurok 16.04.21 11:05 Сейчас в теме
Добавлено вознаграждение
26. ishelper 16.04.21 14:10 Сейчас в теме
(4)
Добавлено вознаграждение
А толку? По прошлым веткам автора можно заранее угадать - кто его получит:
https://forum.infostart.ru/forum9/topic259946/
https://forum.infostart.ru/forum9/topic260059/
27. Sashares 34 16.04.21 14:31 Сейчас в теме
(26) Ну так там ТС решил проблему, ТС молодец =)
А то что там в комментах кто-то что-то подсказал, это мелочи)))
28. starik-2005 3036 16.04.21 15:00 Сейчас в теме
(26) хочешь стартманю - напиши статью. Но это слишком дешевый труд, поэтому лучше закрой пару часов за это время у заказчика )))
30. ishelper 16.04.21 17:35 Сейчас в теме
(28) Я просил у вас совета? Что-то не припоминаю...

Как раз на такой случай Жванецкий сказал: "Не говорите, что мне нужно делать, и я не буду говорить, куда вам нужно идти"

Поскольку вы пренебрегли первой частью этого афоризма, то считайте, что я отказался от второй. Счастливого пути! :-P
5. SGordon1 16.04.21 11:05 Сейчас в теме
Вызов функции общего модуля Вам не подойдет случайно?
6. Shecurok 16.04.21 11:07 Сейчас в теме
(5) в вычисляемом поле СКД?
7. SGordon1 16.04.21 11:08 Сейчас в теме
Ну или такого типа "ВЫРАЗИТЬ(ЧислоВыбр/10 КАК ЧИСЛО(10, 0)) * 10 КАК ОкругленноеДоДесятиЧисло"
10. BomjBandit 16.04.21 11:13 Сейчас в теме
Попробуйте
ВЫБОР
КОГДА Net_Sales_YTD <> 0 ТОГДА (Net_Sales_YTD - COGS) / Выразить(Вычислить("Сумма(Net_Sales_YTD)") * 100 КАК Число(15,2))
Иначе 0
Конец                  					   

Проверьте не сидит ли NULL в Net_Sales_YTD
15. Shecurok 16.04.21 11:16 Сейчас в теме +1 $m
(10) синт ошибка (когда пытаюсь выйти с ред формулы)
17. JohnGalt 57 16.04.21 11:16 Сейчас в теме
(15) Можно также на вкладке Ресурсы
31. mpudy 16.04.21 17:36 Сейчас в теме
(15)
Если на вкладке ресурсы - нужно тип брать в кавычки и через запятую ВЫРАЗИТЬ(ВыражениеВозвращабщееЧисло, "ЧИСЛО(15, 2)")
11. JohnGalt 57 16.04.21 11:14 Сейчас в теме
Используйте метод ОКР()
13. Shecurok 16.04.21 11:15 Сейчас в теме
(11) в вычисляемых полях он вроде как неприменим
14. JohnGalt 57 16.04.21 11:16 Сейчас в теме
16. Shecurok 16.04.21 11:16 Сейчас в теме
(14) нуу сейчас проверю тогда
21. user1278383 4 16.04.21 11:19 Сейчас в теме
22. Shecurok 16.04.21 11:22 Сейчас в теме
(21) формат влияет на отображение, а не округление. в теме писал же
23. user1278383 4 16.04.21 11:27 Сейчас в теме
(22) не вижу проблем в таком случае использовать окр()
24. SlavaKron 16.04.21 11:39 Сейчас в теме
(22) А какая разница в рамках отчета СКД?
25. starik-2005 3036 16.04.21 13:28 Сейчас в теме
ВЫРАЗИТЬ(Какоеточисло, КАК ЧИСЛО(10,3))
32. 1395969 62 19.04.21 02:03 Сейчас в теме
Решение очень простое
Никаких "Выбор .. Когда .. Тогда" не нужно

В вопросе не уточнен принцип округления
Поэтому привожу универсальное решение для разных вариантов

Вот универсальное решение:
(ВЫРАЗИТЬ([ВашеЧисло] * 2 + [ДопЧисло] КАК ЧИСЛО(12, 1))) / 2

Где
[ВашеЧисло] = 12,7320513433843053416917466128131335 (или любое другое)

А [ДопЧисло] зависит от способа округления

1) Если
12.70 => 12.70
12.71 => 12.75
12.72 => 12.75
12.73 => 12.75
12.74 => 12.75
12.75 => 12.75
12.76 => 12.80
12.77 => 12.80
12.78 => 12.80, и т.д.
то
[ДопЧисло] = 0.0499999

2) Если
12.70 => 12.70
12.71 => 12.70
12.72 => 12.70
12.73 => 12.75
12.74 => 12.75
12.75 => 12.75
12.76 => 12.75
12.77 => 12.75
12.78 => 12.80, и т.д.
то
[ДопЧисло] = 0

P.S. В решении учитывается то, что оператор "Выразить" производит округление по математическим правилам
33. Grivba 14 19.04.21 09:53 Сейчас в теме
Кстати, ругается на оператор, т.к. есть выбор когда, а вот иначе нет перед концом.
И я надеюсь вы не пытаетесь посчитать изначально строковые данные?

И т.к. у вас нет условия Иначе. То тогда нет смысла в условии вообще.

Обязательно установите проверку на 0.

И еще. У вас стоит сумма().
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот