Имя: Пароль:
1C
1C 7.7
v7: Помогите с правильной формулой округления копеек ☑
0 Georg68
 
10.03.17
✎
05:42
Делаю двойной ценник, где одна цена со скидкой 2% и эту цену надо округлить до 50коп в меньшую сторону. А округляется только до рубля.

Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98)   - это рубли
?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00")    - это копейки

Что не так?
1 PuhUfa
 
10.03.17
✎
05:47
Какие страхи сутра -)
А что у тебя в Печкопейки?
2 Рэйв
 
10.03.17
✎
06:17
Если я правильно телепатирую,то..

Окр(Число(Печрубли+"."+Печкопейки),1,РежимОкругления.Окр15как10)
3 Рэйв
 
10.03.17
✎
06:18
конечно если Печрубли и Печкопейки - строковые цифры, как подразумевается в сабже
4 Zmich
 
10.03.17
✎
06:47
(3). Неправильно. Например, 6 копеек как отработает твой код?
5 Рэйв
 
10.03.17
✎
07:02
(4)тогда попростому по крестьянски:-)

ч=Число(Печрубли+"."+Печкопейки);

А=?(ч-Цел(ч)>=0.5,Цел(ч)+0.5,Цел(ч));
Сообщить(""+Ч+"->"+А);
6 h-sp
 
10.03.17
✎
07:59
(5) это же до рубля
7 Ёпрст
 
гуру
10.03.17
✎
08:08
(0) Во всех типовых
глОкруглить()
там усё есть
8 Масянька
 
10.03.17
✎
08:10
Функция глОкруглить(Числ, ПорядокОкругления) Экспорт
    Перем Рез;
    
    Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда
        
        // арифметическое округление до 2-х знаков после запятой
        Рез = Окр(Числ, 2);
    Иначе
        // округление к верхней границе по заданному порядку
        
        // преобразуем порядок округления число
        Порядок            = Число(Строка(ПорядокОкругления));
        
        // вычислим количество интервалов, входящих в число
        КолвоИнтервал    = Числ / Порядок;
        
        // вычислим целое количество интервалов.
        КолвоИнтервалЦел= Цел(КолвоИнтервал);
        
        Если КолвоИнтервал = КолвоИнтервалЦел Тогда
            // Числа поделились нацело. Округлять не нужно.
            Рез    = Числ;
        Иначе
            Рез    = Порядок * (КолвоИнтервалЦел + 1);
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Рез;
КонецФункции // глОкруглить()

(7) Опередил, блин... :)
9 1dvd
 
10.03.17
✎
08:16
делим число на 0,5
округляем до целых
умножаем на 0,5
10 h-sp
 
10.03.17
✎
08:26
(8) нет тут до 50 копеек
11 Ёпрст
 
гуру
10.03.17
✎
08:30
(10) есть
12 пипец
 
10.03.17
✎
08:31
не правильные пчелы ... )))
13 Ёпрст
 
гуру
10.03.17
✎
08:32
//******************************************************************************
// глОкруглить(Числ, ПорядокОкругления)
//
// Параметры:
//  Числ              - исходное число
//  ПорядокОкругления - элемент перечисления Порядки окгугления:
//  "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100)
//
// Возвращаемое значение:
//  Округленное по заданному порядку значение
//
// Описание:
//  Округляет число вверх по заданному порядку. Т.е число 123.37 при порядке
//  округление 0.5 превратиться в 123.50, а число 0.1 при порядке округления
//  5 станет равным 5.
//  Если значение перечисления ОкрТочно, то округляет арифметически до 0.01
14 Ёпрст
 
гуру
10.03.17
✎
08:33
Просто, Масяне вломы тебе всё копипастить, в надежде на то, что ты сам посмотришь хотя-бы описалово функции, и откроешь, наконец, пофигуратор
15 Масянька
 
10.03.17
✎
08:36
(14) - А вы что и есть за меня будете?
- Ага.
(С)
16 Georg68
 
10.03.17
✎
08:39
Господа, спасибо огромное за отзывчивость, но я, признаюсь, практически простой юзер, мне эту формулу то подсказали.
Можно попроще?
Что конкретно вставить в Свойства? Или всё же в модуле надо добавить?
17 НЕА123
 
10.03.17
✎
08:39
Цена2=Цена*0.98;
Цена2Окр = Окр(Цена2*2,0,Окр15как10)/2
как-то так...
18 Ёпрст
 
гуру
10.03.17
✎
08:41
(17) це клюшки, там нету Окр15как10
19 Georg68
 
10.03.17
✎
08:43
Чет не получается
20 Масянька
 
10.03.17
✎
08:43
(16) До чего дошел прогресс... (С)
Если простой юзер - позови спеца. Если все-таки хочешь сам - разбирайся.
21 НЕА123
 
10.03.17
✎
08:43
РежимОкругления.Окр15как10
22 Georg68
 
10.03.17
✎
08:43
Переменная не определена (Цена2Окр)
Цена2<<?>>=Цена*0.98;
23 Georg68
 
10.03.17
✎
08:44
Нет у нас спецов в нашей деревне, так сам и маюсь
24 Масянька
 
10.03.17
✎
08:47
(23) Тьфу! Деревня! (С)
Покажи код, где считаешь вторую цену.
25 Georg68
 
10.03.17
✎
08:47
Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98)   - это рубли


Вот эта формула стоит в Свойствах рублей.
Она в принципе работает.

А копейки расположены в другой ячейке и у них другая формула, она округляет в меньшую сторону до рубля, хоть с 89 копеек, хоть с 5.
26 Масянька
 
10.03.17
✎
08:49
(25) А на фига отдельно?
27 Georg68
 
10.03.17
✎
08:50
ну копейки меньше по размеру, стоят повыше рубля в ценнике
жалко, что скрины сюда не вставить
28 Georg68
 
10.03.17
✎
08:51
29 Масянька
 
10.03.17
✎
08:51
(27) Скрины: клади/ложи сюда - https://pastenow.ru/. А потом сюда ссылку.
30 1dvd
 
10.03.17
✎
08:51
(27) сначала нужно вычислить цену как число с копейками, а потом уже отделять рубли и копейки
31 Georg68
 
10.03.17
✎
08:51
Открываются у вас скины?
32 1dvd
 
10.03.17
✎
08:52
(28) лопни мои глаза...
33 Georg68
 
10.03.17
✎
08:52
сам в шоке
34 НЕА123
 
10.03.17
✎
08:52
ай, 7....


Окр((Число(Печрубли) + Число(Печкопейки)/100)*0.98*2,0,1)/2  -  Цел((Число(Печрубли) + Число(Печкопейки)/100)*0.98,0,Окр15как10)/2)
35 Georg68
 
10.03.17
✎
08:53
Эту куда? В рубли или копейки?
36 1dvd
 
10.03.17
✎
08:53
(34) иди уже отсюда, опять не правильно :)
37 Масянька
 
10.03.17
✎
08:53
(32) Это ты мягко сказал...
(33) Сделай две цены (руб. коп.). По человечески.
38 НЕА123
 
10.03.17
✎
08:53
*Окр15как10 -> 1
39 Масянька
 
10.03.17
✎
08:54
(35) А покажи просто ценник (без свойств).
40 НЕА123
 
10.03.17
✎
08:55
(36)
ладно. попыток - не убыток.
41 Georg68
 
10.03.17
✎
08:57
42 Georg68
 
10.03.17
✎
08:57
43 Масянька
 
10.03.17
✎
09:08
(42) Покажи код, где делятся рубли и копейки.
44 Fedor-1971
 
10.03.17
✎
09:11
(43) ТС засунул код вычисления в ячейки ТабличногоДокумента

(41)(42) вот блин, говорят же человеку "сделай по уму", нет будем доставать гланды автогеном через задний проход.
Порядок действий:
1. в печатном макете делаешь нормальные выражения ЦенРуб, ЦенКоп (если уж нужно то и Коп) - именно выражениями, а не вычислениями непойми чего и как
2. исправляешь процедуру Печать (или как она у тебя называется) примерно так:
ЦенРуб=глОкруглить(Цена, 1);
ЦенКоп=глОкруглить(Цена-5%, 0.5);
Коп=ЦенКоп-Цел(ЦенКоп);

Надеюсь Цена-5% сам осилишь?
45 Рэйв
 
10.03.17
✎
09:12
(6)я так понял ему надо округление  назад с шагом 50 копеек. или я тогда не понимаю какая у него схема..
46 Масянька
 
10.03.17
✎
09:12
(44) Ну, я надеюсь сама цена не в макете вычисляется?
47 Fedor-1971
 
10.03.17
✎
09:16
(44) и да, перед тем как что-то делать устрой себе ликбез, как минимум посмотри на типовые "как там сделано", как максимум книжки почитай
(45) По ходу, ему нужно просто отобразить две цены "Продажи" (округление до 1 рубля) и "Со скидкой" (Цена - 5% с округлением до 0,5 рубля)
(46) Вроде как прямо в макете, там начало Число(????)
48 Fedor-1971
 
10.03.17
✎
09:17
(47) ошибся (44) -> 44+
49 Georg68
 
10.03.17
✎
09:28
Даже боюсь уже вас ) Понимаю, бесят такие как я.


Это

ЦенРуб=глОкруглить(Цена, 1);
ЦенКоп=глОкруглить(Цена-5%, 0.5);
Коп=ЦенКоп-Цел(ЦенКоп);

добавляю в Модуль?

А в Свойствах просто ставлю  ЦенРуб  ?
50 Georg68
 
10.03.17
✎
09:29
Так не работает
51 Масянька
 
10.03.17
✎
09:39
(50) Ты покажешь, где разбиваешь цену на рубли и копейки?!
Откуда берется вот это "Печрубли" и "Печкопейки"?
52 Georg68
 
10.03.17
✎
09:41
Перем ПечФирма;
Перем ПечРубли, ПечКопейки;
        
//******************************************************************************
// ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
//
// Параметры:
//  Таб             - таблица, в которую выполняется вывод ценника
//  ПечНаименование - наименование ТМЦ
//  ПечЕдиница      - единица измерения ТМЦ
//  ПечРозн         - цена ТМЦ
//  Столбик         - номер столбика.
//  Ряд             - номер ряда
//
53 Georg68
 
10.03.17
✎
09:41
Это в начале модуля
54 Georg68
 
10.03.17
✎
09:42
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
        ПечРозн    = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли

            ПечРубли    = Цел(ВремЦена);
        ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2);
55 Масянька
 
10.03.17
✎
09:42
(52) Ё - очень терпеливый человек, а я нет!
Где ПечРубли=...?
56 Fedor-1971
 
10.03.17
✎
09:43
(49) это просто 5, не, даже 5+
ты прочитал (44)? я написал куда добавить просто в модуль или в процедуру Печать?
На пальцах:
1. правая кнопка мыши на кнопке формы которая печатает ценники - свойства - вкладка "Дополнительно" - внимательно читаем поле "Формула"
2. идём в модуль и находим процедуру из поля "Формула"
3. Медитируем на тему "Куда вставить код из (44)"
4. По результатам - профит или "Вай-Вай ВСЁ сломал"
57 Масянька
 
10.03.17
✎
09:46
(54) Ну, наконец-то...
Вот это "ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)".
58 Georg68
 
10.03.17
✎
09:47
Таак? Поменял.
А в Свойствах всё таки что ставим?
59 Масянька
 
10.03.17
✎
09:48
(58) ПечКопейки.
60 Georg68
 
10.03.17
✎
09:50
ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)<<?>>
61 Georg68
 
10.03.17
✎
09:53
Можно весь модуль сюда выложить?
62 Fedor-1971
 
10.03.17
✎
09:54
(61) зачем?
ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2);
Чем должна заканчиваться строка?
63 Georg68
 
10.03.17
✎
09:56
Мы же заменили эту строку

Вот это "ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)".
64 Масянька
 
10.03.17
✎
09:56
(60) точку с запятой ";" в конце поставь.
65 Масянька
 
10.03.17
✎
09:57
(62) Надо его побить... Или путь Ё его укусит...
66 Fedor-1971
 
10.03.17
✎
09:57
(63) заменили Часть строки, а не ВСЮ.
Там ещё есть ";" в конце, так мелочь, но интерпретатору она очень нужна
67 Georg68
 
10.03.17
✎
09:58
Ура...
тупой ученик попался
Но копейки сейчас везде.. копейки   97коп, 68 коп
68 Масянька
 
10.03.17
✎
09:59
(67) Не... Убить - мало... :)
В свойствах рубли оставь, а вместо той фигни про копейки напиши просто "Число(ПечКопейки)".
69 Georg68
 
10.03.17
✎
10:04
Это в Свойствах копейки
https://dl.dropboxusercontent.com/u/80917909/55.jpg

Верно?
70 Масянька
 
10.03.17
✎
10:06
(69) У тебя там было изначально -
?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00")
Теперь должно быть -
(число(Печрубли) + число(печкопейки)
71 Fedor-1971
 
10.03.17
✎
10:08
(67) Ученик? Дружище, ученик слушает и пытается вникнуть, а не как школяр играет в "Угадал - Не угадал"

(70) просто ПечКопейки, мы их уже получили в виде строки
72 Масянька
 
10.03.17
✎
10:10
(71) Дык, надо-то чего?
73 Georg68
 
10.03.17
✎
10:12
Я и пытаюсь вникнуть, но очень сложно когда учитель путается в показаниях все время.))
Последовательности в действиях не вижу.
В модуле я исправил
Вот это "ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2)" меняй на "ПечКопейки = Прав(глОкруглить(ВремЦена, 0.5 ), 2)".

Потом, после того как меня хотели побить, укусить и убить наконец... сказали что в Свойствах ставим  "просто "Число(ПечКопейки)"
Потом оказалось, что ставить надо  "Теперь должно быть -
(число(Печрубли) + число(печкопейки)"
Ну как тут понять то)))
74 Fedor-1971
 
10.03.17
✎
10:14
(73) Определись: у тебя в макете дважды печатаются копейки, там параметры разные? Название ПечКопейки - там где цена со скидкой? а как называется нечто там где просто цена? (в твоей ситуации, должна быть просто строка "00")
75 Georg68
 
10.03.17
✎
10:15
Первую цену я вообще не трогаю, ту, которая без скидки.
76 Georg68
 
10.03.17
✎
10:15
В ней стоит   ПечКопейки
77 Масянька
 
10.03.17
✎
10:16
(73) Афигеть... Какой строптивый ученик попался...
78 Georg68
 
10.03.17
✎
10:16
Так старый же, старше Федора на 3 года ))
79 Масянька
 
10.03.17
✎
10:16
(76) Ты сейчас корежишь то, что на скрине в (28)?
80 Georg68
 
10.03.17
✎
10:17
так всё уж переправил на 10 раз
обратно сделать?
81 Fedor-1971
 
10.03.17
✎
10:18
(80) не дёргайся излишне
(75) хорошо, пойдём другим путём:
Смотрим на макет:
ечРуб - как называется и что обозначает
Копе - как я понимаю копейки, как называется и что обозначает
Числ - как называется и что обозначает
ечК - как называется и что обозначает
82 Fedor-1971
 
10.03.17
✎
10:19
81+ макет который в (69), если там формулы пиши их
83 Масянька
 
10.03.17
✎
10:20
(80) Бэкап надо делать.
84 Georg68
 
10.03.17
✎
10:23
Итак.
Первая цена, которая без скидки.
Свойства рубли  -  ПечРубли
Свойства копейки  - ПечКопейки

Копейки сейчас не округляются
85 Georg68
 
10.03.17
✎
10:25
Может у меня нет глОкруглить , конфигурация очень древняя и переписанная вся
86 Fedor-1971
 
10.03.17
✎
10:25
(84) не так по каждой строке, что-бы было понимание, просто дополни мои строки данными (тут формула из макета): назначение
87 Fedor-1971
 
10.03.17
✎
10:26
(85) ты бы получил ошибку, типа "такой функции нету"
88 Fedor-1971
 
10.03.17
✎
10:27
86+ только пиши текущее состояние из макета
89 Georg68
 
10.03.17
✎
10:27
ну да
90 Fedor-1971
 
10.03.17
✎
10:28
(89) что ну да? дополни строки из (81)
91 se85
 
10.03.17
✎
10:28
Хех это уже анекдот какой то получается, может кто нибудь подключится к нему удаленно да сделает?!
92 Fedor-1971
 
10.03.17
✎
10:29
(91) а смысл? Он и дальше будет непонимать, что делает. Раз записался в ученики будет насильно учиться
93 Georg68
 
10.03.17
✎
10:32
Нет, ну делов то в принципе на копейку. Только упорядочить надо этот мозговой штурм.

1. Что правим в модуле?
2. Что пишем в Свойствах.
94 se85
 
10.03.17
✎
10:32
(92) Что б чему то обучить, обучаемый должен хотя бы что то понимать!!! Наш же клиент не понимает что и как работает ибо ни когда с этим не сталкивался :(
95 Georg68
 
10.03.17
✎
10:33
Согласен, в формулах я не понимаю, я ценники сам делаю, размеры и простые выражения.
Но это сложная формула.
96 Georg68
 
10.03.17
✎
10:34
Потому и прошу помощи. Форум же для этого и придумали или я не прав? Погнобить тупых юзеров придумали форум?)) Ну так с этим нормально.)
97 Fedor-1971
 
10.03.17
✎
10:35
(93) блин, вежливо, матом тебя прошу, дополни строки из (81)
потом до модуля доберёмся
(94) вот и разберётся и станет аксакалом и будет других учить
98 Georg68
 
10.03.17
✎
10:38
Первая цена, которая без скидки.
Свойства рубли  -  ПечРубли
Свойства копейки  - ПечКопейки


Вторая
Рубли   -    (число(Печрубли) + число(печкопейки))
Копейки свою вставил обратно
?((((число(Печрубли) + число(печкопейки)/100)*0.98) %1)*100 >= 50, "50", "00")
99 Georg68
 
10.03.17
✎
10:40
В ценнике сейчас такая фигня
https://dl.dropboxusercontent.com/u/80917909/Безымянный.jpg

Поменялись местами цены, так как переменную в первой цене мы не трогали
100 Fedor-1971
 
10.03.17
✎
10:40
(98) ну просил же, оставь начало потом - потом в () формула из макета, потом словами назначение. что бы получилось одной строкой привязка ячейки макета и её смысла
101 Georg68
 
10.03.17
✎
10:41
))) ваще понятно
а написать просто выражение не проще
102 Fedor-1971
 
10.03.17
✎
10:43
(101) нет, ты потом запутаешься при изменении и сколь нибудь сложная логика заполнения ячейки окончится вешалкой при реализации
103 Fedor-1971
 
10.03.17
✎
10:43
102+ давай как-то ускорься, мне тоже работать надо
104 Georg68
 
10.03.17
✎
10:47
Так затык полный уже
105 Georg68
 
10.03.17
✎
10:47
если до того была какая-то смутная картинка, теперь нет совсем
106 Fedor-1971
 
10.03.17
✎
10:48
(104) Ещё нет, так движемся самым простым путём:
Устанавлиай в макете:
ечРуб - ЦенаПродажи
Копе - КопейкиПродажи
Числ - СкидкаЦена
ечК - СкидкаКопейки

Поясни:
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); - это цена со скидкой или продажи
107 Georg68
 
10.03.17
✎
10:49
Это цена продажи была
108 Это_mike
 
10.03.17
✎
10:50
(93) это не "мозговой штурм". это какой-то "безмозглый"
109 se85
 
10.03.17
✎
10:51
(107) Не скромный вопрос, а ты все эти операции делаешь на тестовой базе или рабочей?!
110 Georg68
 
10.03.17
✎
10:52
это какой-то "безмозглый"
Не спорю. В каждом деле должны быть профессионалы.
Вы в моем деле тоже наверняка не шарите, а я ас ))
Я и прошу помочь с формулой, а вы от меня много ожидаете просто ))
111 Georg68
 
10.03.17
✎
10:52
Макет ценника то можно на любой править
112 Fedor-1971
 
10.03.17
✎
11:09
(107) замечтательно:
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ЦенаПродажи=глОкруглить(ВремЦена , 1);
КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если  вздумаешь оставить копейки в Цене продажи
СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.05)),2,1), 0.5); //отняли 5% и округлили до 50 коп.
СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки
Теперь соотноси в голове: в макете ты указал выражение в ячейке (не длинную формулу, а именно переменную, которую можешь заполнять любым способом, хоть двумя экранами кода). В процедуре заполнения макета просто вычисляешь нужное тебе значение

(110) Нескромный вопрос: ас в чём? (торговля? металлообработка (зубофрезерные станки? Электроэррозионные станки? компрессорное оборудование?), экспедирование?, документооборот? - конфигурации делал, компрессоры - до уровня конструктора)
Это типа я похвастался
113 Fedor-1971
 
10.03.17
✎
11:14
112+ Хотя немного не так, вот так

ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);
ЦенаПродажи=глОкруглить(ВремЦена , 1);
КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2);// на случай если  вздумаешь оставить копейки в Цене продажи
ЦенаПродажи=Цел(ЦенаПродажи);
СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.05),2,1), 0.5);//отняли 5% и округлили до 50 коп.
СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки
СкидкаЦена=Цел(СкидкаЦена);
114 Georg68
 
10.03.17
✎
11:22
Это в Модуль ставим? В начале можно?
А в Свойствах всё таки что оставляем?
115 Fedor-1971
 
10.03.17
✎
11:34
(114) код ставим после
ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); - если процедура глобальная, то ничего не заменяем, просто добавляем код.
В свойствах ячейки макета как в (106) или по смыслу, где какая цифра должна быть - название заполненной переменной
116 Georg68
 
10.03.17
✎
12:04
Не могу понять я Вас , Федор. Переоцениваете мои способности всё же.
117 Fedor-1971
 
10.03.17
✎
12:12
(116) Которая часть непонятна?
По макету: открываем свойства ячейки и вместо "бла-бла" пишем наименование переменной, например, открываем свойства ячейки, где должна быть цена продажи, всё чистим и пишем "ЦенаПродажи" и т.д. имена переменных известны из (113)

По коду: ищем строку ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена); и после неё вставляем (113)
118 Georg68
 
10.03.17
✎
12:17
ЦенаПродажи<<?>>
Переменная не определена (ЦенаПродажи)
119 Fedor-1971
 
10.03.17
✎
12:21
(118) информативно, это откуда?
120 Georg68
 
10.03.17
✎
12:21
Это после изменений выдает при попытке вывести ценник
121 Georg68
 
10.03.17
✎
12:22
В Свойствах пишу СкидкаКопейки  ?
122 Georg68
 
10.03.17
✎
12:24
Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку() = 1 Цикл
        Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
             Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
                 Продолжить;    
             КонецЕсли;
        КонецЕсли;
         ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);    
         
ЦенаПродажи=глОкруглить(ВремЦена , 1);
КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если  вздумаешь оставить копейки в Цене продажи

ЦенаПродажи=Цел(ЦенаПродажи);
СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.02),2,1), 0.5); //отняли 5% и округлили до 50 коп.

СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки

СкидкаЦена=Цел(СкидкаЦена);
         
         
         
         
         
        ПечРозн    = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли
123 Fedor-1971
 
10.03.17
✎
12:27
(120) понятно, глФРМ(ВремЦена) - вот это выводит ценник или делает нечто другое?
где реализован вывод ценника? Вылаживай всю процедуру печати из модуля
(121) Да для ячейки, где должны быть скидочные копейки
124 Georg68
 
10.03.17
✎
12:28
Перем ПечФирма;
Перем ПечРубли, ПечКопейки;
//******************************************************************************
// ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
//
// Параметры:
//  Таб             - таблица, в которую выполняется вывод ценника
//  ПечНаименование - наименование ТМЦ
//  ПечЕдиница      - единица измерения ТМЦ
//  ПечРозн         - цена ТМЦ
//  Столбик         - номер столбика.
//  Ряд             - номер ряда
//
// Возвращаемое значение:
//  Нет.
//
// Описание:
//  Добавляет ценник в таблицу.
//
Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="") Экспорт
    
     Столбик = Столбик + 1;
    
     Колонка     = ((Столбик - 1) % 3) + 1;
     Ряд          = Цел(((Столбик - 1) % 5)/1) + 1;
    
     Если (Колонка = 1) И (Ряд = 1) И (Столбик > 1) Тогда
          Таб.НоваяСтраница();
     КонецЕсли;
    
     Если Колонка = 1 Тогда
          Таб.ВывестиСекцию("Товар|Ценник");
     Иначе
          Таб.ПрисоединитьСекцию("Товар|Ценник");
     КонецЕсли;
    
КонецПроцедуры // ДобавитьЦенник()

//******************************************************************************
// Печать(Докум, Устройство=0, КолвоКопий=1)
//
// Параметры:
//  Докум      - контекст выводимого документа (ПереоценкаРозница, ПоступлениеТМЦРозница),
//  Устройство - если 0, то вывод на экран, иначе - на принтер,
//               необязателен, по умолчанию - на экран,
//  КолвоКопий - количество копий, по умолчанию - 1.
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Формирует таблицу с ценниками.
//
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
    
    ДокумВид = Докум.Вид();
    Если ДокумВид = "ПереоценкаРозница" Тогда
        ИдРознЦена = "ЦенаНовая";
    ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда
        ИдРознЦена = "РозничнаяЦена";
    ИначеЕсли ДокумВид = "РеализацияРозница" Тогда
        ИдРознЦена = "Цена";
    ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда
        Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда
            ИдРознЦена = "Цена";
        Иначе
            Предупреждение("Нельзя печатать ценники при перемещении
                           |ТМЦ на оптовый склад!", 60);
            Возврат;    
        КонецЕсли;
    Иначе
        Возврат;    
    КонецЕсли;
    
    //  Создание Таблицы для выходного отчета
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    
    ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);
    
    Столбик = 0;
    Ряд     = 0;
    
    Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку() = 1 Цикл
        Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
             Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
                 Продолжить;    
             КонецЕсли;
        КонецЕсли;
         ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);    
         
ЦенаПродажи=глОкруглить(ВремЦена , 1);
КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если  вздумаешь оставить копейки в Цене продажи

ЦенаПродажи=Цел(ЦенаПродажи);
СкидкаЦена=глОкруглить(Окр(ВремЦена-(ВремЦена*0.02),2,1), 0.5); //отняли 5% и округлили до 50 коп.

СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки

СкидкаЦена=Цел(СкидкаЦена);
         
         
         
         
         
        ПечРозн    = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли
            // ((( dk 16/04/2013
        ПечРубли    = Цел(ВремЦена);
        ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2);
        //сообщить("--------------------------------------------------------------------------------");
    //    Сообщить(ВремЦена);
        //сообщить(ПечКопейки);
        // dk )))
        
        
        
        ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "")+"/"+Докум.Номенклатура.Код+"/";
        ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения));
        глОживить(1);
    КонецЦикла;
    
    Если Устройство = 0 Тогда
        Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Товарные ценники","");
    Иначе    
        Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
        Таб.КоличествоЭкземпляров(КолвоКопий);
        Таб.Напечатать(0);
    КонецЕсли;
    
КонецПроцедуры // Печать()

//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Кнопка "Печать"
//
// Описание:
//
Процедура ПоКнопкеПечать()
    
    Если Док.Выбран() = 0 Тогда
        Предупреждение("Не выбран документ!", 60);
        Возврат;
    КонецЕсли;
    
    Печать(Док);
    
КонецПроцедуры // ПоКнопкеПечать()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
    
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        
        Докум      = Форма.Параметр.Получить("Контекст");
        Устройство = Форма.Параметр.Получить("Устройство");
        КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
    
        Печать(Докум, Устройство, КолвоКопий);
        Статусвозврата(0);
        Возврат;
    КонецЕсли;
    
КонецПроцедуры // ПриОткрытии()
125 Злопчинский
 
10.03.17
✎
12:28
помедленнее, я записываю!
126 Fedor-1971
 
10.03.17
✎
12:40
(124)измени:
глФРМ(ВремЦена) - если это вычисление цены со скидкой, то
СкидкаЦена=глОкруглить(глФРМ(ВремЦена),2,1), 0.5);

Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="", ЦенаПродажи="", КопейкиПродажи="", СкидкаЦена="", СкидкаКопейки="") Экспорт

ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения), ЦенаПродажи, КопейкиПродажи, СкидкаЦена, СкидкаКопейки);

и будет тебе счасце
127 Fedor-1971
 
10.03.17
✎
12:44
(125) стенограмма заседания совета профилактики безграмотности?
ТС реально далёк от программирования, круто вляпался пытаясь что-то исправить
128 Fedor-1971
 
10.03.17
✎
12:47
126+ вот так: СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.5); Остались лишние параметры. Пока можешь не менять, отладь то что сейчас есть
129 Georg68
 
10.03.17
✎
12:56
Нет счастья

{G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(127)}: Переменная не определена (Таб)
Таб<<?>>.Напечатать(0);
{G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(128)}: Переменная не определена (Таб)
КонецЕсли;<<?>>
{G:\1CBASES\DB\EXTFORMS\PRNFORMS\___ЦЕНА_6ШТ_2_СМЕСИ.ERT(129)}: Обнаружено логическое завершение исходного текста модуля
130 Fedor-1971
 
10.03.17
✎
12:59
(129) показывай код, что у тебя получилось
131 Georg68
 
10.03.17
✎
12:59
А вот так
СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.5);

вот так
КолвоИнтервал    = Числ / Порядок;
{Глобальный модуль(243)}: Операция деления не определена для строковых величин
132 Fedor-1971
 
10.03.17
✎
12:59
130+ опять где-то не поставил ";"
133 Georg68
 
10.03.17
✎
13:00
Перем ПечФирма;
Перем ПечРубли, ПечКопейки;
//******************************************************************************
// ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд)
//
// Параметры:
//  Таб             - таблица, в которую выполняется вывод ценника
//  ПечНаименование - наименование ТМЦ
//  ПечЕдиница      - единица измерения ТМЦ
//  ПечРозн         - цена ТМЦ
//  Столбик         - номер столбика.
//  Ряд             - номер ряда
//
// Возвращаемое значение:
//  Нет.
//
// Описание:
//  Добавляет ценник в таблицу.
//

      Процедура ДобавитьЦенник(Таб, Фирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд,Производитель, ПечКод="", ЦенаПродажи="", КопейкиПродажи="", СкидкаЦена="", СкидкаКопейки="") Экспорт
     Столбик = Столбик + 1;
    
     Колонка     = ((Столбик - 1) % 3) + 1;
     Ряд          = Цел(((Столбик - 1) % 5)/1) + 1;
    
     Если (Колонка = 1) И (Ряд = 1) И (Столбик > 1) Тогда
          Таб.НоваяСтраница();
     КонецЕсли;
    
     Если Колонка = 1 Тогда
          Таб.ВывестиСекцию("Товар|Ценник");
     Иначе
          Таб.ПрисоединитьСекцию("Товар|Ценник");
     КонецЕсли;
    
КонецПроцедуры // ДобавитьЦенник()

//******************************************************************************
// Печать(Докум, Устройство=0, КолвоКопий=1)
//
// Параметры:
//  Докум      - контекст выводимого документа (ПереоценкаРозница, ПоступлениеТМЦРозница),
//  Устройство - если 0, то вывод на экран, иначе - на принтер,
//               необязателен, по умолчанию - на экран,
//  КолвоКопий - количество копий, по умолчанию - 1.
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  Формирует таблицу с ценниками.
//
Процедура Печать(Докум, Устройство=0, КолвоКопий=1)
    
    ДокумВид = Докум.Вид();
    Если ДокумВид = "ПереоценкаРозница" Тогда
        ИдРознЦена = "ЦенаНовая";
    ИначеЕсли ДокумВид = "ПоступлениеТМЦРозница" Тогда
        ИдРознЦена = "РозничнаяЦена";
    ИначеЕсли ДокумВид = "РеализацияРозница" Тогда
        ИдРознЦена = "Цена";
    ИначеЕсли ДокумВид = "ПеремещениеТМЦ" Тогда
        Если Докум.СкладПолучатель.РозничныйСклад = 1 Тогда
            ИдРознЦена = "Цена";
        Иначе
            Предупреждение("Нельзя печатать ценники при перемещении
                           |ТМЦ на оптовый склад!", 60);
            Возврат;    
        КонецЕсли;
    Иначе
        Возврат;    
    КонецЕсли;
    
    //  Создание Таблицы для выходного отчета
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    
    ПечФирма = СокрЛП(Докум.Фирма.ЮрЛицо.ПолнНаименование);
    
    Столбик = 0;
    Ряд     = 0;
    
    Докум.ВыбратьСтроки();
    Пока Докум.ПолучитьСтроку() = 1 Цикл
        Если ДокумВид = "ПереоценкаРозница" Тогда // пропускаем ТМЦ, где цена не менялась
             Если Докум.ЦенаСтарая = Докум.ЦенаНовая Тогда
                 Продолжить;    
             КонецЕсли;
        КонецЕсли;
         ВремЦена = Докум.ПолучитьАтрибут(ИдРознЦена);    
         
ЦенаПродажи=глОкруглить(ВремЦена , 1);
КопейкиПродажи=Прав(Строка(ЦенаПродажи-Цел(ЦенаПродажи)),2); // на случай если  вздумаешь оставить копейки в Цене продажи

ЦенаПродажи=Цел(ЦенаПродажи);
СкидкаЦена=глОкруглить(глФРМ(ВремЦена), 0.2); //отняли 5% и округлили до 50 коп.

СкидкаКопейки=Прав(Строка(СкидкаЦена-Цел(СкидкаЦена)),2); // твои копейки

СкидкаЦена=Цел(СкидкаЦена);
                             
         
        ПечРозн    = глФРМ(ВремЦена); // печатаем по розничным ценам - поэтому глРубли
            // ((( dk 16/04/2013
        ПечРубли    = Цел(ВремЦена);
        ПечКопейки  = Прав("00" + ((ВремЦена*100) % 100), 2);
        //сообщить("--------------------------------------------------------------------------------");
    //    Сообщить(ВремЦена);
        //сообщить(ПечКопейки);
        // dk )))
        
        
        
        ПечНаименованиеТМЦ = СокрЛП(Докум.Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Докум.Номенклатура.Артикул), "")+"/"+Докум.Номенклатура.Код+"/";
        ДобавитьЦенник(Таб, Докум.Фирма, ПечНаименованиеТМЦ, Докум.Единица, ПечРозн, Столбик, Ряд,СокрЛП(Докум.Номенклатура.СтранаПроисхождения), ЦенаПродажи, КопейкиПродажи, СкидкаЦена, СкидкаКопейки);

        глОживить(1);
    КонецЦикла;
    
    Если Устройство = 0 Тогда
        Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников");
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Товарные ценники","");
    Иначе    
        Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
        Таб.КоличествоЭкземпляров(КолвоКопий);
        Таб.Напечатать(0);
    КонецЕсли;
    
КонецПроцедуры // Печать()

//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Кнопка "Печать"
//
// Описание:
//
Процедура ПоКнопкеПечать()
    
    Если Док.Выбран() = 0 Тогда
        Предупреждение("Не выбран документ!", 60);
        Возврат;
    КонецЕсли;
    
    Печать(Док);
    
КонецПроцедуры // ПоКнопкеПечать()

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриОткрытии()
    
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        
        Докум      = Форма.Параметр.Получить("Контекст");
        Устройство = Форма.Параметр.Получить("Устройство");
        КолвоКопий = Форма.Параметр.Получить("КоличествоКопий");
    
        Печать(Докум, Устройство, КолвоКопий);
        Статусвозврата(0);
        Возврат;
    КонецЕсли;
    
КонецПроцедуры // ПриОткрытии()
134 Fedor-1971
 
10.03.17
✎
14:40
(131) тогда засада,
делай так СкидкаЦена=глОкруглить(Число(глФРМ(ВремЦена)), 0.5);
или верни назад то что было

(133) по коду ошибки не видно, кликни в конфигураторе по тексту ошибки и увидишь где она
135 Georg68
 
10.03.17
✎
14:44
Вооот. Пальцев то было у всех, а уж если профи умывают руки, нефиг на простого юзера наезжать ))
136 Масянька
 
10.03.17
✎
14:46
Я-то думала, что уже всё работает...
137 Fedor-1971
 
10.03.17
✎
14:47
(135) о как простой юзер, ты откуда взял текст ошибки?
138 Fedor-1971
 
10.03.17
✎
14:48
137+ или предлагаешь угадать что в твоём коде строка 127?
139 Georg68
 
10.03.17
✎
14:50
Чего уж я ошибку скопировать не могу.
140 Georg68
 
10.03.17
✎
14:51
Ничего не работает, возвращаюсь первоначальному варианту, там хоть до рубля округлял.
141 Fedor-1971
 
10.03.17
✎
14:52
(140) ну это как знаешь. Так и не ответил где вылезла ошибка в конфигураторе или в пользовательском режиме
142 Georg68
 
10.03.17
✎
14:53
В пользовательском, когда на печать вывожу
143 Масянька
 
10.03.17
✎
14:55
(135) Профи (это не про меня) - не умывают руки. Просто сложно "на пальцах" объяснять.
Если есть TeamViewer - давай, пока есть время.
144 Fedor-1971
 
10.03.17
✎
14:55
(142) и не даёт возможности щёлкнуть по ошибке? Чай обманываешь, ученик.
145 Georg68
 
10.03.17
✎
14:57
Есть ТИМ
146 Georg68
 
10.03.17
✎
14:57
Готовы?
147 Fedor-1971
 
10.03.17
✎
14:59
(146) давай ID и Пароль
148 Fedor-1971
 
10.03.17
✎
15:00
(147) есть 10 минут
149 Georg68
 
10.03.17
✎
15:03
477 396 503
150 Georg68
 
10.03.17
✎
15:03
a4k3m4
151 Georg68
 
10.03.17
✎
15:04
2 монитора
152 Fedor-1971
 
10.03.17
✎
15:04
(151) ща обновлюсь
153 Fedor-1971
 
10.03.17
✎
15:06
869 320 753 добавь в белый список
154 Georg68
 
10.03.17
✎
15:07
и так пройдет
155 Fedor-1971
 
10.03.17
✎
15:08
(154) "Вы находитесь в чёрном списке этого партнёра или не входите в белый список"
156 Fedor-1971
 
10.03.17
✎
15:10
уже вернул?
157 Georg68
 
10.03.17
✎
15:10
угу
158 Fedor-1971
 
10.03.17
✎
15:11
ладно, чего не хватает в таком раскладе?
159 Georg68
 
10.03.17
✎
15:12
округление в минус до рубля
хот елось бы до 50коп
160 Масянька
 
10.03.17
✎
15:15
(147) Вот чего раньше молчал?
161 Fedor-1971
 
10.03.17
✎
15:18
тут надо копейки?
162 Georg68
 
10.03.17
✎
15:18
до 50коп
163 Fedor-1971
 
10.03.17
✎
15:25
пробуй
164 Fedor-1971
 
10.03.17
✎
15:40
Держи и радуйся, 15 минут
165 Fedor-1971
 
10.03.17
✎
15:40
с наведением красоты
166 Georg68
 
10.03.17
✎
15:41
Математически округляет сейчас.
Ну фиг с ним
167 Fedor-1971
 
10.03.17
✎
15:42
(166) а как тебе нужно?
168 Georg68
 
10.03.17
✎
15:42
в меньшую сторону
169 Georg68
 
10.03.17
✎
15:43
в первом топике написал
170 Georg68
 
10.03.17
✎
15:43
да ладно
171 Georg68
 
10.03.17
✎
15:44
номер телефона или карточку для дотации можно?
172 Fedor-1971
 
10.03.17
✎
15:46
(171) В РБ тебе золотой платёж будет
тогда так
СкидкаКопейки=?(СкидкаКопейки > 50, 50, 0);
173 Fedor-1971
 
10.03.17
✎
15:47
Сам модернизируешь или показать?
174 Fedor-1971
 
10.03.17
✎
16:03
173 Только, Бога ради, в модуле, а не в ячейке печатной формы
175 Georg68
 
10.03.17
✎
16:05
вот эту строку изменить?

СкидкаКопейки=?(СкидкаКопейки=0,"00",Строка(СкидкаКопейки));
176 Fedor-1971
 
10.03.17
✎
16:07
(175) да, СкидкаКопейки=?(СкидкаКопейки >= 50, "50", "00");
177 Georg68
 
10.03.17
✎
16:13
только <= надо знак
178 Georg68
 
10.03.17
✎
16:15
Всё равно он непонятно считает, но с процентами всегда так
179 azernot
 
10.03.17
✎
16:25
Функция ОкруглитьДО(ИсходноеЧисло, РазрядОкругления = 0.5, РежимОкругления = 3);
    
    ОстатокОтДеления = ИсходноеЧисло % РазрядОкругления;
    Если РежимОкругления = 1 Тогда
        //Обычный по мат. правилам
        Результат = ИсходноеЧисло - ?(ОстатокОТДеления>=(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
    ИначеЕсли РежимОкругления = 2 Тогда
        //Обычный по мат. правилам, 0.5 округляется в меньшую сторону
        Результат = ИсходноеЧисло - ?(ОстатокОТДеления>(РазрядОкругления/2), -РазрядОкругления + ОстатокОТДеления, ОстатокОТДеления);
    ИначеЕсли РежимОкругления = 3 Тогда
        //В меньшую сторону
        Результат = ИсходноеЧисло - ОстатокОтДеления;
    ИначеЕсли РежимОкругления = 4 Тогда
        //В большую сторону
        Результат = ИсходноеЧисло - ОстатокОтДеления + РазрядОкругления;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции
180 Fedor-1971
 
10.03.17
✎
16:48
(177) в таком варианте 205,2 = 205,50, а 205,52 = 205,00 как-то гнутенько и даже близко на округление не похоже.
Там где идёт вычисление СкидкаКопейки замени 0,5 на 0,01 и получишь цену округлённую до копеек, дальше строка из (176)
181 Fedor-1971
 
10.03.17
✎
16:55
180 не, исправляй в вычислении СкидкаЦена, там есть округление до 0,5