|
Проблемы округления копеек | ☑ | ||
---|---|---|---|---|
0
WhiteDragon93
10.06.15
✎
10:27
|
Привет, товарищи!
Беда следующая, есть три типа цен, а именно: 1) Закупочная = Цене поступления; 2) Цена продажи, не включающая НДС = Закупочная + %наценки; 3) Цена, включающая НДС = Цена продажи, не включающая НДС + 18% и округленная до целых. На ценниках, последняя, третья цена. По ней должны продать. Итого имеем, для примера: 1) 60, 2) 80, 3) 95 Как изменить при продаже вторую цену, чтобы она при прибавке НДС давала третью цену. Вопрос "Зачем?" бесполезен, так надо :) |
|||
1
ВРедная
10.06.15
✎
10:30
|
(0) Никак. Потому что завтра у тебя появится другая цена, которая округляется автоматически в другую сторону и все повторится снова, только наоборот.
|
|||
2
WhiteDragon93
10.06.15
✎
10:31
|
(1) Пока что берем сферические условия в вакууме, без универсальности.
|
|||
3
Масянька
10.06.15
✎
10:32
|
(2) Я не поняла... 80 + 18% = 94,4. В чем вопрос?
|
|||
4
butterbean
10.06.15
✎
10:33
|
(0) 95/1.18 ... или нет?
|
|||
5
MrKartez
10.06.15
✎
10:34
|
80 + 18% + 0,5 = 94,9 = 95 Добавлять 0.5 не вариант?
|
|||
6
WhiteDragon93
10.06.15
✎
10:34
|
(3) на ценнике в магазине 95, она округляется до целых при формировании цен. По этой цене и должны отпустить.
|
|||
7
WhiteDragon93
10.06.15
✎
10:37
|
(5) а если цена будет 111, то получится 111+18%+0,5 = 131,48 вместо 131
|
|||
8
ВРедная
10.06.15
✎
10:40
|
(7) а говоришь без универсальности. Вот уже и другие суммы вылезли, которые в другую сторону "неправильно" округляются.
|
|||
9
НЕА123
10.06.15
✎
10:41
|
?(Цел(Ц)=Ц, Ц, Ц+1)
|
|||
10
НЕА123
10.06.15
✎
10:41
|
*
Цел(Ц) + ?(Цел(Ц)=Ц, 0, 1) |
|||
11
bolobol
10.06.15
✎
10:46
|
Цена 2 у вас влияющая на цену 3 по условию 3. А вторая цена расчётная из цены 1. Поэтому цена 3 никак по-другому не может получится, кроме как из цены 2. Т.о. - ответом на ваш вопрос может быть "не требуется менять". Тогда в чём вопрос?
|
|||
12
bolobol
10.06.15
✎
10:49
|
У вас НДС при обратном вычислении получится больше и сумма без НДС станет больше. У меня вопрос - вы её куда запихнуть хотите? Выравнивание розничных цен к ценам, по которым продали, актом переоценки делается.
|
|||
13
MrKartez
10.06.15
✎
10:51
|
(7) Что?
Сообщить("ЧИСЛО РАВНО: "+Окр(Реквизит1+Реквизит1*0.18+0.5)) Только что задал реквизиту1 в обработке число 111, вернуло 131. |
|||
14
WhiteDragon93
10.06.15
✎
10:53
|
(13) Нельзя округлять конечную сумму по строке
|
|||
15
Масянька
10.06.15
✎
10:55
|
(14) Чем не подходит (8) (9)?
|
|||
16
НЕА123
10.06.15
✎
10:56
|
(14)
чем (4) не устраивает? |
|||
17
WhiteDragon93
10.06.15
✎
11:11
|
(16) в некоторых случаях получается верно, в некоторых нет.
То есть мы идем от противного: выделяем цену без НДС, но числа получаются с дробью до десятитысячных, а в 1С точность до сотых. То есть иногда получается *,000018 - подходит без проблем, а иногда - *,07 - а округлять нельзя Либо я где-то что-то упустил. |
|||
18
Масянька
10.06.15
✎
11:11
|
Типовая семерка:
//****************************************************************************** // глОкруглить(Числ, ПорядокОкругления) // // Параметры: // Числ - исходное число // ПорядокОкругления - элемент перечисления Порядки окгугления: // "шаг" округления (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 // Функция глОкруглить(Числ, ПорядокОкругления) Экспорт Перем Рез; Если ПорядокОкругления = Перечисление.ПорядкиОкругления.ОкрТочно Тогда // арифметическое округление до 2-х знаков после запятой Рез = Окр(Числ, 2); Иначе // округление к верхней границе по заданному порядку // преобразуем порядок округления число Порядок = Число(Строка(ПорядокОкругления)); // вычислим количество интервалов, входящих в число КолвоИнтервал = Числ / Порядок; // вычислим целое количество интервалов. КолвоИнтервалЦел= Цел(КолвоИнтервал); Если КолвоИнтервал = КолвоИнтервалЦел Тогда // Числа поделились нацело. Округлять не нужно. Рез = Числ; Иначе Рез = Порядок * (КолвоИнтервалЦел + 1); КонецЕсли; КонецЕсли; Возврат Рез; КонецФункции // глОкруглить() |
|||
19
hhhh
10.06.15
✎
11:17
|
(17) а какой смысл в этом пересчете? У вас есть Цена3 с нее вычисляете НДС Цена / 1.18 * 0.18. Этот НДС платите в бюджет. КАкой смысл привязывать к каким-то ценам там?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |