Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Если кто сталкивался с написанием чего-то для бухгалтерии - знает проблему округлений. Логика бухгалтера такова: каждое вычисление округляется до копеек, то есть для получения правильной с точки зрения бухгалтера суммы, например, такого выражения: (A * B + C) / D необходимо написать так: round(round(round( A * B) + C) / D), где round - округление до 2х знаков после запятой. В общем при наличии отсутствия типа Decimal все бухгалтерские формулы превращаются в километровый кошмар. Возникла наверняка неоригинальная мысль - хранить всё в Integer, то есть - в копейках, а в рублях - только отображать. Есть у кого-то опыт использования копеек, если есть - какая кривизна меня ждет в связи с этим, думал-думал но так и не нашел реальных препядствий. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 11:38 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Используй тип Currency в Access. Однако, проблема округлений всегда будет стоять, а твоя конструкция из Round'ов, мягко выражаясь, не решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 12:15 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
конструкция с раундами очень даже выход, проблема округлений у нас была снята после поэтапного округления каждой суммы, то есть повторений действий бухгалтера с калькулятором, грубо говоря. Но конструкции дюже громоздкие получаются, хочется попробовать как-то обойти. Вот и вопрошаю... А вот currency как раз - он что может дать полезного? currency, на сколько я помню, хранит не 2 а 4 знака после запятой - опять округлять придется. И что вообще значит - "проблема округлений" и "мягко выражаясь не решение"? В данном виде проблемы, кроме громоздкости, нет и не решение ли то решение, которое дает правильный результат именно с точки зрения бухгалтера? Думаю - как раз решение... Да и вопрос не в том. А в копейках кто-нить пробовал хранить все-таки? В Integer? Текстовые поля, мемо, булевые и упаси Бог дату/время не предлагать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 12:28 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
мысль хорошая :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 12:39 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Пример: Возьмите 100 рублей по 1 рублю. Выделите из каждого рубля НДС (16.67%). Напишите: Итого рублей ___ в т.ч. НДС ___. Сложите все 100 рублей и 100 НДС. А теперь вопрос: сумма НДС равна НДС от суммы рублей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 13:02 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Эту проблему надо решить и запостить в FAQ! Для начала разберем от куда ноги растут. Все очень просто. Есть скажем документ: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Весь этот вопрос в том, что на разных этапах можно применить округление. Можно на уровне строки. Можно на уровне итого за период. А что делать. Когда весь период (пол года) складывается из периодов (документов) по месяцам? Предложенное мной решение округлять каждую строку до второго знака не встретило понимания, оно и понятно 5 центов тут за 10 дней. 5 центов там * на количество документов легко можно и за $1000 вылезти. Остается одно... Учитывать итоговую сумму за месяц. Ее округлять. Но при этом "Итого" как сумму полей показывать низя. Только как результат по всей формуле с учетом месяца а не дня! А вообще-то в бухгалтерии статья расходов под округление заведена! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 13:14 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
сумма НДС однозначно не равна НДС от суммы если хотя бы одна из сумм прошла с округлением. Считать НДС от итога - абсурд. Подумайте сами, с каждой накладной, например, Вы получаете столько-то НДС, а потом в конце месяца почему-то собираетесь отменить все эти суммы НДС, содержащиеся в оформленых документах, и посчитать нечто непонятное от общей суммы сделок? Бред. Только при чем тут это?... Да, спросите у бухгалтера как он работает. Как работает и 1с, кстати. Как работают те, у кого стоит сиквель. Они используют децимал(2,0), который не превращается в хвост цифр, а округляется каждая операция, КАЖДАЯ!!! ёлы. Но в аксессе ну нет его, децимал(2,0). Если лень и бухгалтер пофигист - можно хоть вообще не округлять. Но вот у нас, например - филиалы зависят от основной фирмы, которая всё считает по-человечески с помощью сиквеля. А в филиалах аксессовские базульки, но они не имеют права расходиться в отчетах с основной фирмой. Остаётся вручную округлять каждую операцию, это ПРАВИЛЬНО, но громоздко. Вот и хочется попробовать с интегером. Неужели никто не пробовал? Статья расходов - это только от неленивого бухгалтера с ленивым программистом. Естественно, если уж несвязуха идет - надо же куда-то списывать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 13:47 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
"ПРАВИЛЬНО" - это если ваша база совпадает с базой основной фирмы. Но если взять итоговые суммы, скажем, за год, то наверняка просуммированная за весь период НДС не будет совпадать с НДС, рассчитанным от итоговой суммы. Пример mahoune как раз это иллюстрирует. Так что, округление каждой операции не всегда есть правильный вариант. И вообще, я сильно сомневаюсь, что запись копеек в отдельном поле или отдельной переменной вдруг резко поможет решить проблему. Ноги-то растут из большого хвоста после запятой, а не из типов переменных. Если надо разделить 1 на 3, то всегда получится 0,3(3), как ты этот результат не храни. Так что если удалось добиться совпадения данных в базе филиала и в основной базе с помощью тотального округления, то не надо ТАК извращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 14:14 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Поддерживаю Suslik 'а Скажем если в резулбтате каких-либо операций (вычисление средней себестоимости, к примеру) вышло 1234.99 копеек, в поле Int запишется усеченное, а не округленное значение 1234. Следовательно придется предварительно его правильно округлить. Так какой тогда толк от этого, если тот-же геморой? Проще округлять до копеек денежный тип. З.Ы. А цены лучше хранить без НДС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 14:20 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Мда. Господа, кто вам сказал что сумма НДС должна совпадать с НДС суммы? Блин... Это, конечно, частое заблуждение, но для математика тут должно быть всё ясно. То, что они не совпадают - это НОРМАЛЬНО, никто не потребует их совпадения. Итог НДС за период это сумма всех НДС отдельных документов. А общая сумма - это сумма выплат по этим документам. Они напрямую не связаны никаким процентным соотношением. Это аксиома и говорить об этом нет смысла. @Pavel - по поводу неизбежности использования округления мысль ясна. А, кстати, как хранится мани? Как у мани округляются хвосты? Какой тип округления используется? (статистический или математический) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:11 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
В чем громоздкость округления? Напиши 1(одну) сколь угодно сложную функцию, и юзай ее. Проблема округления решается тем, что надо сформулировать правило, как это делаешь ты и последовательно его соблюдать. Т.е. способ расчета НДС документа на твоей форме, в СФ и в месячном отчете должен быть один и тот же. Хранить в целых действительно морока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:22 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
да функция есть... один из выходов, правда, это написать доп. функции, соответствующие математическим, но с округленным результатом. Кстати, кто там мне писал что интегер просто отбрасывает хвост? Вот интегер как раз использует статистическое округление, а в бухгалтерии - математическое. Вот этого я не учел, полез проверять - абыдно. Тогда вопрос такой: правила округления где-нить задаются или это прошито намертво? Потому как если интегер использует исключительно статистическое округление, тогда вот на самом деле есть смысл от него отказаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:36 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
У нас есть такая функция, не я писал, но бухгалтерию устраивает Public Function Okr(dblSumma As Double) As Double On Error GoTo Error_Okr Okr = Fix(dblSumma) + CLng((dblSumma - Fix(dblSumma)) * 100) / 100 Exit_Okr: Exit Function Error_Okr: MsgBox Error$ Resume Exit_Okr End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:47 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Я в поддержку идеи автора вопроса. Эта тема кстати обсуждалась в разделе по SQL server. Там тоже такая проблема есть. Приведу то, что я вынес оттуда: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:55 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Ну, функция у нас как я говорил и работает, но если уж использовать - я думаю стоит написать функции умножения и деления с округленным результатом, при их использовании вместо " * " и " / " с типом мани должно вроде быть все Ок (кстати - мани хранится как фиксед, нашел). Резюме: мани и 2 дополнительные функции должны обеспечить негромоздкие формулы и правильные вычисления. А всё-таки, кто что знает по поводу округлений? Это что, буржуйская диверсия? Может есть какая-нить переменная screw_russian_programmers_working_with_finances установленная в ноль вместо единицы, обеспечивающая бесполезность использования встроенного округления? Или они аксесс под статистику ваяли, гады? Или в америце это округление является стандартом в отличие от России? PS Резюме-2 : тут кажись надо вынести отдельным форумом тему "бухгалтерские расчеты" ))))))) Как-то активно всё ушло в ту степь, значит - наболело %)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:00 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Братцы, вы проги для себя пишете? Если для себя, то как хотите, так и округляйте. А если есть заказчик, хоть какой угодно левый, так, IMHO, у него и надо спросить, как ему округлять и суммировать. И если он сказал "люминь", то придется писать функции для округления, ничего не поделаешь. Я как-то писал для округления до ТРЁХ ЗНАЧАЩИХ цифр. Нафига - не понятно, а что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:05 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
к Дену. а как Вы объясните своей функцией вот такой результат? Okr(5.595)= 5,59 . вообще-то должно быть 5,6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:11 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Не успел - @ВладК: а почему в сиквеле не рассматривался фиксед децимал? Я тоже нашел какой-то топик на том форуме, но кажись там кончилось тем, что резонно уперлись в децимал(2,0). У нас на сиквеле децимал используется, вполне корректно. Флоат, действительно, штука хитрая, но мани вроде как действительно хранятся не как флоат, а как фиксед, так что должны быть тоже предсказуемы (хотя проверить надо...). А вот если бы изменить принцип округления - тогда целочисленные были бы гораздо удобнее. Самое обидоное что ни в какой литературе по аксессу я не могу найти ничего подробного ни по поводу хранения мани, ни по поводу округлений... Типа как оно есть - так и юзайте... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:13 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
@ Savik - Есть прихоти заказчика, а есть правила. В том числе правила округления в финансовой отчетности. А то так получается что для себя - это хоть goto пиши... К тому же вопрос не в принципах округления, тут может быть только правильно и всё остальное, а в том, как хранить данные. Или код программы по-вашему тоже предоставляет заказчик? @ДиД - может Вы в курсе по поводу правил округления аксесса? Это непобедимо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:20 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Для ДиД , а попробуйте okr(cdbl(5.695)) -)) будет 5.7.. Хрен его знает этот Access. Сейчас у нас уже все по другому.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 16:23 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Все уже давно решено. round пользоваться нельзя. все исследования выложены у Гетца "Программирование на VB и VBA" ,а вот его функция Public Function okrug(Number As Variant, NumDigits As Long) As Double Dim dblPower As Double Dim varTemp As Variant Dim intsgn As Integer If Not IsNumeric(Number) Then okrug = 0 Exit Function 'Err.Raise 5 End If dblPower = 10 ^ NumDigits intsgn = Sgn(Number) Number = Abs(Number) varTemp = CDec(Number) * dblPower + 0.5 okrug = intsgn * Int(varTemp) / dblPower End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 17:05 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Ясно. Собственно - так и делаем... Значит использование интегера особого смысла не имеет, а функции округленного умножения и деления при имеющейся функции округления сварганить несложно... Остался один вопрос - мани ТОЧНО хранится как фиксед? Боюсь я этого аксесса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 17:14 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
Мани-это целое число, деленное на 10000. Я в нем штуки люблю хранить. Нахлебался с милионными. Чо ты жалуешся на Round? Напиши Round(X+0.5),(X+0.99), напиши чо хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 18:43 |
|
||
|
Хранение сумм в копейках: какие мнения?
|
|||
|---|---|---|---|
|
#18+
на раунд не жалуюсь тчк просто он округляет статистически зпт а мне нужно математически тчк за мани спасибо тчк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32094111&tid=1682498]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 349ms |

| 0 / 0 |
