Округление Round
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Округление Round
День добрый коллеги,
Нарвался на грабли там где совсем не ждал, округляю до копеек 0.9045 и не получаю 0.91 ! Нахожусь в грустном размышлении ...
Round(0.9045,.001) = 0.905
Round(0.9045,.01) = 0.9
Нарвался на грабли там где совсем не ждал, округляю до копеек 0.9045 и не получаю 0.91 ! Нахожусь в грустном размышлении ...
Round(0.9045,.001) = 0.905
Round(0.9045,.01) = 0.9
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Округление Round
А почему 0.9045 должно округляться до 0.91? По моему, так и должно быть, 0.9.
Единственный момент, это правило округления 5 на хвосте. Round(0.9045,.001) = 0.905, а может быть и Round(0.9045,.001) = 0.904. По правилам исчисления, принятым в СССР был второй вариант, а по правилам в англоязычных странах (вроде) был первый. Соответственно, в кларионе первый используется. В 1С была специальная настройка, по какому правилу округлять. Мы на это обычно забиваем, поэтому иногда возникают отличия в результатах расчётов с 1С.
Иногда требуется округление в большую сторону, не зависимо от правил округления. В этом случае использую самодельную функцию roundMax, производную от round.
Единственный момент, это правило округления 5 на хвосте. Round(0.9045,.001) = 0.905, а может быть и Round(0.9045,.001) = 0.904. По правилам исчисления, принятым в СССР был второй вариант, а по правилам в англоязычных странах (вроде) был первый. Соответственно, в кларионе первый используется. В 1С была специальная настройка, по какому правилу округлять. Мы на это обычно забиваем, поэтому иногда возникают отличия в результатах расчётов с 1С.
Иногда требуется округление в большую сторону, не зависимо от правил округления. В этом случае использую самодельную функцию roundMax, производную от round.
C6/C12, ШВС, tps/btrieve.
Округление Round
Да вот как раз грабли из 1С и прилетели. Теперь тоже самоделку лепить придется (бодаться с ними себе дороже)
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Округление Round
Из некоторой конфигурации 1С, которая, судя по реализации, правленна некоторым программистом 1С ...
Я бы не рекомендовал идти на поводу и повторять безграмотные ошибки. Потом хуже будет.
Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Округление Round
В том и дело, что не ошибка, а влияние стандартной настройки в среде 1С (по моему даже не в конкретной конфигурации, а сверху).Игорь Столяров писал(а): 19 Март 2025, 16:50Из некоторой конфигурации 1С, которая, судя по реализации, правленна некоторым программистом 1С ...
Я бы не рекомендовал идти на поводу и повторять безграмотные ошибки. Потом хуже будет.
Просто разработчики клариона не знали, что в какой-то стране могут быть несколько иные правила округления.

Справедливости ради надо сказать, что попасть на такую ситуацию с расхождениями надо постараться. Скорее всего, на каком-то весовом товаре, да еще с копейками в цене.
C6/C12, ШВС, tps/btrieve.
Округление Round
Никаких "граблей". Вы округляете до 2-го знака после запятой. Соответственно анализируется только 3-ий знак, если он 5 и больше - прибавляется 1 ко второму знаку и далее по правилам математики. У Вас третий (анализируемый) знак после запятой "4", значит этот и последующий знаки просто отбрасываются.seawolf писал(а): 19 Март 2025, 14:40 День добрый коллеги,
Нарвался на грабли там где совсем не ждал, округляю до копеек 0.9045 и не получаю 0.91 ! Нахожусь в грустном размышлении ...
Round(0.9045,.001) = 0.905
Round(0.9045,.01) = 0.9
Если где-то (возможно 1С) придумали свой алгоритм - это их самодеятельность.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Округление Round
Может еще причина расхождения быть из-за того, что вычисляете значение с итоговой суммы, а они по строке (что обычно правильно). Или высчитываем, например, ндс из полной цены, а они от цены без ндс. В последнем случае используем правило ввода в строке накладной суммы, а не цены, а цену рассчитываем от нее, округляя до 4 знаков после запятой, чтобы компенсировать погрешности округления.
Иногда бывают случаи, что и этого недостаточно, тогда предусматриваем корректировочное значение. У нас оно общее в заголовке накладной, программа контролирует только, чтобы не превышало 1 руб от посчитанных значений построчно.
Пример из недавней практики. Птицефабрика поставляет курятину, расфасованную на подложках. У каждой подложки свой вес. И они в накладной указывают каждую подложку в отдельной строке, цена на кг, сумма и ндс, соответственно, считаются построчно. Магазин продает по кг, и не хочет вводить в приходной накладной кучу строк, а хочет ввести одной строкой, указав итоговый вес. Соответственно, получают расхождение в ндс.
Иногда бывают случаи, что и этого недостаточно, тогда предусматриваем корректировочное значение. У нас оно общее в заголовке накладной, программа контролирует только, чтобы не превышало 1 руб от посчитанных значений построчно.
Пример из недавней практики. Птицефабрика поставляет курятину, расфасованную на подложках. У каждой подложки свой вес. И они в накладной указывают каждую подложку в отдельной строке, цена на кг, сумма и ндс, соответственно, считаются построчно. Магазин продает по кг, и не хочет вводить в приходной накладной кучу строк, а хочет ввести одной строкой, указав итоговый вес. Соответственно, получают расхождение в ндс.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Округление Round
Здесь просто грубое нарушение. Налоговый кодекс, часть II. Объектом налогообложения является товар, а не документ.
Ну и просто невозможно таким хитрым образом расчитать налог при выписки товаров с разной ставкой НДС ...
И здесь история про 1С. Сам видел. Лет 10-12 назад поставлялась штатная конфигурация 1С в которой налог брался от
суммы документа. Но ! При оплате подписки ИТС приносили и устанавливали "исправленную" конфигурацию. Всё так просто.

Make Clarion Great Again ! 
Округление Round
Как раз я НДс вычисляю построчно (попозиционно). А здесь НДС мне бухгалтера выделили из итоговой круглой суммы и хотят, чтобы когда делается документ из программы она совпадала. Как резульатат - одна копейка не бьется. Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Округление Round
Нет, в данном случае речь про товар. Он один в документе, просто каждая подложка отписывается поставщиком отдельной строкой, ему так удобно. А магазин все равно вводит вес подложки при продаже на кассе, так как цена за кг и вес подложек гуляет. В принципе, я их желание внести общий вес товара одной строкой понимаю. Вводить 10 строк, в каждой ставя вес, плюс там ещё пересчёт цены продажи по хитрым правилам, много лишней работы. Вводя одну строку с общим весом всех подложек, магазин ничего не нарушает, главное, чтобы сумма ндс была не больше, чем указал поставщик. Потом, конечно, в бухгалтерии вылезет погрешность в оборотке по 41 счёту в разрезе товаров, который ведётся в ценах без ндс. В принципе, это не критично, так как все равно и без этого итоговый остаток в оборотке может рваться с общим сальдо по 41 счету на копейку другую, на это никто не обращает внимания. Для бухгалтеров с повышенным чувством тревожности можно просто итоги в оборотке выставлять по итогам оборотов/остатков на 41 счёте.Игорь Столяров писал(а): 19 Март 2025, 18:50Здесь просто грубое нарушение. Налоговый кодекс, часть II. Объектом налогообложения является товар, а не документ.
Ну и просто невозможно таким хитрым образом расчитать налог при выписки товаров с разной ставкой НДС ...
И здесь история про 1С. Сам видел. Лет 10-12 назад поставлялась штатная конфигурация 1С в которой налог брался от
суммы документа. Но ! При оплате подписки ИТС приносили и устанавливали "исправленную" конфигурацию. Всё так просто.![]()
C6/C12, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5226
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Округление Round
По закону, ндс считается по строчно, как Игорь правильно написал выше. Если бухи действительно пытаются посчитать ндс от итоговой суммы в документе, то самое правильно послать их читать налоговый кодекс.seawolf писал(а): 19 Март 2025, 21:29 Как раз я НДс вычисляю построчно (попозиционно). А здесь НДС мне бухгалтера выделили из итоговой круглой суммы и хотят, чтобы когда делается документ из программы она совпадала. Как резульатат - одна копейка не бьется. Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.
Вопросы с округлениями при расчете ндс встают только при приходах, в основном за счёт того, что некоторые поставщики считают ндс сверху от цены без ндс, в то время как большинство коммерческих организаций работают с полными ценами, включающими ндс.
И сейчас сильно на слова бухов полагаться не стоит, они сами часто плавают. Я практически всегда спрашиваю ссылку на нормативный документ или разъяснение от налоговой. А то так можно далеко зайти. Лучше предварительно самому погуглить вопрос, чтобы лучше сориентироваться, сейчас в интернете практически все есть. Главное спрашивать ссылку дипломатично. Это нормальная практика, просто надо понимать, что бухи сильно нервные из-за постоянно меняющегося законодательства, особенно в период сдачи отчётности.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8016
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Округление Round
Золотые слова ! Аналогично и давно.finsoftrz писал(а): 19 Март 2025, 21:58 Я практически всегда спрашиваю ссылку на нормативный документ или разъяснение от налоговой.
Мир изменился. Если раньше бухи читали Консультан и Гарант, то сейчас смотрят блогеров.
И после начинают всю услышанную там хе..ю (прости Господи !) транслировать программистам.

Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Округление Round
Мы помню две разных печатных формы делали, в одной построчно, в другой от суммы, на выбор клиентаseawolf писал(а): 19 Март 2025, 21:29 Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.