Как в СКД округлить число до большего значения?

1. user1202776 10.11.20 15:50 Сейчас в теме
Как в СКД округлить число до большего значения?
Например, 1.1 -должно округлиться до 2
Выразить (Число как число(10,0) не подходит, потому что дробную часть до 0.5 будет округлять до 1, а не нужно,чтобы округлялась в большую сторону
По теме из базы знаний
Найденные решения
6. spacecraft 11.11.20 09:33 Сейчас в теме
(3) Выразить, это уже по самой сути округление.
В вычисляемых выражениях можно использовать операцию Цел.
Цел(Количество/КоличествоВМестах+0.99999)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ipoloskov 163 10.11.20 15:52 Сейчас в теме
ВЫРАЗИТЬ(Число + 0.5) как ЧИСЛО(10,0))
user1202776; tetraren; oleg-x; +3 Ответить
3. user1202776 10.11.20 17:01 Сейчас в теме
(2)В вычисляемых написал: выразить(Количество/КоличествоВМестах+0.5 "число(10,0)" . И СКД считает почему-то неправильно. Например, 1523/112 + 0.5=14,09. Если округлить получается 14, а СКД выдает почему-то 13.
В вычисляемом поле сделал так: Количество/КоличествоВМестах+0.5 и поставил формат 10,0 на поле. И все равно выдает значение 13. Хотя правильное значение это 14. Из-за чего может быть такое?
6. spacecraft 11.11.20 09:33 Сейчас в теме
(3) Выразить, это уже по самой сути округление.
В вычисляемых выражениях можно использовать операцию Цел.
Цел(Количество/КоличествоВМестах+0.99999)
7. user817897 2 11.11.20 09:35 Сейчас в теме
(6)Если только вычислять, сравнивать, и ставить костыли дополнительно(прибавлять 1-цу), это как крайний вариант))
8. user1202776 11.11.20 09:36 Сейчас в теме
(6)Цел просто убирает дробную часть, а мне в большую сторону округлить
9. spacecraft 11.11.20 09:37 Сейчас в теме
(8) проверьте это:
Цел(Количество/КоличествоВМестах+0.99999)
10. user1202776 11.11.20 09:54 Сейчас в теме
(9)так тоже не то,что нужно выводит
11. spacecraft 11.11.20 09:56 Сейчас в теме
13. user1202776 11.11.20 09:58 Сейчас в теме
(11)2922/72+0.99999=41.58. Если округлить получается 42. Но результат должен быть 41, потому что 2922/72=40.58. Если округлить 40.58 до большего числа, то получится 41
15. spacecraft 11.11.20 10:00 Сейчас в теме
(13) что-то не то делаете.
У меня 41 получается
17. user1202776 11.11.20 10:02 Сейчас в теме
(15)В запросе все норм считается,но почему-то СКД не считает корректно
20. FatPanzer 11.11.20 10:05 Сейчас в теме
(17) Есть подозрение, что СКД применяет округление не к конечному результату вычислений, а ко всем числам, включая входящие и промежуточные вычисления. И это косяк.
А в самом запросе считает СУБД.
18. user1202776 11.11.20 10:04 Сейчас в теме
(15)делаю также, как вы показали
Прикрепленные файлы:
25. spacecraft 11.11.20 10:13 Сейчас в теме
(18) есть предположение, что Отчет не пересохранился или отлаживаете другую копию.
Измените текст запроса в СКД. А лучше Синоним отчета. Просто добавить пробел у удалить и после сохранить.
Ну и в предприятии отчет закрыть.
26. user1202776 11.11.20 10:14 Сейчас в теме
(25)пересохраняется. Добавляю другие поля и эти поля появляются. Уже перезапустил конфигу и предприятие. Отчет тоже много раз переоткрывал
27. spacecraft 11.11.20 10:15 Сейчас в теме
(26) скиньте схему скд. Как дальше это поле используете?
28. user1202776 11.11.20 10:19 Сейчас в теме
29. spacecraft 11.11.20 10:27 Сейчас в теме
(28) во 2 наборе данных для Количества поставьте Длина 10, Точность 3. Там стоит 0 и 0. Что-то поменяется?
30. user1202776 11.11.20 10:28 Сейчас в теме
(29)нет,ничего не поменялось
31. user1202776 11.11.20 10:30 Сейчас в теме
(29)если считать так, как вы написали,то СКД считает правильно. Но это не то,что нужно
Цел(Количество/КоличествоМест+0.99999)

Нужно чтобы было как на (16). А выходит,что на одно место больше, чем по факту есть
33. spacecraft 11.11.20 10:34 Сейчас в теме
(31) СКД считает правильно но нужно не так... это вообще жесть.
34. user1202776 11.11.20 10:40 Сейчас в теме
32. user1202776 11.11.20 10:34 Сейчас в теме
(29)а нет. В 31 вру. У нас же целую просто берет без дробной части, а не округляет. Тогда значит СКД почему-то некорректно считает
35. spacecraft 11.11.20 10:42 Сейчас в теме
(32) может смотрите на Сумму? Тогда там тупо сумма.
Попробуйте на закладе Ресурсы для Поле1 заменить на это:
Цел(Сумма(Количество/КоличествоВМестах) + 0.9999)
36. user1202776 11.11.20 10:46 Сейчас в теме
(35)выводит ошибку:
Ошибка в выражении
по причине:
Неверные параметры "+"
37. spacecraft 11.11.20 10:48 Сейчас в теме
(36) внимательнее проверьте. Ошибки не должно быть.
38. user1202776 11.11.20 10:54 Сейчас в теме
(37)проверил. Все сделал также, как вы написали
Прикрепленные файлы:
40. spacecraft 11.11.20 10:59 Сейчас в теме
(38) И? Ошибка все равно?
пробелы вокруг плюса добавить.
41. user1202776 11.11.20 11:01 Сейчас в теме
(40)Да,ошибка все равно. С плюсами и без них выводит ошибку
42. user1202776 11.11.20 11:49 Сейчас в теме
(40)если цифры проставить, то не выводит ошибок
Цел(Сумма(2922/72) + 0.9999)
43. spacecraft 11.11.20 12:06 Сейчас в теме
(42) ошибка в момент ввода этого текста или при формировании отчета?
Можно так попробовать:
Выбор когда КоличествоМест = 0 Тогда 0 Иначе  Цел(Сумма(Количество/КоличествоМест) + 0.99999) Конец
44. user1202776 11.11.20 12:16 Сейчас в теме
(43)ошибка при формировании отчета
46. spacecraft 11.11.20 12:20 Сейчас в теме
(44) тогда еще можно Количество обернуть в ЕстьNull. Там же связь наборов. Может и null получиться.
47. user1202776 11.11.20 12:28 Сейчас в теме
(46)все равно выводит ошибку. Количество и КоличествоМест обернул в ЕстьNull, но все равно выдает ту же ошибку
Не могу понять,что происходит
45. user1202776 11.11.20 12:19 Сейчас в теме
(43)все равно выводит ошибку:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры "+"
39. user1202776 11.11.20 10:59 Сейчас в теме
(37)вот так
Сумма(Цел(Количество/КоличествоМест+0.9999))

и так
Цел(Количество/КоличествоМест+0.9999)

не выводит ошибок. Но считает неправильно
14. FatPanzer 11.11.20 09:59 Сейчас в теме
(11) Ишь ты хитрый какой!!! Подробности ему подавай... А мозги тебе для чего дадены??? Сам догадайся!
16. user1202776 11.11.20 10:02 Сейчас в теме
(11)Остатки на складе считаются в местах. Например, в одном месте 20 штук. У нас на складе 45 штук. У на получается 2 места и 5 штук. Так как эти 5 штук тоже занимают место , одного места, то эти 5 штук тоже считаем как место. И получается у нас 3 места
12. SlavaKron 11.11.20 09:58 Сейчас в теме
(9) 0.99999 можно заменить на 1/3*3
51. user1202776 12.11.20 22:11 Сейчас в теме
(6)Спасибо.Тема закрыта
4. toypaul 63 11.11.20 07:45 Сейчас в теме
В СКД есть функция ОКР http://prntscr.com/vh5sk4

выразить имеет смысл использовать в запросе
5. user1202776 11.11.20 09:21 Сейчас в теме
(4)почему-то все равно не корректно считает. Например 2922/72+0,5=41,08. Если округлить получатся 41, а СКД почему-то выводит 42. Из-за чего такое может быть?
19. FatPanzer 11.11.20 10:04 Сейчас в теме
Есть подозрение, что СКД применяет округление не к конечному результату вычислений, а ко всем числам, включая входящие и промежуточные вычисления. И это косяк.
21. user1202776 11.11.20 10:05 Сейчас в теме
(19)
(15)
"Количество" берется из внешнего набора данных
22. FatPanzer 11.11.20 10:06 Сейчас в теме
23. user1202776 11.11.20 10:10 Сейчас в теме
(22)если это вдруг может быть причиной,почему так ведет себя СКД)
24. user1202776 11.11.20 10:12 Сейчас в теме
(19)как это можно исправить?
48. tetraren 26 11.11.20 19:04 Сейчас в теме
Не знаю, что у вас не работает, должно всё работать, проверьте
ВЫБРАТЬ Количество,
	Количество2,
	ВЫРАЗИТЬ((Количество/Количество2)+0.5 КАК Число(10)) КАК Результат,
	ВЫРАЗИТЬ((ВЫРАЗИТЬ(Количество КАК Число(15,4))/Количество2)+0.5 КАК Число(10)) КАК Результат2
ИЗ (
ВЫБРАТЬ 1001 Количество, 1000 Количество2 ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1500 Количество, 1000 Количество2 ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1999 Количество, 1000 Количество2
) КАК Данные
Показать
49. SlavaKron 12.11.20 09:20 Сейчас в теме
(48)
+0.5

Если результат деления – целое число, вы получите неверный результат. К тому же для ТС, видимо, принципиально сделать это через вычисляемое поле.
50. tetraren 26 12.11.20 20:46 Сейчас в теме
(49) Да, действительно, вы правы, спасибо за замечание.

Через вычисляемое поле наоборот проще, там есть Окр(). А вот задача получить округление в запросе - уже есть над чем подумать.

Тогда правильный ответ
ВЫБРАТЬ Количество,
	Количество2,
	ВЫРАЗИТЬ((Количество/Количество2)+0.499999999999 КАК Число(18)) КАК Результат
ИЗ (
ВЫБРАТЬ ВЫРАЗИТЬ(1001 КАК Число(18)) Количество, 1000 Количество2 ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ВЫРАЗИТЬ(400000000000000000 КАК Число(18)) Количество, 2 Количество2 ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ВЫРАЗИТЬ(150000000000000000 КАК Число(18)) Количество, 100000000000000000 Количество2 ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ВЫРАЗИТЬ(199900000000000000 КАК Число(18)) Количество, 100000000000000000 Количество2
) КАК Данные
Показать
Оставьте свое сообщение

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