|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Читал про оконные функции, думаю, может их можно использовать, чтоб избежать громоздкого и неоптимального кода. Есть журнал движения денег в кассе OPS. полей много, но основные - это таймстамп операции OPDATE и сумма со знаком (+ приход, минус расход) OPSUM. Как написать вычислимое поле, в котором бы был для каждой операции текущий остаток? Делать в этом поле каждый раз суммирование всех операций за 5 лет - как-то неоптимально. И еще - если это вычисляемое поле не будет в запросе - оно не будет просчитываться и тянуть тормоза? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 13:46 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFomin, оконные функции здесь не помогут. Читай про хранимые агрегаты ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 13:56 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFominДелать в этом поле каждый раз суммирование всех операций за 5 лет - как-то неоптимально. А тебе часто приходится выводить журнал движения денег за 5 лет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 14:03 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А тебе часто приходится выводить журнал движения денег за 5 лет?.. ну тут суть 5 лет в том, что текущий остаток берется от начала эксплуатации программы - это 5 лет. И для каждой операции перелопачивать всю историю как-то некрасиво. Мож есть какая-то хитрость, где хранить предыдущий остаток и для следующей операции не выбирать опять сумму всех предыдущих операций, а лишь приплюсовать к предыдущему остатку значение текущей операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 15:07 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFominМож есть какая-то хитрость Есть. И тебе уже про неё сказали выше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 17:31 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Есть. И тебе уже про неё сказали выше. Если про хранимые агрегаты, то из того, что я прочитал - это дополнительная таблица. Или что-то другое? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:12 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFominИли что-то другое? "Есть много способов приготовить кошку." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 19:32 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Например, так 1. Таблица счетов (Account) Id – код счета Number – номер счета Name - наименование Прочие атрибуты 2. Объекты учета Id –код объекта IdGroup –код группы (Клиенты, Поставщики, Валюта) Прочие атрибуты – могут храниться в других таблицах или в общей (зависит от реализации) 3. Журнал операция (проводок) Заголовок содержит общую информацию – Дата, ссылку на документ который вызвал операцию (или бух. проводку) Содержимое Дебет Счет Аналитика (возможно несколько уровней) Количество по дебету (для валюты два знака после запятой (если не в копейках)) Кредит Счет Аналитика (возможно несколько уровней) Количество по дебету (для валюты два знака после запятой (если не в копейках)) Сумма в нац. Валюте или в валюте учета 4. Сальдо Период (месяц год) Счет Аналитика Сальдо (кол.) на начало Сальдо (сумма) на начало Дебет(кол.) Дебет(сумма) Кредит(кол.) Кредит(сумма) При заполнении операций должно рассчитываться сальдо относительно дат операций по счетам и пересчитываться сальдо на начало за последующие периоды. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 20:09 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
можно упростить вариант vkorshun сделай доп. таблицу с остатками, а там уже хоть под годам, месяцам или дням храни остатки ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 09:02 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
В реализованных проектах я видел некий аналог банковской выписки. Дата, остаток на начало, дебет, кредит, остаток на конец. Навигация, оперативная отчетность происходит по этой таблице. Расчет текущего остатки также элементарен. + операция "пересчета" в случае неких нерегламентных изменений ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 09:47 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
mkr, самое простое - сделать поле с остатком. Только не калькулируемое, а постоянное и триггером вписывать в него текущий остаток. Так, наверное и придется сделать :( Не сильно силен в хранимках - как сделать функцию пересчета остатков в таком варианте? Идея такая - делаем переменную для хранения остатка, пробегаемся по всем операциям, в каждой строке операции обновляем поле остатка. Например: opdate opsum opamount 01.01.2020 +10 10 02.02.2020 -5 5 02.10.2020 +1 6 Как красиво написать функцию пересчета остатков? Триггер на обновление добавляемого поля вроде сдюжу написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 18:45 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFomin, остатки лучше пересчитывать ночером и хранить в отдельной таблице. Иначе будет сильная конкуренция и постоянные конфликты обновлений ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 19:10 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Хоспиди... Операционный инсёрт-триггер апдейдит запись за этот день в таблице остатков инкрементом суммы операции, со знаком, ессно. Если для каких-то целей нужен ещё и остаток после выполнения каждой операции, зачитывает получившийся остаток за день и заполняет поле "остаток" в текущей записи таблицы операций. Транзакция снапшот, разумеется. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:11 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
GrigoriyFomin mkr, самое простое - сделать поле с остатком. Идея такая - делаем переменную для хранения остатка, пробегаемся по всем операциям, в каждой строке операции обновляем поле остатка. Например: opdate opsum opamount 01.01.2020 +10 10 02.02.2020 -5 5 02.10.2020 +1 6 поле с остатком чего? (по структуре opdate, opsum, opamount совсем непонятно) обновляем все все операции на текущий остаток? решение, на мой взгляд, не лучше постоянного on-line пересчёта... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 09:04 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
У меня остатки хранятся в одной таблице с движениями. Дополнительное поле. При закрытии периода (день/месяц/год) формируются остатки, и в дальнейшем при получении остатков на дату берется ближайший остаток и от него считается уже суммарное движение ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 12:34 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, А изменения, удаления? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 13:15 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
982183, В закрытом периоде изменения запрещены. При необходимости изменить отменяем закрытие периода. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 13:25 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Счастливчик.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 13:27 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
982183, Период может быть как угодно долго не закрываться. Это влияет только на скорость расчета. Но если бухгалтерия закрыла месяц, все. Дальнейшие изменения запрещены. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 13:45 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений> У меня остатки хранятся в одной таблице с движениями. Шавлюк Евгений> Доп.поле. При закрытии периода формируются остатки Остатки считаются только процедурой закрытия или пересчитываются на каждое движение? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 14:12 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Закрытие периода только процедурой. Отмена закрытия периода на текущие остатки не влияет, только на скорость расчета. В некоторых случаях, для безопасности клиентов, можно удалять все документы на дату меньше закрытия. Моя структура документов. 1. Есть документ, каждый тип документов имеет свою процедуру "проведения". 2. Есть документ "закрытие периода". Он записывает текущие остатки + записывает в отдельную таблицу дату закрытия 3. Процедура получения остатков на дату смотрит какая дата ближайшая (date_ost), и дальше относительно нее считает: остатки + движение за время до указанной даты (date_report) Код: sql 1. 2. 3. 4. 5.
Если интересно, могу более подробно указать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 14:29 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений Если интересно, могу более подробно указать Интересно. Давай подробности) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 14:42 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений> Закрытие периода только процедурой. Ну т.е. текущие остатки - это "закрытые" + движения после. Тогда это некая разновидность хранимых агрегатов, для ускорения. Нормально, имеет право на жизнь (хоть и очень нестандартная). > Если интересно, могу более подробно указать Конечно. Если в одно сообщение неудобно - можешь отдельный топик создать, с DDL/DML. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 16:04 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНормально, имеет право на жизнь (хоть и очень нестандартная). "Чо?" Это абсолютно стандартная схема хранимых агрегатов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 16:07 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
DS> Это абсолютно стандартная схема хранимых агрегатов. По периодам - зависит от, но в доп.поле в той же таблице?! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 16:16 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
vkorshun, подтверждаю. Тоже именно так делаем в своем бух.комплексе. Процедурой "закрытия периода" фиксируем сальдо по счетам (+субконто при наличии) на начало каждого периода. Остатки на текущую дату считаем хранимой процедурой с кучей входящих параметров, отсчитывая от зафиксированной суммы. Сервер выплевывает данные, как самолет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 16:41 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений 2. Есть документ "закрытие периода". Он записывает текущие остатки + записывает в отдельную таблицу дату закрытия а почему бы в отдельную таблицу и остатки не записывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 16:45 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
mkr а почему бы в отдельную таблицу и остатки не записывать? Потому что в моем случае я могу получить данные одним запросом, а не склеивать из двух разных таблиц А в отдельной таблице только ссылка на дату и ID документа закрытия периода ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 17:31 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений> Потому что в моем случае я могу получить данные одним запросом Всё равно же подзапрос нужен будет? Или что-то вроде Sum(движения) + Min(остаток) Where Date > ...? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 17:48 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений Потому что в моем случае я могу получить данные одним запросом, а не склеивать из двух разных таблиц Код: sql 1. 2. 3. 4. 5.
на мой взгляд, уж лучше склеить чем группировать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 17:56 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
mkr, Тогда тебе придется хранить остатки на каждый день. Иначе как посчитаешь на произвольную дату? [Остаток на конец 08.01.2020] = [остатки на конец 31.12.2019] + [движение за период с 01.01.2020 по 08.01.2020]. Движение все равно надо группировать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:06 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Всё равно же подзапрос нужен будет? Или что-то вроде Sum(движения) + Min(остаток) Where Date > ...? В таблице с признаком "Остаток" именно остаток на указанную дату. И соответственно достаточно только select Sum(движения) Where (дата = :дата_формирования_остатка and признак_остатков = 1) or (дата between :дата_формирования_остатка + 1 and :дата_отчета and признак_остатков = 0) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:12 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений> В таблице с признаком "Остаток" именно остаток на указанную дату. Шавлюк Евгений> достаточно только select Sum(движения) Where (признак_остатков = 1) Ну т.е. в доп.поле не остаток, а только признак. Сам остаток в том же поле, что и суммы +/-. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:23 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений Тогда тебе придется хранить остатки на каждый день. It depends. В бухгалтерии, с сальдо по всем счетам, будет излишеством нехорошим, а в оперативном учёте, скажем остатки денег на банковском счету, в той же кассе, конкретного товара на реальном (не бухгалтерском) складе - очень даже. На складе, правда, удобнее прямо в складской карточке, по завершении каждой операции, со ссылкой на неё - товаров до и больше, а состояние на конкретный день нужно в исключительных случаях, можно и посчитать. Кстати, если касса не фискальная, для внутреннего учёта, изменения лучше запретить нафиг. Лучше ввести в обиход понятие операции корректировки после ошибки, и пофиг закрыт день или нет. С указателем на операцию с ошибкой, авторством и комментарием. Целее денешки будут, когда кассир знает, что он под колпаком у Мюллера. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:24 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Все "затронутые" будут против "операции корректировки после ошибки". Ибо даже в складском учёте по многу раз приход-расход перепроводят. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 18:57 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Все "затронутые" будут против "операции корректировки после ошибки". Ибо даже в складском учёте по многу раз приход-расход перепроводят. Когда меня брали на работу в последнюю фирму, хозяин, тяжело дыша, говорил - Саша! Сделай так, чтоб у меня не *дили вагонами! И мнение "затронутых" его ни разу не интересовало. И на складе в оперативном учёте у меня ничего не перепроводили. Ошиблись - проведите операцию инвентаризации с составлением акта. Бухгалтерия - другое дело, она предназначена для кроилова. А оперативный учёт - чтобы смотреть правде в глаза. И тут кроилово неминуемо ведёт к попадалову. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 19:18 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Softologic Шавлюк Евгений Если интересно, могу более подробно указать Интересно. Давай подробности) Попробовал описать подробнее ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 21:19 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
Шавлюк Евгений Респект. Почитаю, пригодится для расширения кругозора. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2020, 22:26 |
|
Подскажите красивое решение - журнал движения денег
|
|||
---|---|---|---|
#18+
СПМ> И мнение "затронутых" его ни разу не интересовало Отож, мой знакомый сказал то же самое, только не вагонами, а "не могу понять, куда они миллионы тратят". Проблема в том, что работать будут "они", визжать и ворчать - тоже "они", на мозги капать "эта новая фигня неправильно считает" - тоже они. Шавлюк Евгений> Попробовал описать подробнее Спасибо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 17:16 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560474]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 439ms |
0 / 0 |