Округление

1. Биг Босс (BigBoss) 2 11.01.17 11:06 Сейчас в теме
Здравствуйте. Есть отчет, данные берутся запросом. Допустим в ячейке выводиться число 15 114,7. Если я в конструкторе форматной строки в свойствах ячейки делаю так:
ЧДЦ=0


то выводиться 15 115. А нужно 15 114. Т.е убрать числа после запятой, без округления. Можно ли так сделать при помощи конструктора форматной строки?
Ответы
2. rjhev korum (корум) 306 11.01.17 11:37 Сейчас в теме
(0) Насколько помню, там можно писать арифметические и строковые функции.
Цел(ТвоеЧисло) поможет
3. Имя Михаил (fromtomike) 20 11.01.17 11:42 Сейчас в теме
(1)В Формат(...) работает стандартный механизм округления, т.е. в большую сторону.
Если округлять до целых нужно в меньшую полагаю подойдет такой способ:
От исходного числа отнимаем 0.5
Далее все как было раньше
Формат(15114.7-0.5, "ЧДЦ=0") = 15114
Формат(15114.2-0.5, "ЧДЦ=0") = 15114
4. Имя Михаил (fromtomike) 20 11.01.17 11:43 Сейчас в теме
(1) И даже так:
Формат(15114-0.5, "ЧДЦ=0") = 15114
5. Биг Босс (BigBoss) 2 11.01.17 11:54 Сейчас в теме
Допустим пишу так:
Область.параметры.сумма = Формат(Выборка.Сумма-0.5, "ЧДЦ=0");
???
Сейчас попробую
6. Oleg Space (spacecraft) 11.01.17 11:56 Сейчас в теме
(5) зачем так извращаться?
в (2) уже ответили:
Область.параметры.сумма = Цел(Выборка.Сумма)
7. Биг Босс (BigBoss) 2 16.01.17 11:17 Сейчас в теме
Решил делать округление в запросе, если округлять в коде то всё было ок, но если в запросе пишу так:
СУММА(ВЫРАЗИТЬ(ЕСТЬNULL(Итоговая.Оплата, 0) КАК ЧИСЛО(15, 2))) КАК Оплата


выводит 58 184,51 а нужно 58 184. Можно ли так округлить в запросе?
8. Евгений Кузнецов (kuzev) 40 16.01.17 11:19 Сейчас в теме
9. Биг Босс (BigBoss) 2 16.01.17 11:24 Сейчас в теме
(8) нет, тогда выводиться 58 185, а нужно 58 184
10. Дмитрий Дмитренко (Sokar) 16.01.17 11:27 Сейчас в теме
// по умолчанию округление работает в большую сторону
Сообщить(Окр(1.5, 0)); // 2
// а если указать третьим параметром 0, то в меньшую
Сообщить(Окр(1.5, 0, 0)); // 1


не дочитал, что это запрос... так что пост анулирован... сорри
11. Биг Босс (BigBoss) 2 16.01.17 11:37 Сейчас в теме
(10)

Окр


Можно использовать в запросе?
12. Биг Босс (BigBoss) 2 16.01.17 11:42 Сейчас в теме
(10) а в запросе можно такое сделать? Там вроде только
выразить.. как число ()


используют, но округляет не как 58 184, а 58 185
13. Дмитрий Дмитренко (Sokar) 16.01.17 11:45 Сейчас в теме
КОГДА ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) > Поле ТОГДА
ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) - 1
ИНАЧЕ ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) КОНЕЦ
14. Роберт В е р т и н с к и й (v3rter) 16.01.17 11:45 Сейчас в теме
А так?
выразить..-0.5 как число ()
15. Дмитрий Дмитренко (Sokar) 16.01.17 11:47 Сейчас в теме
//про целую часть числа

ВЫБРАТЬ
ВЫБОР
КОГДА &ТекЧисло > 0
ТОГДА ВЫРАЗИТЬ(&ТекЧисло - 0.5 КАК ЧИСЛО(15, 0))
ИНАЧЕ ВЫРАЗИТЬ(&ТекЧисло + 0.5 КАК ЧИСЛО(15, 0))
КОНЕЦ КАК Поле1
16. Sashares 1 16.01.17 11:50 Сейчас в теме
(10)
// а если указать третьим параметром 0, то в меньшую
Сообщить(Окр(1.5, 0, 0)); // 1

Вы удивитесь результату выражения Сообщить(Окр(1.51, 0, 0));
17. Дмитрий ... (vis1984p) 2 16.01.17 11:51 Сейчас в теме
Попробуйте СУММА(ВЫРАЗИТЬ(ЕСТЬNULL(Итоговая.Оплата, 0) КАК ЧИСЛО(15, 0))) КАК Оплата
18. Биг Босс (BigBoss) 2 16.01.17 11:53 Сейчас в теме
(13)
КОГДА ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) > Поле ТОГДА
ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) - 1
ИНАЧЕ ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) КОНЕЦ


работает, но теперь выводиться -1 там где было 0


19. Евгений Кузнецов (kuzev) 40 16.01.17 11:55 Сейчас в теме
ВЫБРАТЬ 
	ВЫБОР
		КОГДА Поле >= ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0))
		ТОГДА ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0))
		ИНАЧЕ ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15, 0)) - 1
	КОНЕЦ
...Показать Скрыть
20. Вадим Мориков (vadim1011985) 42 16.01.17 12:03 Сейчас в теме
Не через запрос
Область.параметры.сумма = Формат(Выборка.Сумма-(Выборка.Сумма%1),"ЧДЦ=2"));
21. Биг Босс (BigBoss) 2 16.01.17 12:18 Сейчас в теме
(18) У меня синтаксическую ошибку выдаёт :
синтаксическая ошибка "ВЫБРАТЬ"

у меня запрос такого вида:
       |	СУММА(ЕСТЬNULL(Итоговая.Нагрузка, 0)) КАК Нагрузка,
                   |ВЫБРАТЬ 
                   |         ВЫБОР
                   |    КОГДА Оплата>= ВЫРАЗИТЬ(Итоговая.Оплата КАК ЧИСЛО(15, 0))
                   |    ТОГДА ВЫРАЗИТЬ(Итоговая.Оплата КАК ЧИСЛО(15, 0))
                   |      ИНАЧЕ ВЫРАЗИТЬ(Итоговая.Оплата КАК ЧИСЛО(15, 0)) - 1
                   |       КОНЕЦ
                   |ИЗ
	               |	(ВЫБРАТЬ
	           ..............далее продолжается текст запроса............
...Показать Скрыть
22. Oleg Space (spacecraft) 16.01.17 12:19 Сейчас в теме
(19) этот запрос не учитывает отрицательные числа. С ними подстава получится.
23. Oleg Space (spacecraft) 16.01.17 12:20 Сейчас в теме
(21) в данном случае Выбрать не нужно. Выбрать было раньше.
24. Биг Босс (BigBoss) 2 16.01.17 12:30 Сейчас в теме
(23) убрал Выбрать, ругалось что поле должно присутствовать в выборке, сделать так:
 |	СУММА(ЕСТЬNULL(Итоговая.Нагрузка, 0)) КАК Нагрузка,
				   |СУММА(ЕСТЬNULL(Итоговая.Оплата, 0)) КАК Оплата,
                   |     ВЫБОР
                   |    КОГДА Оплата >= ВЫРАЗИТЬ(Итоговая.Оплата КАК ЧИСЛО(15, 0))
                   |    ТОГДА ВЫРАЗИТЬ(Итоговая.ОплатаКАК ЧИСЛО(15, 0))
                   |      ИНАЧЕ ВЫРАЗИТЬ(Итоговая.ОплатаКАК ЧИСЛО(15, 0)) - 1
                   |       КОНЕЦ 
	               |ИЗ
	               |	(ВЫБРАТЬ
..............далее таекст запроса продолж..........
...Показать Скрыть


ругается
Поле не входит в группу "Итоговая.Оплата"
ИНАЧЕ ВЫРАЗИТЬ(<<?>>Итоговая.Оплата КАК ЧИСЛО(15, 0)) - 1
25. Oleg Space (spacecraft) 16.01.17 12:42 Сейчас в теме
(24)
|СУММА(ЕСТЬNULL(Итоговая.Нагрузка, 0)) КАК Нагрузка,
|СУММА(ЕСТЬNULL(Итоговая.Оплата, 0)) КАК Оплата,
|ВЫБОР
|    КОГДА СУММА(ЕСТЬNULL(Итоговая.Оплата, 0))>= ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(Итоговая.Оплата, 0)) КАК ЧИСЛО(15, 0))
|    ТОГДА ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(Итоговая.Оплата, 0)) КАК ЧИСЛО(15, 0))
|    ИНАЧЕ ВЫРАЗИТЬ(СУММА(ЕСТЬNULL(Итоговая.Оплата, 0)) КАК ЧИСЛО(15, 0)) - 1
|КОНЕЦ КАК Сумма
|ИЗ
...Показать Скрыть


Только зачем это делать в запросе, если проще в параметр табличного документа передавать значение через ОКР()?
26. Дмитрий Дмитренко (Sokar) 16.01.17 12:44 Сейчас в теме
(25)

очень часто требуется реализация именно на уровне запроса... например, если СКД, то никаких параметров табличного документа...
27. Oleg Space (spacecraft) 16.01.17 12:48 Сейчас в теме
(26) а прочитать исходный вопрос? (1) и (5)
28. Дмитрий Дмитренко (Sokar) 16.01.17 12:50 Сейчас в теме
29. Биг Босс (BigBoss) 2 16.01.17 12:50 Сейчас в теме
(25)
Только зачем это делать в запросе, если проще в параметр табличного документа передавать значение через ОКР()?


Можно, но потом как вывести "Итого"? там данные выводятся как раз через запрос
30. Oleg Space (spacecraft) 16.01.17 12:57 Сейчас в теме
(26) конечно имелось ввиду не Окр(), а Цел() :)
В СКД это просто. Там есть Вычисляемые выражения и Цел() там работает.
31. Вадим Мориков (vadim1011985) 42 16.01.17 12:57 Сейчас в теме
(29) Использовать Итоги Запроса и обходить запрос по группировкам
32. Oleg Space (spacecraft) 16.01.17 13:06 Сейчас в теме
(29) можно и без запроса.
Перед циклом обхода запроса создать переменную
СуммаИтого = 0;
И в цикле, при присваивании параметру:
Область.параметры.сумма = Цел(Выборка.Сумма);
СуммаИтого = СуммаИтого + Цел(Выборка.Сумма);

И в конце присваивание параметру Итого значение переменной СуммаИтого.
33. Роберт В е р т и н с к и й (v3rter) 16.01.17 14:59 Сейчас в теме
(32) Сумма целых (или округлений) не будет совпадать с целой частью (или округлением) суммы.
34. Дмитрий Дмитренко (Sokar) 16.01.17 15:15 Сейчас в теме
(33) это и не нужно... в (32) предложено было суммировать именно целые части, а не суммы и потом из нее выделять целое
Оставьте свое сообщение