Имя: Пароль:
1C
1С v8
Округление до десятка
0 Rumpil
 
18.01.12
10:18
У меня цена на товар должна округляться всегда до десятка, т.е. 280,55 до 290, 286 до 290 и.т.д., функцией Окр насколько я понимаю это не сделать ? Подскажите в какую сторону капать плиз
1 Scooter
 
18.01.12
10:19
/ 10
окр
* 10
2 Чайник Рассела
 
18.01.12
10:20
в УТ и Рознице это реализовано
3 Ненавижу 1С
 
гуру
18.01.12
10:20
(0) не правильно понимаешь, укради у кого нибудь СП!
4 andrewks
 
18.01.12
10:20
-1
5 GLazNik
 
18.01.12
10:20
(0) Эм... сделать
6 Rumpil
 
18.01.12
10:22
(3) а че такое СП ? ))
7 andrewks
 
18.01.12
10:22
другое дело, что, скорее всего, автору нужно т.н. "экономическое" округление вверх
8 GLazNik
 
18.01.12
10:23
(7) а режим округления для чего?
9 andrewks
 
18.01.12
10:23
(8) не для этого
10 Rumpil
 
18.01.12
10:24
(7) ну да, ценовая политика у компании такая, чтоб при пересчете цена по курсу цена превращалась в привлекательное число, ну не хотят клиенты видеть цены в виде 286 или 281 евро, хотят 290 евро ))
11 LouRENs
 
18.01.12
10:24
(6) синтакс помощник
12 Rumpil
 
18.01.12
10:25
(11) в синтаксисе СП нет
13 andrewks
 
18.01.12
10:25
вот, я тут на досуге баловался:

// Ч - округляемое число

// КоэфОкр - коэффициент округления

// 1 - до целого

// 0.1 - до 2-го знака после запятой

// 10 - до десяток

// и т.д.

Функция ОкрЭконБольш(Знач Ч,Знач КоэфОкр=1)
   КоэфОкр=?(КоэфОкр=0,1,КоэфОкр);
   Ч=Ч/КоэфОкр;
   Возврат ?(Ч=Цел(Ч),Ч,Окр(Ч+0.5,0,0))*КоэфОкр;
КонецФункции
14 НЕА123
 
18.01.12
10:26
оно = а - а%10 + ?(а%10 = 0, 0,10);
15 НЕА123
 
18.01.12
10:29
(14) не, не оно. точно не оно.
16 filh
 
18.01.12
10:32
Ч = 10*ОКР(Ч/10+0.5)
17 НЕА123
 
18.01.12
10:33
?(Цел(а) = а, а, Цел(а)+10)
18 Стальная Крыса
 
18.01.12
10:34
вот так:
y = if(Цел(x) = x, x, (Цел(x/10)+1)*10)
19 Дядя Васька
 
18.01.12
10:34
(16) +0,4 тогда уж...
20 Стальная Крыса
 
18.01.12
10:35
пардон:
y = ?(Цел(x) = x, x, (Цел(x/10)+1)*10)
21 Стальная Крыса
 
18.01.12
10:36
в (17) красивее  :)
22 0xFFFFFF
 
18.01.12
10:37
(19) 0,49999999
23 0xFFFFFF
 
18.01.12
10:38
(17) тогда уж
?(Цел(а/10) = а/10, а, 10*Цел(а/10)+10)
24 filh
 
18.01.12
10:39
(19) это с какого перепуга?
25 НЕА123
 
18.01.12
10:39
(19)
Ч = 10*ОКР(Ч/10+0.5, РежимОкругления.Окр15как10)
26 Rumpil
 
18.01.12
10:39
Спасибо (13), все работает отлично
27 Ненавижу 1С
 
гуру
18.01.12
10:41
ЦИТАТА: "Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов."
28 НЕА123
 
18.01.12
10:41
(23)
ну да, пардон, ошибся
29 НЕА123
 
18.01.12
10:42
я за (16) (с поправочкой (25))
30 Дядя Васька
 
18.01.12
10:42
(24) 1,5 до скольки округлит?
31 НЕА123
 
18.01.12
10:43
(30)
до 1. РежимОкругления.Окр15как10
32 Дядя Васька
 
18.01.12
10:44
+(30) 1,9 то бишь... тройка вместо двойки ж будет.
33 Дядя Васька
 
18.01.12
10:45
(31) а надо до двух...
34 Дядя Васька
 
18.01.12
10:50
+(33) по варианту (25) 1.01 неверно округлится, единица вместо двойки. В общем суть в (19), уточнение в (22), в какую сторону не округляй, все равно не 0,5.
35 Дядя Васька
 
18.01.12
10:55
+(34) Хотя не, гоню чет... 1,51 же будет, до двойки при Окр15как10. Так что так тоже можно.
36 НЕА123
 
18.01.12
10:57
(35)
разрядность забыл...
10*ОКР(0./10+0.5, 0, РежимОкругления.Окр15как10)
37 Дядя Васька
 
18.01.12
11:03
(36) Да это уже извращение... просто Окр(НашаЦена+0,5, РежимОкругления.Окр15как10, -1)
38 Дядя Васька
 
18.01.12
11:05
точнее Окр(НашаЦена+5, РежимОкругления.Окр15как10, -1) раз уж до десяток
39 НЕА123
 
18.01.12
11:18
(37)
согласен
(38)
параметры местами перепутал
Окр(НашаЦена+5, -1, РежимОкругления.Окр15как10)
40 Дядя Васька
 
18.01.12
11:20
(39) ну да...
41 filh
 
18.01.12
11:24
Вы чего курите?
РежимОкругления.Окр15как10:
Ч=1.5
Ч = 10*ОКР(Ч/10+0.5);
Ч = 10
РежимОкругления.Окр15как20:
Ч=1.5
Ч = 10*ОКР(Ч/10+0.5);
Ч = 10
42 Дядя Васька
 
18.01.12
11:29
(41)
РежимОкругления.Окр15как20:
Ч=10
Ч = 10*ОКР(Ч/10+0.5);
Ч = 20
43 filh
 
18.01.12
11:31
(42) а, вы про это... ну да, (41) сторно
:)