|
|
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Раньше имел дело с банковским оперднем - там было все просто, при открытии операционного дня по всем счетам подсчитывались обороты, и исходящие остатки за закрытый день и все это сбрасывалось в табличку (ID счета, дата, вх_остатки, исх_остатки, деб_обороты, кред_обороты) в результате оборотная ведомость очень легко строилась за любой период. Каким образом хранятся сведения об остатках счетов в бух. системах, там где нет понятия операционный день? У меня появилась пока только одна идея: Создать похожую табличку ОСТАТКИ_НА_ДАТУ(ID счета, дата, исх_остатки, деб_обороты, кред_обороты) и при создании проводки проверять есть ли запись в этой табличке на дату проводки - если есть update ее, если нет - то insert, но при таком подходе несколько усложняется построение оборотной ведомости на конкретную дату, т.к. придется выбирать записи из этой таблички для данного счета где дата максималльно близка к заданной. Хотелось бы услышать о проверенных и давно работающих решениях, которых наверняка не мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 17:16 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Остатки по счетам на заданную дату в бухгалтерии безполезны. Бухгалтерам надо иметь остатки на начало периода, обороты за период и остатки на конец периода. Минимальный размер периода - один месяц. Начало всегда первым числом месяца, а конец - последним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 18:24 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
PVPОстатки по счетам на заданную дату в бухгалтерии безполезны. Бухгалтерам надо иметь остатки на начало периода, обороты за период и остатки на конец периода. Минимальный размер периода - один месяц. Начало всегда первым числом месяца, а конец - последним. Не всегда безполезны. Например остатки/обороты на счетах денежных средств отслеживаются и по дням, а не только по месяцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 18:37 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
т.о. все-таки нужна таблица, в которую будут записываться остатки на период, и обороты? как в нее будут попадать данные, так как я предложил в вопросе, но интервалом проверки будет текущий месяц? или же бухгалтер должен вызвать какую-то процедуру, которая запишет все данные в эту таблицу по всем счетам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 21:12 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
SashaFУ меня появилась пока только одна идея: Создать похожую табличку ОСТАТКИ_НА_ДАТУ(ID счета, дата, исх_остатки, деб_обороты, кред_обороты) и при создании проводки проверять есть ли запись в этой табличке на дату проводки - если есть update ее, если нет - то insert, но при таком подходе несколько усложняется построение оборотной ведомости на конкретную дату, т.к. придется выбирать записи из этой таблички для данного счета где дата максимально близка к заданной. Хотелось бы услышать о проверенных и давно работающих решениях, которых наверняка не мало.В банках все как-то более-менее организовано и прошедший день с его остатками - это нечто стабильное. Тем более платежи в банках проводятся автоматизированным способом и наверное не бывает такой ситуации, чтобы прошла операция которая не зафиксирована в БД, а потом ее задним числом вводят в компьютер. На предприятиях конечно же этот период, в котором копаются, охватывает как минимум месяц-два, а то и квартал. Есть множество всяких событий, которые проходят в какой-то момент времени, но эта информация до компьютера доходит только через некоторое время (причины тут и объективные и субъективные). Этот фактор конечно же надо учитывать. Если Вы решитесь хранить остатки по дням, то надо сразу же думать о том, как эффективно пересчитывать "хвост", когда операции делаются задним числом - и это объективность ведения бухгалтерского учета. Минимальный отчетный период - это день. В целом конечно официальная бухгалтерская отчетность сдается за период не меньше месяца, но при поиске ошибок, несоответствий бухгалтера гоняют отчеты вплоть до каждого дня. Ну а если по сути, то свое решение я советовать не буду, у меня хранится только начальное сальдо и весь пересчет идет от начала. В принципе пока это всех в целом устраивает, хотя уже подумываю над тем, чтобы сделать текущие пересчитываемые остатки на конец, т.е. хранить один экз. остатков по последнему состоянию. Копаются в основном в "хвосте" (в последних датах) и обратный откат на небольшой период назад будет работать быстро. Есть системы которые хранят остатки помесячно, но у них как правило есть понятие закрытия рабочего периода, т.е. в них нельзя просто так залезть слишком далеко "назад" и редактировать что-то древнее (например "Галактика"). Нужно откатиться назад, открыть период, сделать что нужно, затем пересчитать остатки - т.е. вернуться в настоящее время. Наверняка есть и другие подходы, в общем, эта проблема действительно "скользкая" и надо хорошо подумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 01:48 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
barryу меня хранится только начальное сальдо и весь пересчет идет от начала начальное сальдо - сальдо на момент установки программы? т.е. если нужно увидеть просто остаток по счету, нужно пересчитывать все операции по этому счету? а какое у вас количество операций и как долго работает программа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:31 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
SashaFначальное сальдо - сальдо на момент установки программы? ну примерно да. еще они могут сказать - все, вот на канец этого месяца остатки такие - вставляешь в ЭТУ таблицу остатки по счетам на дату какую хотят и далее уже пляшешь от остатков на эту дату. 90% что они так захотят ... бухгалтерия дело темное ... :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:54 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
SashaF пишет: > начальное сальдо - сальдо на момент установки программы? Можно и так сказать. В общем - до начала проведения всех операций. > т.е. если нужно увидеть просто остаток по счету, нужно > пересчитывать все операции по этому счету? Да. > а какое у вас количество операций и как долго работает > программа? Максимом что было на практике - порядка 5 млн. проводок где-то за 5-6 лет работы предприятия (~150-200 сотрудников, производственно-торговая фирма). Время расчета общей оборотной ведомости (по всем счетам) порядка 10-20 мин. Это решение простое (не требуется ни динамического, ни эпизодического пересчета остатков), но как я выше уже указал, так наверное делать не стоит. Наиболее оптимально, по-моему мнению, хранить единственный набор конечных остатков (динамически пересчитываемых). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 10:57 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
остатки на "заданную дату" = остатки на начало периода (формируются по закрытию периода) + обороты от начала периода до заданной даты (оперативная таблица). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 11:19 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
спасибо большое всем! Вариант с закрытием периодов мне кажется очень удачным в моем случае, поскольку потребуется часто смотреть обороты за произвольные периоды, и несколько минут для построения оборотки мне не подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 12:56 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
SashaFспасибо большое всем! Вариант с закрытием периодов мне кажется очень удачным в моем случае, поскольку потребуется часто смотреть обороты за произвольные периоды, и несколько минут для построения оборотки мне не подойдет.Я бы так не спешил с выводами, ибо прежде чем смотреть информацию, ее необходимо создать. Не надо относиться к бухгалтерской информации как к некоей более-менее статичной по которой гоняются отчеты. Это скорее интенсивно редактируемая, пополняемая и модифицирующаяся в более-менее продолжительном промежутке времени. Прежде чем посчитать оборотку за несколько секунд после очередной корректировки Вам потребуется несколько минут (в лучшем случае) на приведение остатков в актуальное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 13:20 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Для моего хитрого ТЗ (у меня скорее учетная система чем бухгалтерская) - очень удобно делать закрытые периоды. а во-вторых, мне нравится хранить промежуточные итоги, т.к. это дополнительный контроль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 14:30 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
SashaF Хранить остатки-это правильно Меньше геморроя будет в дальнейшем...) ничто не слишком! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 13:28 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Роман Дынникостатки на "заданную дату" = остатки на начало периода (формируются по закрытию периода) + обороты от начала периода до заданной даты (оперативная таблица). Есть и обратный подход: остатки на "заданную дату" = остатки на текущую (корректируются автоматом при проведении операций) - обороты от заданной даты до текущей даты. Реализовывал оба подхода, восновном первый, второй можно рассматривать при очень большом количестве операций, но маленьком количестве запросов по остаткам с датой отличной от текущей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 11:39 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
При " очень большом количестве операций" надо хранить остатки на промежуточные даты (или вообще всю историю). Сложности с пересчетом остатков не так велики, как кажется, так как проведение операций задним числом (в отличии от получения отчетности) крайне редкая операция. В большинстве случаев новые операции ложатся последовательно и необходимости в пересчете вообще не возникает. Если же хранить именно "последний" остаток, то пересчет гарантировано нужен всегда и в этом случае гораздо эффективнее хранить всю историю (датат начала, дата конца, значение остатка). Пересчитываться почти всегда будет только последний фрагмент истории, в то же время легко получить значение остатка на любой момент времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 11:46 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 11:59 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyПри " очень большом количестве операций" надо хранить остатки на промежуточные даты (или вообще всю историю). Как я уже писал выше, такой подход я реализовывал, но скорость простейшей операции получения остатков по аналитическому учету зависит от объема операций от промежуточных остатков до нужной даты. Код: plaintext Bogdanov AndreyСложности с пересчетом остатков не так велики, как кажется, так как проведение операций задним числом (в отличии от получения отчетности) крайне редкая операция. В большинстве случаев новые операции ложатся последовательно и необходимости в пересчете вообще не возникает. Мы пошли другим путем: Если остатки расчитаны - период закрыт и проводки в нем делать нельзя. Нужна такая операция - открывается период, проводится операция, период закрывается (расчитываются промежуточные остатки) Bogdanov AndreyЕсли же хранить именно "последний" остаток, то пересчет гарантировано нужен всегда Угу, только в этом случае не нужно расчитывать и хранить промежуточные остатки. Bogdanov Andrey и в этом случае гораздо эффективнее хранить всю историю (датат начала, дата конца, значение остатка). Не понял, откуда диапазон дат??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 13:04 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
В таблице итогов хранятся данные (остаток) на конец каждого месяца и на текущий момент времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 13:46 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Всегда выгоднее хранить остатки на начало периода + обороты за период, а текущий остаток вычислять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 14:02 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Estets Не понял, откуда диапазон дат??? Поясняю. При открытии счета (пусть это было датой t0) остаток на нем равен 0. Датой t1 провели проводку (на сумму s1), а датой t2 (t2>t1) еще одну проводку на сумму s2. Соответсвенно история остатков по счету выглядит так: 0 с t0 до t1 s1 с t1 до t2 s2 с t2 до бесконечности. Вот и дапазон. Такой подход позволяет очень легко получить остатки на любую дату, а грамотно построенный индекс позволяет работать и с миллионами записей. Я не утверждаю, что этот подход единственно верный. Но зачастую он очень удобен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 15:13 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
gybsonВ таблице итогов хранятся данные (остаток) на конец каждого месяца и на текущий момент времени. В данном случае ИМХО лишнее, хранить и то и другое. Необоснованное дублирование информации. Из опыта могу сказать что в нашей конфигурации проводок до полумиллиона проводок схлопываются в остатки без всяких расчетов остатков за приемлемое для пользователя время. До десяти миллионов операций, приходилось расчитывать остатки примерно каждый квартал (кавртал примерно 300 тысяч операций). А вот для проекта с 40 тысяч проводок в день пришлось изменять алгоритм в сторону расчета хранения на текущий день и расчета исторических данных отнимая обороты до нужной даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 15:56 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Estets Не понял, откуда диапазон дат??? Поясняю. При открытии счета (пусть это было датой t0) остаток на нем равен 0. Датой t1 провели проводку (на сумму s1), а датой t2 (t2>t1) еще одну проводку на сумму s2. Соответсвенно история остатков по счету выглядит так: 0 с t0 до t1 s1 с t1 до t2 s2 с t2 до бесконечности. Вот и дапазон. Теперь понял, единственная проблема в хранении диапазонов это если проводка прошла задним числом (tN) между t1 и t2, получается необходимо удалить диапазон t1-t2, вставить t1-tN, tN-t2 и изменить остаток "с t2 до бесконечности". Что достаточно сложная операция. Особенно для массового ввода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 16:02 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Estets Теперь понял, единственная проблема в хранении диапазонов это если проводка прошла задним числом (tN) между t1 и t2, получается необходимо удалить диапазон t1-t2, вставить t1-tN, tN-t2 и изменить остаток "с t2 до бесконечности". Что достаточно сложная операция. Особенно для массового ввода. Удалять не нужно. Достаточно в имеющемся диапазоне изменить t2 на tN, и добавить еще один диапазон. Более того, так как у нас всегда есть последний диапазон (в котором конец равен бесконечности), то и для работы в текущей дате изменение остатка ровно такое-же: закрытие одного диапазона и добавление нового. Реализация не такая уж и сложная, по нагрузке на сервер тоже не слишком (один update без изменения размера записи и один insert на фоне других DML обслуживающих операцию...). Но такая структура позволяет даже уменьшить размер базы (по сравнению, например, с хранением остатков на концы закрытых периодов) , особенно при сильно неравномерной нагрузке на счета (если по одним счетам операции проходят раз в полгода, а по другим - несколько тысяч в день) и легко доставать остаток по любому счету за любую дату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 16:21 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyНо такая структура позволяет даже уменьшить размер базы (по сравнению, например, с хранением остатков на концы закрытых периодов) , особенно при сильно неравномерной нагрузке на счета (если по одним счетам операции проходят раз в полгода, а по другим - несколько тысяч в день) и легко доставать остаток по любому счету за любую дату. ОК, интересный подход, честно говоря первый раз столкнулся с таким. А если не секрет, работает ли данная схема в промышленном масштабе и какие примерно числовые характеристики по объемам ежедневных/ежемесячных операций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 10:17 |
|
||
|
хранение остатков и оборотов по счетам в бух. системах
|
|||
|---|---|---|---|
|
#18+
EstetsОК, интересный подход, честно говоря первый раз столкнулся с таким. А если не секрет, работает ли данная схема в промышленном масштабе и какие примерно числовые характеристики по объемам ежедневных/ежемесячных операций? Работает. Как минимум в трех десятках банков. Часть из которых входит в десятку крупнейших банков России. Есть примеры с ежедневным количеством проводок в районе полумиллиона. С хранением данных за последние лет пять (как минимум). СУБД - Oracle. Естественно, техника в банках разная: от однопроцессорных PC под управлением Windows до монстровых (16-процессорных) серверов. Это по моим сведениям на 2003 год. Более актуальных данных у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=32&startmsg=34256535&tid=1544763]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 500ms |

| 0 / 0 |
