powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Двойная запись vs Полупроводки
25 сообщений из 162, страница 4 из 7
Двойная запись vs Полупроводки
    #33168228
!!!!---
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Estets !!!!---а получение выписки? оборотки? все проще?
Обычно запрос остатка по счету и аналитике - online самая критичная по времени операция. Оборотка и выписка по крайней мере не сложнее. Сделать из "полупроводки" проводку это одна операция по объединению таблицы с самой собой

Код: plaintext
1.
2.
3.
4.
SELECT
FROM T_OPER AS DEB, T_OPER AS CRED
WHERE DEB.TYPE = 'D'
    AND DEB.HEAD_ID = CRED.HEAD_ID
    AND CRED.TYPE = 'C'

Зато в запросе на остаток не надо учитывать второй набор полей (учитывая что по кредиту сумма проводки идет с обратным знаком)
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
--ПРОВОДКА 1
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 1 ,        'D',   1 ,        51 ,     '20050101' , 100 )
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 1 ,        'C',   1 ,        76 ,     '20050101' ,- 100 )

--ПРОВОДКА 2
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 2 ,        'D',   1 ,        76 ,     '20050102' , 50 )
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 2 ,        'C',   1 ,        51 ,     '20050102' ,- 50 )

--ПРОВОДКА 3 сторно
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 3 ,        'D',   1 ,        76 ,     '20050103' ,- 50 )
INSERT INTO T_OPER (HEAD_ID, TYPE, PLAN_ID, ACC_ID, OP_DATE, OP_SUM)
             VALUES( 3 ,        'C',   1 ,        51 ,     '20050103' , 50 )
Код: plaintext
1.
2.
3.
4.
SELECT @total = (SELECT SUM(OP_SUM)
          FROM T_OPER 
         WHERE T_OPER.PLAN_ID = xxx
             AND T_OPER.ACC_ID = xxx
             AND ...аналитика...


Последний селект - это запрос текущего остатка или остатка на конкретную дату?

Мда.... тяжела и неказиста жись простого программиста.....
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33168923
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!!!!---Последний селект - это запрос текущего остатка или остатка на конкретную дату?

Ээээээ в данном варианте конечно на дату последней проводки ;)
Для получения остатка на дату добавить AND OP_DATE<dateadd(day, 1, @my_date).
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33169431
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и как? быстро работает?... и на каком количестве проводок?
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33170737
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему опыту, система полупроводок быстрее и логичнее.

Есдинственная проблема - корреспонденция счетов. Разьезда по балансу не бывает, так как проводки формируются только при введении документов, а введение документов есть транзакция всегда имхо. Если не придерживаться данной точки зрения, то ведение проводки ввиде целой записи есть усугубление проблемы, а не решение ее, так как проводка документа как правило ведет за собой несколько проводок по счетам. Если ваша система способна потерять одну запись в это время, в системе двойной записи у вас будет бить баланс, но, скажем, прибыль будет посчитагна не верно, а это еще больший гемор для бухгалтера, чем разьезд по балансу. Вообще говоря, баланс на то и нужен, чтобы вычислять ошибки. Таким образом, считаем, что система не может потерять полупроводку, как не может совершить полутранзакцию, иначе в мусор такую систему.

Вопрос об аналитиках вообще не имеет отношения к вопросу о выборе формы хранения ввиде целых или полупроводок, он общий для обоих форм, и мною до конца не понят, как правильно его решать, был бы благодарен если бы кто рассказал.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33170996
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaПо моему опыту, система полупроводок быстрее и логичнее.

Есдинственная проблема - корреспонденция счетов. Разьезда по балансу не бывает, так как проводки формируются только при введении документов, а введение документов есть транзакция всегда имхо...
Таким образом, считаем, что система не может потерять полупроводку, как не может совершить полутранзакцию, иначе в мусор такую систему.

Это Вы обольщаетесь.

Никаких пакетных изменений и правок не предусматривается?
Ошибок в клиентской части не бывает?
Если у Вас тиражная система - Вам пользователи такого наколбасят!

Но важнее корреспонденция.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171137
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все правильно реализовывать никто ничего не "наколбасят". Если реализовывать неправильно, то и колбасить не придется, само работать не будет.

Пакетные изменения и правки осуществляются через ХП в режиме опять таки транзакций.

Ошибки клиентской части принципиально не должны влиять на целостность проводок, опять же, потому что проводки осуществляются вызовом ХП. Мало ли кто каким клиентом надумает пользоваться, кто веб напишет, кто вообще екселем, теперь ориентироваться на всех чтоли.

Задача о корреспонденции, если она действительно нужна, то есть система бухгалтерская, а не оперативно-учетная, решается легко при введении соотв ограничений - то есть одна проводка по счетам - одна пара деб-кред - один общий id - выше этом писали.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171151
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все правильно реализовывать никто ничего не "наколбасят". Если реализовывать неправильно, то и колбасить не придется, само работать не будет.

Пакетные изменения и правки осуществляются через ХП в режиме опять таки транзакций.

Ошибки клиентской части принципиально не должны влиять на целостность проводок, опять же, потому что проводки осуществляются вызовом ХП. Мало ли кто каким клиентом надумает пользоваться, кто веб напишет, кто вообще екселем, теперь ориентироваться на всех чтоли.

Задача о корреспонденции, если она действительно нужна, то есть система бухгалтерская, а не оперативно-учетная, решается легко при введении соотв ограничений - то есть одна проводка по счетам - одна пара деб-кред - один общий id - выше этом писали.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171274
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaЕсли все правильно реализовывать никто ничего не "наколбасят". Если реализовывать неправильно, то и колбасить не придется, само работать не будет.
Блажен кто верует.

У Вас опыт сопровождения чужих систем был? Никогда ручками огрехи или самой программы или собственных пользователей не приходилось править? А интеграцию с прямой записью в БД, потому что штатной или нет или она не подходит?

TimKa
Пакетные изменения и правки осуществляются через ХП в режиме опять таки транзакций.

Ошибки клиентской части принципиально не должны влиять на целостность проводок, опять же, потому что проводки осуществляются вызовом ХП. Мало ли кто каким клиентом надумает пользоваться, кто веб напишет, кто вообще екселем, теперь ориентироваться на всех чтоли.

А ошибки тех самых ХП? Или там ошибок не бывает?

TimKa
Задача о корреспонденции, если она действительно нужна, то есть система бухгалтерская, а не оперативно-учетная, решается легко при введении соотв ограничений - то есть одна проводка по счетам - одна пара деб-кред - один общий id - выше этом писали.
Задча составления отчетов на основе корреспонденции нужна не только в бухгалтерии. Например, список материалов пришедших от дочерних предприяитий.

А потом кто сказал, что мы не бухучет обсуждаем?

Пользователь поймет, если пропадет одна запись из журнала проводок, это по человечески понятно. Но абсолютно не поймет почему в Дт одна сумма, а в Кт другая. И что, собственно, потом делать надо. (А ксати! Как понять в Дт или Кт ошибка?) Особенно, если проводки при вводе делаются на автомате и пользователь их не видит.
Это понимают в англоязычных странах, там в GAAPе действительно проводки односторонние. А у нас - нет!
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171428
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНикогда ручками огрехи или самой программы или собственных пользователей не приходилось править? А интеграцию с прямой записью в БД, потому что штатной или нет или она не подходит?


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

По остальным вопросам еще раз подчеркну, корреспонденцию счетов легко можно проследить по документам, на основе которых осуществляются проводки. Делаете элементарный запрос-группировку по документам за период и видите где у вас произошел косяк. Не говоря уже о том, что никаких проводок в ручную, без документа, делать нельзя. Если есть какието уникальные проводки - создаем для них документ "универсальная проводка", а потом пусть бухгалтер понимает, что она означает и обьясняет налоговикам. что это он тут перекидывал и куда.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171511
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaЕсли все правильно реализовывать никто ничего не "наколбасят". Если реализовывать неправильно, то и колбасить не придется, само работать не будет.


Вспомните закон Мерфи: если что-то плохое может произойти, оно обязательно произойдёт. Это такая же правда как и законы сантехники: все что может ломаться- ломается, а что не может - засоряется.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171776
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaОгрехи есть были и будут, хоть вы одной записью пишите хоть двумя. Только во втором случае баланс бить не будет, тут то вы и поймете что ошибка, а в первом будете радоваться, пока налоговая не оштрафует за неверное ведение. Приходилось, поэтому и пишу об основных принципах, которые, если соблюдать, уменьшают количество ошибок.
Если баланс не сошелся - то ошибка, если сошелся то две )
TimKa
По остальным вопросам еще раз подчеркну, корреспонденцию счетов легко можно проследить по документам, на основе которых осуществляются проводки. Делаете элементарный запрос-группировку по документам за период и видите где у вас произошел косяк.
Еще раз, если по документу M проводок по Дт и N по Кт. Как я могу из этого сделать номальные 2-хсторонние проводки?

Вывод - только M:1, 1:M или 1:1. Об этом надо помнить, когда настраиваешь подобную "полупроводочную" систему, например R3 или OEBS
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33171814
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверно системы с M:N удобны для отмывания денег
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33172532
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужен отчет по корреспонденции, просто добавляешь идентификатор проводки, то есть по документу сущесвует список осуществляемых проводок проводок, у каждой есть номер, и ВСЕ. Журнал будет выглядеть так


Документ 345 Проводка 1 сч A деб 200
Документ 345 Проводка 1 счет B кр 200
Документ 345 Проводка 2 сч A деб 5
Документ 345 Проводка 2 счет C кред 5

Буржуи этого не делают, так как у них корреспонденции не требуется. Зато такой подход значительно облегчает жизнь человека, делающего отчеты. Конечно, скажете вы, можно сделать в одной проводка три полупроводки и никто от этого не убережет. Предположим, программист ошибся и в ХП накосячил (опустим при этом что такой программист может накосячить и в системе с полными проводками, и обнаружить это будет труднее). Для этого можно в триггер на инсерт журнала вставить проверку на колво строк в проводках, и создать констрейн чтобы счета для каждой проводки в документе сделать уникальными. Но мне этого ни разу не понадобилось, так как я генерю ХП а не создаю их в ручную.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33172682
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 TimKa

Есть 2 похода, оба они жизнеспособны, у обоих есть плюсы и минусы, для обоих есть примеры работающих тиражных систем.

Никто не говорит, что полупроводки отстой, но, минусы этого подхода есть. И надо помнить о них, если выбрали этот метод. Повторюсь, у полупроводочного метода есть 2 проблемы - целостность данных и трудности с корреспонденцией.

Естесственно, эти проблемы решаются, но они есть. Та же целостность только триггерами не решится (их пользователь и отключить может). При демонстрации западных систем (они почти всегда полупроводочные) всегда прошу собрать баланс. И о, чудо! В половине случаев его нет! Затем неловкое молчание, лепет про какие-то отклонения, выравнивание и затем обещание запустить процедуры ремонта.

Вывод - при этом методе надо предусмотреть ремонтную процедуру.

Про корреспонденцию - Ваше решение приемлемо. Но теряется плюс такой системы - возможность иметь проводок М:1, например

10 Дт 100р Насосы
10 Дт 200р Колеса
60 Кт 300р Рога и копыта

В Вашем случае получим
10 Дт (1зап) 100р Насосы
60 Кт (1зап)100р Рога и копыта
10 Дт (2зап)200р Колеса
60 Кт (2зап)200р Рога и копыта

При большой накладной по методу 1 мы бы сильно сэкономим на Кт записях, а это хороший плюс. По этому методу можно восстановить и корреспонденцию. Но, как я уже говорил, нельзя иметь проводки M:N.

В Вашем решении, проводки M:N допускаются, но возникают лишние записи. А следовательно, потеря в скорости, как при вставках, так и в отчетах.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33172926
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да-да, полностью согласен. Я всего лишь настаивал на том, что раз люди делают так на западе, значит на то есть причины, ни в коем случае не говорю что это безоговорочно лучше, просто показываю, что такая система не хуже, а проблемы решаются. По поводу балансов - дело в том что полупроводочная система онажает косяки программирования бизнеспроцессов, и поэтому они чаще всплывают. Например, баланс легко не будет бится, если задним числом поправить себестоимость у отгруженного товара и забыть перепровести отгрузки по нему.

По поводу M-1 - в полнопроводочной системе их тоже нет... Я не спорю, много систем добрых и по полным проводкам работает, и я пробовал, но быстро достало делать по ним отчеты ))) Уж проще на этапе ввода данных сделать все корректно и жестко по отношению к пользователю - доступ к регистру только через ХП и там же искать неполадки если что, а исходные данные в документах - чтобы можено было в случае косяка перепровести все правильно... ) Так и живу уже 3 года ))
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33173150
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> быстро достало делать по ним отчеты
вот этого -ну вааабще не понимаю...
Я как раз и ушел на полные проводки для того чтобы балансы/выписки/сальдовки/оборотки делать было легко.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33173270
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полная ерунда. Отчеты можно и нужно делать из того что есть или подразумевается.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33173378
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да-да согласен. Больше того, скажу, отчеты нужно делать из того, чего не подразумевается, а вообще в природе не существует. Это очень ценное умение, делать такие отчеты. А остальное полная ерунда, и на западе дураки дуракам впаривают дурацкие системы и зарабатывают дурацкие деньги, причем совершенно легально рапортуя о ерундовых налогах, прибылях и убытках. Я что, я не спорю.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33173461
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовПолная ерунда. Отчеты можно и нужно делать из того что есть или подразумевается.

Знаете, каждый лишний джойн, какждая временная таблица - это удар по производительности не только конкретного отчета, но и всей системы в целом. Может вам конечно и положить на то, что о вас думают юзеры, но я например так не могу... Типа - совесть еще есть.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33173659
michael_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman Сахават ЮсифовПолная ерунда. Отчеты можно и нужно делать из того что есть или подразумевается.

Знаете, каждый лишний джойн, какждая временная таблица - это удар по производительности не только конкретного отчета, но и всей системы в целом. Может вам конечно и положить на то, что о вас думают юзеры, но я например так не могу... Типа - совесть еще есть.
Согласен. Бить будут не по совести :)

Мы тоже держим проводку как одну запись. В том числе и из-за отчетов.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33181918
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanНу и как? быстро работает?... и на каком количестве проводок?
В одном из проектов крутится около 10М проводок за 6 лет 8тыс в день. В другом, правда пока в тестовом режиме требования 10Т документов по 4 проводки на каждый + расчет остатков при проведении каждого документа за 40 минут (закрытие биржевой сесии) это около 8М в год.
Правда пришлось изменить логику опорных остатков. Считать как Диасофт от конечных остатков в прошлое.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33182060
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня (вспоминаю прошлое)... Расчет процентов в конце года (именно расчет- за весь год! с учетом изменений процентных ставок и пр + изменение остатков) по 200 тыс. лицевых счетов на P/400, RAM 384MB на IDE дисках длился 5 часов. причем коммитился после каждой операции (а не пачками, что существенно медленне).
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33182271
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отчет - дело большое и рыхлое.
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33300172
johnnyU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делал так
Создал журнал проводок СчД АнД СчК АнК кол Сумма
также создается журнал полупроводок Сч Ан Сч1 Ан1 КолД Суммад КолК СуммаК

на основе документов заполняется журнал проводок
из журнала провок по тригеру заполняется журнал полупроводок
непосредственно с журналом полупровок работает только тригер журнала проводок

Выборки делаем из того журнала из которого удобнее
...
Рейтинг: 0 / 0
Двойная запись vs Полупроводки
    #33417497
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовПолная ерунда. Отчеты можно и нужно делать из того что есть или подразумевается.
Под отчеты/расчеты, которые делаются сотни раз в день, не грех и структуру данных спроектировать.
...
Рейтинг: 0 / 0
25 сообщений из 162, страница 4 из 7
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Двойная запись vs Полупроводки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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