Округление Round

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Округление Round

Сообщение seawolf »

День добрый коллеги,

Нарвался на грабли там где совсем не ждал, округляю до копеек 0.9045 и не получаю 0.91 ! Нахожусь в грустном размышлении ...

Round(0.9045,.001) = 0.905
Round(0.9045,.01) = 0.9
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3284
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Округление Round

Сообщение Дед Пахом »

По мне так всё верно.
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5226
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 63 раза

Округление Round

Сообщение finsoftrz »

А почему 0.9045 должно округляться до 0.91? По моему, так и должно быть, 0.9.
Единственный момент, это правило округления 5 на хвосте. Round(0.9045,.001) = 0.905, а может быть и Round(0.9045,.001) = 0.904. По правилам исчисления, принятым в СССР был второй вариант, а по правилам в англоязычных странах (вроде) был первый. Соответственно, в кларионе первый используется. В 1С была специальная настройка, по какому правилу округлять. Мы на это обычно забиваем, поэтому иногда возникают отличия в результатах расчётов с 1С.
Иногда требуется округление в большую сторону, не зависимо от правил округления. В этом случае использую самодельную функцию roundMax, производную от round.
C6/C12, ШВС, tps/btrieve.
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Округление Round

Сообщение seawolf »

Да вот как раз грабли из 1С и прилетели. Теперь тоже самоделку лепить придется (бодаться с ними себе дороже)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

Округление Round

Сообщение Игорь Столяров »

seawolf писал(а): 19 Март 2025, 15:38 Да вот как раз грабли из 1С и прилетели
Из некоторой конфигурации 1С, которая, судя по реализации, правленна некоторым программистом 1С ...
Я бы не рекомендовал идти на поводу и повторять безграмотные ошибки. Потом хуже будет.
Make Clarion Great Again ! 😎
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5226
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 63 раза

Округление Round

Сообщение finsoftrz »

Игорь Столяров писал(а): 19 Март 2025, 16:50
seawolf писал(а): 19 Март 2025, 15:38 Да вот как раз грабли из 1С и прилетели
Из некоторой конфигурации 1С, которая, судя по реализации, правленна некоторым программистом 1С ...
Я бы не рекомендовал идти на поводу и повторять безграмотные ошибки. Потом хуже будет.
В том и дело, что не ошибка, а влияние стандартной настройки в среде 1С (по моему даже не в конкретной конфигурации, а сверху).
Просто разработчики клариона не знали, что в какой-то стране могут быть несколько иные правила округления. :-)
Справедливости ради надо сказать, что попасть на такую ситуацию с расхождениями надо постараться. Скорее всего, на каком-то весовом товаре, да еще с копейками в цене.
C6/C12, ШВС, tps/btrieve.
Alex_G
Бывалый
Сообщения: 80
Зарегистрирован: 09 Ноябрь 2009, 13:04
Поблагодарили: 2 раза

Округление Round

Сообщение Alex_G »

seawolf писал(а): 19 Март 2025, 14:40 День добрый коллеги,

Нарвался на грабли там где совсем не ждал, округляю до копеек 0.9045 и не получаю 0.91 ! Нахожусь в грустном размышлении ...

Round(0.9045,.001) = 0.905
Round(0.9045,.01) = 0.9
Никаких "граблей". Вы округляете до 2-го знака после запятой. Соответственно анализируется только 3-ий знак, если он 5 и больше - прибавляется 1 ко второму знаку и далее по правилам математики. У Вас третий (анализируемый) знак после запятой "4", значит этот и последующий знаки просто отбрасываются.
Если где-то (возможно 1С) придумали свой алгоритм - это их самодеятельность.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5226
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 63 раза

Округление Round

Сообщение finsoftrz »

Может еще причина расхождения быть из-за того, что вычисляете значение с итоговой суммы, а они по строке (что обычно правильно). Или высчитываем, например, ндс из полной цены, а они от цены без ндс. В последнем случае используем правило ввода в строке накладной суммы, а не цены, а цену рассчитываем от нее, округляя до 4 знаков после запятой, чтобы компенсировать погрешности округления.
Иногда бывают случаи, что и этого недостаточно, тогда предусматриваем корректировочное значение. У нас оно общее в заголовке накладной, программа контролирует только, чтобы не превышало 1 руб от посчитанных значений построчно.
Пример из недавней практики. Птицефабрика поставляет курятину, расфасованную на подложках. У каждой подложки свой вес. И они в накладной указывают каждую подложку в отдельной строке, цена на кг, сумма и ндс, соответственно, считаются построчно. Магазин продает по кг, и не хочет вводить в приходной накладной кучу строк, а хочет ввести одной строкой, указав итоговый вес. Соответственно, получают расхождение в ндс.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

Округление Round

Сообщение Игорь Столяров »

finsoftrz писал(а): 19 Март 2025, 18:26 Соответственно, получают расхождение в ндс.
Здесь просто грубое нарушение. Налоговый кодекс, часть II. Объектом налогообложения является товар, а не документ.
Ну и просто невозможно таким хитрым образом расчитать налог при выписки товаров с разной ставкой НДС ...

И здесь история про 1С. Сам видел. Лет 10-12 назад поставлялась штатная конфигурация 1С в которой налог брался от
суммы документа. Но ! При оплате подписки ИТС приносили и устанавливали "исправленную" конфигурацию. Всё так просто. :D
Make Clarion Great Again ! 😎
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Округление Round

Сообщение seawolf »

Как раз я НДс вычисляю построчно (попозиционно). А здесь НДС мне бухгалтера выделили из итоговой круглой суммы и хотят, чтобы когда делается документ из программы она совпадала. Как резульатат - одна копейка не бьется. Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5226
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 63 раза

Округление Round

Сообщение finsoftrz »

Игорь Столяров писал(а): 19 Март 2025, 18:50
finsoftrz писал(а): 19 Март 2025, 18:26 Соответственно, получают расхождение в ндс.
Здесь просто грубое нарушение. Налоговый кодекс, часть II. Объектом налогообложения является товар, а не документ.
Ну и просто невозможно таким хитрым образом расчитать налог при выписки товаров с разной ставкой НДС ...

И здесь история про 1С. Сам видел. Лет 10-12 назад поставлялась штатная конфигурация 1С в которой налог брался от
суммы документа. Но ! При оплате подписки ИТС приносили и устанавливали "исправленную" конфигурацию. Всё так просто. :D
Нет, в данном случае речь про товар. Он один в документе, просто каждая подложка отписывается поставщиком отдельной строкой, ему так удобно. А магазин все равно вводит вес подложки при продаже на кассе, так как цена за кг и вес подложек гуляет. В принципе, я их желание внести общий вес товара одной строкой понимаю. Вводить 10 строк, в каждой ставя вес, плюс там ещё пересчёт цены продажи по хитрым правилам, много лишней работы. Вводя одну строку с общим весом всех подложек, магазин ничего не нарушает, главное, чтобы сумма ндс была не больше, чем указал поставщик. Потом, конечно, в бухгалтерии вылезет погрешность в оборотке по 41 счёту в разрезе товаров, который ведётся в ценах без ндс. В принципе, это не критично, так как все равно и без этого итоговый остаток в оборотке может рваться с общим сальдо по 41 счету на копейку другую, на это никто не обращает внимания. Для бухгалтеров с повышенным чувством тревожности можно просто итоги в оборотке выставлять по итогам оборотов/остатков на 41 счёте.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5226
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 63 раза

Округление Round

Сообщение finsoftrz »

seawolf писал(а): 19 Март 2025, 21:29 Как раз я НДс вычисляю построчно (попозиционно). А здесь НДС мне бухгалтера выделили из итоговой круглой суммы и хотят, чтобы когда делается документ из программы она совпадала. Как резульатат - одна копейка не бьется. Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.
По закону, ндс считается по строчно, как Игорь правильно написал выше. Если бухи действительно пытаются посчитать ндс от итоговой суммы в документе, то самое правильно послать их читать налоговый кодекс.
Вопросы с округлениями при расчете ндс встают только при приходах, в основном за счёт того, что некоторые поставщики считают ндс сверху от цены без ндс, в то время как большинство коммерческих организаций работают с полными ценами, включающими ндс.
И сейчас сильно на слова бухов полагаться не стоит, они сами часто плавают. Я практически всегда спрашиваю ссылку на нормативный документ или разъяснение от налоговой. А то так можно далеко зайти. Лучше предварительно самому погуглить вопрос, чтобы лучше сориентироваться, сейчас в интернете практически все есть. Главное спрашивать ссылку дипломатично. Это нормальная практика, просто надо понимать, что бухи сильно нервные из-за постоянно меняющегося законодательства, особенно в период сдачи отчётности.
C6/C12, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

Округление Round

Сообщение Игорь Столяров »

finsoftrz писал(а): 19 Март 2025, 21:58 Я практически всегда спрашиваю ссылку на нормативный документ или разъяснение от налоговой.
Золотые слова ! Аналогично и давно.
Мир изменился. Если раньше бухи читали Консультан и Гарант, то сейчас смотрят блогеров.
И после начинают всю услышанную там хе..ю (прости Господи !) транслировать программистам. :evil:
Make Clarion Great Again ! 😎
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Округление Round

Сообщение RaFaeL »

seawolf писал(а): 19 Март 2025, 21:29 Не вижу пока никакого простого варианта обхода, как дать возможность делать корректировку итоговой суммы НДС на плюс минус копеек перед печатью.
Мы помню две разных печатных формы делали, в одной построчно, в другой от суммы, на выбор клиента
Ответить