powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение остатков и оборотов по счетам в бух. системах
26 сообщений из 26, показаны все 2 страниц
хранение остатков и оборотов по счетам в бух. системах
    #34256535
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раньше имел дело с банковским оперднем - там было все просто, при открытии операционного дня по всем счетам подсчитывались обороты, и исходящие остатки за закрытый день и все это сбрасывалось в табличку (ID счета, дата, вх_остатки, исх_остатки, деб_обороты, кред_обороты) в результате оборотная ведомость очень легко строилась за любой период.

Каким образом хранятся сведения об остатках счетов в бух. системах, там где нет понятия операционный день?

У меня появилась пока только одна идея:
Создать похожую табличку ОСТАТКИ_НА_ДАТУ(ID счета, дата, исх_остатки, деб_обороты, кред_обороты) и при создании проводки проверять есть ли запись в этой табличке на дату проводки - если есть update ее, если нет - то insert, но при таком подходе несколько усложняется построение оборотной ведомости на конкретную дату, т.к. придется выбирать записи из этой таблички для данного счета где дата максималльно близка к заданной.

Хотелось бы услышать о проверенных и давно работающих решениях, которых наверняка не мало.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34256818
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остатки по счетам на заданную дату в бухгалтерии безполезны. Бухгалтерам надо иметь остатки на начало периода, обороты за период и остатки на конец периода. Минимальный размер периода - один месяц. Начало всегда первым числом месяца, а конец - последним.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34256853
SergGol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPОстатки по счетам на заданную дату в бухгалтерии безполезны. Бухгалтерам надо иметь остатки на начало периода, обороты за период и остатки на конец периода. Минимальный размер периода - один месяц. Начало всегда первым числом месяца, а конец - последним.

Не всегда безполезны. Например остатки/обороты на счетах денежных средств отслеживаются и по дням, а не только по месяцам.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257101
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.о. все-таки нужна таблица, в которую будут записываться остатки на период, и обороты? как в нее будут попадать данные, так как я предложил в вопросе, но интервалом проверки будет текущий месяц? или же бухгалтер должен вызвать какую-то процедуру, которая запишет все данные в эту таблицу по всем счетам?
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257264
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFУ меня появилась пока только одна идея:
Создать похожую табличку ОСТАТКИ_НА_ДАТУ(ID счета, дата, исх_остатки, деб_обороты, кред_обороты) и при создании проводки проверять есть ли запись в этой табличке на дату проводки - если есть update ее, если нет - то insert, но при таком подходе несколько усложняется построение оборотной ведомости на конкретную дату, т.к. придется выбирать записи из этой таблички для данного счета где дата максимально близка к заданной.

Хотелось бы услышать о проверенных и давно работающих решениях, которых наверняка не мало.В банках все как-то более-менее организовано и прошедший день с его остатками - это нечто стабильное. Тем более платежи в банках проводятся автоматизированным способом и наверное не бывает такой ситуации, чтобы прошла операция которая не зафиксирована в БД, а потом ее задним числом вводят в компьютер.
На предприятиях конечно же этот период, в котором копаются, охватывает как минимум месяц-два, а то и квартал. Есть множество всяких событий, которые проходят в какой-то момент времени, но эта информация до компьютера доходит только через некоторое время (причины тут и объективные и субъективные). Этот фактор конечно же надо учитывать. Если Вы решитесь хранить остатки по дням, то надо сразу же думать о том, как эффективно пересчитывать "хвост", когда операции делаются задним числом - и это объективность ведения бухгалтерского учета. Минимальный отчетный период - это день. В целом конечно официальная бухгалтерская отчетность сдается за период не меньше месяца, но при поиске ошибок, несоответствий бухгалтера гоняют отчеты вплоть до каждого дня.
Ну а если по сути, то свое решение я советовать не буду, у меня хранится только начальное сальдо и весь пересчет идет от начала. В принципе пока это всех в целом устраивает, хотя уже подумываю над тем, чтобы сделать текущие пересчитываемые остатки на конец, т.е. хранить один экз. остатков по последнему состоянию. Копаются в основном в "хвосте" (в последних датах) и обратный откат на небольшой период назад будет работать быстро. Есть системы которые хранят остатки помесячно, но у них как правило есть понятие закрытия рабочего периода, т.е. в них нельзя просто так залезть слишком далеко "назад" и редактировать что-то древнее (например "Галактика"). Нужно откатиться назад, открыть период, сделать что нужно, затем пересчитать остатки - т.е. вернуться в настоящее время. Наверняка есть и другие подходы, в общем, эта проблема действительно "скользкая" и надо хорошо подумать...
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257748
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
barryу меня хранится только начальное сальдо и весь пересчет идет от начала

начальное сальдо - сальдо на момент установки программы? т.е. если нужно увидеть просто остаток по счету, нужно пересчитывать все операции по этому счету? а какое у вас количество операций и как долго работает программа?
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257826
кхех..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaFначальное сальдо - сальдо на момент установки программы?
ну примерно да. еще они могут сказать - все, вот на канец этого месяца остатки такие - вставляешь в ЭТУ таблицу остатки по счетам на дату какую хотят и далее уже пляшешь от остатков на эту дату. 90% что они так захотят ...
бухгалтерия дело темное ... :))
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257840
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaF пишет:
> начальное сальдо - сальдо на момент установки программы?

Можно и так сказать. В общем - до начала проведения всех операций.

> т.е. если нужно увидеть просто остаток по счету, нужно
> пересчитывать все операции по этому счету?

Да.

> а какое у вас количество операций и как долго работает
> программа?

Максимом что было на практике - порядка 5 млн. проводок где-то за 5-6
лет работы предприятия (~150-200 сотрудников, производственно-торговая
фирма). Время расчета общей оборотной ведомости (по всем счетам) порядка
10-20 мин.

Это решение простое (не требуется ни динамического, ни эпизодического
пересчета остатков), но как я выше уже указал, так наверное делать не
стоит. Наиболее оптимально, по-моему мнению, хранить единственный набор
конечных остатков (динамически пересчитываемых).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34257952
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
остатки на "заданную дату" = остатки на начало периода (формируются по закрытию периода) + обороты от начала периода до заданной даты (оперативная таблица).
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34258424
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо большое всем! Вариант с закрытием периодов мне кажется очень удачным в моем случае, поскольку потребуется часто смотреть обороты за произвольные периоды, и несколько минут для построения оборотки мне не подойдет.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34258550
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFспасибо большое всем! Вариант с закрытием периодов мне кажется очень удачным в моем случае, поскольку потребуется часто смотреть обороты за произвольные периоды, и несколько минут для построения оборотки мне не подойдет.Я бы так не спешил с выводами, ибо прежде чем смотреть информацию, ее необходимо создать. Не надо относиться к бухгалтерской информации как к некоей более-менее статичной по которой гоняются отчеты. Это скорее интенсивно редактируемая, пополняемая и модифицирующаяся в более-менее продолжительном промежутке времени. Прежде чем посчитать оборотку за несколько секунд после очередной корректировки Вам потребуется несколько минут (в лучшем случае) на приведение остатков в актуальное состояние.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34258852
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для моего хитрого ТЗ (у меня скорее учетная система чем бухгалтерская) - очень удобно делать закрытые периоды.
а во-вторых, мне нравится хранить промежуточные итоги, т.к. это дополнительный контроль.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34278555
Фотография космонахт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaF

Хранить остатки-это правильно
Меньше геморроя будет в дальнейшем...)


ничто не слишком!
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281275
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникостатки на "заданную дату" = остатки на начало периода (формируются по закрытию периода) + обороты от начала периода до заданной даты (оперативная таблица).
Есть и обратный подход:

остатки на "заданную дату" = остатки на текущую (корректируются автоматом при проведении операций) - обороты от заданной даты до текущей даты.

Реализовывал оба подхода, восновном первый, второй можно рассматривать при очень большом количестве операций, но маленьком количестве запросов по остаткам с датой отличной от текущей.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281316
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При " очень большом количестве операций" надо хранить остатки на промежуточные даты (или вообще всю историю). Сложности с пересчетом остатков не так велики, как кажется, так как проведение операций задним числом (в отличии от получения отчетности) крайне редкая операция. В большинстве случаев новые операции ложатся последовательно и необходимости в пересчете вообще не возникает.
Если же хранить именно "последний" остаток, то пересчет гарантировано нужен всегда и в этом случае гораздо эффективнее хранить всю историю (датат начала, дата конца, значение остатка). Пересчитываться почти всегда будет только последний фрагмент истории, в то же время легко получить значение остатка на любой момент времени.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281385
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281680
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyПри " очень большом количестве операций" надо хранить остатки на промежуточные даты (или вообще всю историю).
Как я уже писал выше, такой подход я реализовывал, но скорость простейшей операции получения остатков по аналитическому учету зависит от объема операций от промежуточных остатков до нужной даты.
Код: plaintext
SELECT sum(oper_sum) FROM t_operation ... GROUP BY аналитика
И уменьшить этот объем можно только уменьшая периоды через которые рассчитываются промежуточные остатки, но во первых объем таблицы с остатками может оказаться больше чем таблица с операциями и потери времени будут уже при работе с этой таблицей, во вторых затраты на коррекцию остатков задним числом могут оказаться критически большими.

Bogdanov AndreyСложности с пересчетом остатков не так велики, как кажется, так как проведение операций задним числом (в отличии от получения отчетности) крайне редкая операция. В большинстве случаев новые операции ложатся последовательно и необходимости в пересчете вообще не возникает.
Мы пошли другим путем: Если остатки расчитаны - период закрыт и проводки в нем делать нельзя. Нужна такая операция - открывается период, проводится операция, период закрывается (расчитываются промежуточные остатки)
Bogdanov AndreyЕсли же хранить именно "последний" остаток, то пересчет гарантировано нужен всегда
Угу, только в этом случае не нужно расчитывать и хранить промежуточные остатки.
Bogdanov Andrey и в этом случае гораздо эффективнее хранить всю историю (датат начала, дата конца, значение остатка).
Не понял, откуда диапазон дат???
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281857
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице итогов хранятся данные (остаток) на конец каждого месяца и на текущий момент времени.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34281944
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда выгоднее хранить остатки на начало периода + обороты за период, а текущий остаток вычислять.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34282298
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets
Не понял, откуда диапазон дат???

Поясняю.
При открытии счета (пусть это было датой t0) остаток на нем равен 0. Датой t1 провели проводку (на сумму s1), а датой t2 (t2>t1) еще одну проводку на сумму s2. Соответсвенно история остатков по счету выглядит так:
0 с t0 до t1
s1 с t1 до t2
s2 с t2 до бесконечности.
Вот и дапазон.

Такой подход позволяет очень легко получить остатки на любую дату, а грамотно построенный индекс позволяет работать и с миллионами записей.

Я не утверждаю, что этот подход единственно верный. Но зачастую он очень удобен.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34282541
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gybsonВ таблице итогов хранятся данные (остаток) на конец каждого месяца и на текущий момент времени.
В данном случае ИМХО лишнее, хранить и то и другое. Необоснованное дублирование информации. Из опыта могу сказать что в нашей конфигурации проводок до полумиллиона проводок схлопываются в остатки без всяких расчетов остатков за приемлемое для пользователя время. До десяти миллионов операций, приходилось расчитывать остатки примерно каждый квартал (кавртал примерно 300 тысяч операций).
А вот для проекта с 40 тысяч проводок в день пришлось изменять алгоритм в сторону расчета хранения на текущий день и расчета исторических данных отнимая обороты до нужной даты.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34282570
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 до бесконечности". Что достаточно сложная операция. Особенно для массового ввода.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34282661
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets
Теперь понял, единственная проблема в хранении диапазонов это если проводка прошла задним числом (tN) между t1 и t2, получается необходимо удалить диапазон t1-t2, вставить t1-tN, tN-t2 и изменить остаток "с t2 до бесконечности". Что достаточно сложная операция. Особенно для массового ввода.

Удалять не нужно. Достаточно в имеющемся диапазоне изменить t2 на tN, и добавить еще один диапазон. Более того, так как у нас всегда есть последний диапазон (в котором конец равен бесконечности), то и для работы в текущей дате изменение остатка ровно такое-же: закрытие одного диапазона и добавление нового. Реализация не такая уж и сложная, по нагрузке на сервер тоже не слишком (один update без изменения размера записи и один insert на фоне других DML обслуживающих операцию...).
Но такая структура позволяет даже уменьшить размер базы (по сравнению, например, с хранением остатков на концы закрытых периодов) , особенно при сильно неравномерной нагрузке на счета (если по одним счетам операции проходят раз в полгода, а по другим - несколько тысяч в день) и легко доставать остаток по любому счету за любую дату.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34284196
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyНо такая структура позволяет даже уменьшить размер базы (по сравнению, например, с хранением остатков на концы закрытых периодов) , особенно при сильно неравномерной нагрузке на счета (если по одним счетам операции проходят раз в полгода, а по другим - несколько тысяч в день) и легко доставать остаток по любому счету за любую дату.
ОК, интересный подход, честно говоря первый раз столкнулся с таким. А если не секрет, работает ли данная схема в промышленном масштабе и какие примерно числовые характеристики по объемам ежедневных/ежемесячных операций?
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34285892
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsОК, интересный подход, честно говоря первый раз столкнулся с таким. А если не секрет, работает ли данная схема в промышленном масштабе и какие примерно числовые характеристики по объемам ежедневных/ежемесячных операций?

Работает. Как минимум в трех десятках банков. Часть из которых входит в десятку крупнейших банков России. Есть примеры с ежедневным количеством проводок в районе полумиллиона. С хранением данных за последние лет пять (как минимум).
СУБД - Oracle. Естественно, техника в банках разная: от однопроцессорных PC под управлением Windows до монстровых (16-процессорных) серверов.
Это по моим сведениям на 2003 год. Более актуальных данных у меня нет.
...
Рейтинг: 0 / 0
хранение остатков и оборотов по счетам в бух. системах
    #34287286
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Estets gybsonВ таблице итогов хранятся данные (остаток) на конец каждого месяца и на текущий момент времени.
В данном случае ИМХО лишнее, хранить и то и другое. Необоснованное дублирование информации. Из опыта могу сказать что в нашей конфигурации проводок до полумиллиона проводок схлопываются в остатки без всяких расчетов остатков за приемлемое для пользователя время. До десяти миллионов операций, приходилось расчитывать остатки примерно каждый квартал (кавртал примерно 300 тысяч операций).
А вот для проекта с 40 тысяч проводок в день пришлось изменять алгоритм в сторону расчета хранения на текущий день и расчета исторических данных отнимая обороты до нужной даты.


Дублирование информации обосновано увеличением скорости работы.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение остатков и оборотов по счетам в бух. системах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]