powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос - делаю в Фоксе учет финансов
40 сообщений из 40, показаны все 2 страниц
SQL запрос - делаю в Фоксе учет финансов
    #38224333
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, добрые люди!

Мне нужно решить следующую задачу:
Ситуация .
1) на предприятии имеется ряд фондов, которые предназначены для финансирования отдельных хозяйственных процессов
2) иногда, по решению руководства, средства из какого-либо фонда берутся в заем для финансирования процессов другого фонда и впоследствии должны быть возвращены
3) на данный период имеется только учет займов, построен он таким образом:
- в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают.

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

Задача
- если нужно - реорганизовать данные
- иметь возможность видеть "взаимные" обязательства фондов:
- как минимум - в одной строке: из какого фонда в какой поступили средства
- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займ

Мои вопросы
1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?
2) возможно ли задачу минимум решать при существующей организации хранения данных?

Благодарен за все ответы, комментарии и т.п.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224398
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Храните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма
Тогда и учет, и выборки упростятся...
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224400
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :)
labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?
labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да.
labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224402
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно.

P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224796
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма
Тогда и учет, и выборки упростятся...

Я уже об этом думал, но "одна голова - хорошо...", а лучше - посоветоваться, а в данном случае одной моей - недостаточно :(
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224802
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirlabirintесли нужно - реорганизовать данныеlabirintкак минимум - в одной строке: из какого фонда в какой поступили средстваСлово "проводка" о чём-нибудь говорит? :)

Немного, знаю, что это из бухгалтерии, но как осуществить - еще нет.

labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?

В точности - как Вы написали.

labirint1) как вы думаете - можно ли какую-то часть этой задачи решать ОДНИМ запросом?Да.
labirint2) возможно ли задачу минимум решать при существующей организации хранения данных?Минимум - да.

Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224807
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540labirint... в таблицу, где хранятся данные о средствах фондов и их движении, при займе заносятся 2 записи - одна для фонда, из которого берут - с минусом, 2-я для фонда, в который деньги поступают. Должны быть не записи, а поля. Хотя информации недостаточно.

P.S. Это что, очередной курсач? И время как-то неудобно выбрано... суббота как-никак

Не курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват".
А суббота у меня получилась рабочая и уже не первая.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224811
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... не получилось правильно учесть цитаты и редактировать, поэтому переписываю...

tanglirСлово "проводка" о чём-нибудь говорит? :)

Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет.

tanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?

В точности - как Вы написали.

tanglirМинимум - да.

Но, похоже, лучше сначала реорганизовать структуру данных и решить всю задачу оптимально?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224817
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintНе курсач. Задача реальная. Стандартный бух-софт здесь не использовался изначально и пользуются этой информацией не бух-ры. Возможно поэтому "неадекват".
А суббота у меня получилась рабочая и уже не первая.Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :)

Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке.
Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата
по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc.
Но это так, первое приближение, то, что первое приснилось... :)
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224825
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirinttanglirСлово "проводка" о чём-нибудь говорит? :)

Немного. Знаю, что это из бухгалтерии, но как осуществить - еще нет.
Погугли бухучет счета и двойная запись
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38224859
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну-у-уу, наро-о-од... Движемся в нужном направлении, всё же...
AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма tanglirСлово "проводка" о чём-нибудь говорит? :)Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225165
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540Да, не посмотрел профиль, сорри... Не только у тебя сб-вс рабочими бывают. :)

Насчет реорганизации данных: имно, фондов не очень много бывает - 5-10. Вполне всю инфу по движению денег можно хранить в одной строке.

Ну, как написали выше - поля: дата, счет-дебет, счет-кредит, сумма, да? Фондов действительно не много. И записей пока не очень много. Пожалуй сделаю небольшой "парсер", и перегоню данные в новую таблицу с такой структурой. А дальше будем сохранять одновременно - как было и в новую таблицу, чтобы не переделывать то, что уже работает в других "модулях".

Jonny540Различать строки по дате, заодно потом можно "историю" показать. А насчет отображения - представляется что-то типа "таблицы чемпионата
по футболу", где в пересечениях стоит сумма (+S или -S или 0). На экран в 17" вполне влезет. Ну и общие итоги, etc.
Но это так, первое приближение, то, что первое приснилось... :)

Это надо согласовать с пользователем. Спасибо!
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225166
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMНу-у-уу, наро-о-од... Движемся в нужном направлении, всё же...
AndreTMХраните данные об операции одной записью: Дата, ДебетФонд, КредитФонд, Сумма Что ещё-то надо для учёта? Рассказать ТСу, как завести таблицу со списком фондов?

Таблица со списком есть :)
Я как перенесу эти операции в таблицу с предложенной структурой, выйду дальше на обсуждение - как же выбирать данные в требуемом виде?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225179
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создал новую таблицу и задумался..........

В исходной таблице используем поля:
fmdate - дата,
fundid - фонд ИД,
fmsum - сумма,
oper_code - код операции

в которых:
в 2-х строках одинаковая дата
сумма: с минусом в фонде, откуда взято и с плюсом (т.е. без знака) - куда внесено
коды фондов
коды операции соответствующие:
займ отсюда - 3
займ сюда - 4
возврат отсюда - 6
возврат сюда - 7

Структура новой таблицы (как рекомендовали):
lod - дата операции
fromfund - из фонда (соответствует кодам 3 и 6)
tofund - в фонд (операции 4 и 7)
losum - сумма

Правильно ли сделал?

Возможно ли одним запросом это все скопировать в новую таблицу? Или придется писать что-то со сканом или do while?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225260
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЧто ещё-то надо для учёта?Да всё уже есть, осталось только решить вот эту задачку:
labirinttanglirНепонятно. Это что-то вроде "фонд А должен фонду Б 200, в то же время ему должны: В - 150, Г - 80, Д - 50. Вывести В и Д"? Или что? Может, пример приведёте?В точности - как Вы написали.
labirintВозможно ли одним запросом это все скопировать в новую таблицу?Если на каждую дату у каждого фонда может быть не более одной операции (каждого типа, т.е. максимум 4 разных в один день), то да. Правда, он медленный будет, но всё равно это разовый запрос. Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно.
labirintСтруктура новой таблицы (как рекомендовали):
lod - дата операции
fromfund - из фонда (соответствует кодам 3 и 6)
tofund - в фонд (операции 4 и 7)
losum - сумма

Правильно ли сделал?Код операции забыли :)
И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :)
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225668
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirlabirintВозможно ли одним запросом это все скопировать в новую таблицу? Прочитал внимательно, увидел поле "код операции". Тогда ответ - можно.

Уже легче. Подкиньте идею, плииз - как примерно оно может быть?
tanglirlabirintСтруктура новой таблицы (как рекомендовали):
lod - дата операции
fromfund - из фонда (соответствует кодам 3 и 6)
tofund - в фонд (операции 4 и 7)
losum - сумма

Правильно ли сделал?Код операции забыли :)
И если собираетесь различать займы и возвраты, то надо ещё поле добавить, с типом операции. Если оно вообще надо, конечно, ведь по сути у вас займ и возврат - одно и то же, это же не выдача кредитов какая-нибудь :)

В новой таблице код как-то не прижился - есть ведь "откуда" и "куда", соответственно понятно - где "минус". Хотя, похоже "займ/возврат" не помешают. Спрошу пользователя - надо ли ему видеть: займ это или возврат?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225802
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, стоп. Прочитал ещё внимательней .
oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет?
Если не может, то вот набросок:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
 fmdate as lod
 ,o1.fundid as fromfund
 ,o2.fondid as tofund
 ,o1.fmsum
from old_table o1
join old_table o2 on o1.fmdate=o2.fmdate
 and o1.oper_code=3 and o2.oper_code=4 
 or o1.oper_code=6 and o2.oper_code=7
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225839
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirна каждую дату у каждого фонда может быть более одной операции ...
ты в join фонд забыл включить :)
и скобки в and ... or

лучше по дате-сумме, если все в один день происходит и сумма только знаком отличается.
Код: sql
1.
on o1.fundid=o2.fundid and o1.fmdate=o2.fmdate and on o1.sum=-o2.sum


единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом.
Этот запрос покажет "нездоровые" комбинации :
Код: sql
1.
2.
3.
4.
select fundid, fmdate, sum(sum) as nenol, count(*) as nCnt;
    from old_table;
    group by fundid, fmdate;
    having nenol != 0 or nCnt != 2
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38225845
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tты в join фонд забыл включить :)
Упс, это я его зря включил

исправляюсь
Код: sql
1.
on o1.fmdate=o2.fmdate and on o1.sum=-o2.sum


проверочный
Код: sql
1.
2.
3.
4.
select fmdate, sum(sum) as nenol, count(*) as nCnt;
    from old_table;
    group by fmdate;
    having nenol != 0 or nCnt != 2
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226071
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirТак, стоп. Прочитал ещё внимательней .
oper_code - это 3/4/5/6, т.е. код типа операции (займ, возврат), а не уникальный код самой операции? Тогда снова встаёт вопрос - на каждую дату у каждого фонда может быть более одной операции (каждого типа, т.е. максимум 4 разных в один день) или нет?
Если не может, то вот набросок:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
 fmdate as lod
 ,o1.fundid as fromfund
 ,o2.fondid as tofund
 ,o1.fmsum
from old_table o1
join old_table o2 on o1.fmdate=o2.fmdate
 and o1.oper_code=3 and o2.oper_code=4 
 or o1.oper_code=6 and o2.oper_code=7



Просто хочется сказать ВАУ! Спасибо!

oper_code - это код типа операции. Уникальные коды тоже есть, но они идут в общем потоке приходов/расходов фонда и как мне кажется в данном случае не помогут.
У любого фонда количество таких операций в сутки не ограничено программно. Также нет ограничений организационных, т.о. попадаются операции займа и погашения в один и тот же день и любые другие.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226099
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tи скобки в and ... or
............
единственное проверить что в один день по каждому фонду одна сумма проходит один раз с плюсом и один с минусом.


Одна сумма проходит по одному фонду с минусом, а по другому с плюсом, а не 2 записи по одному фонду с "+" и "-". Но Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226112
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintУ любого фонда количество таких операций в сутки не ограничено программноТогда благодарить ещё ой как рано. То есть постулировать уникальность (фонд-операция-дата) мы не можем. Ну а как насчёт (фонд-операция-дата-сумма)? Если оно уникально, то поможет такое (спасибо Dima T за напоминание о скобках):
Код: sql
1.
2.
3.
4.
join old_table o2 on o1.fmdate=o2.fmdate
 and (o1.oper_code=3 and o2.oper_code=4 
  or o1.oper_code=6 and o2.oper_code=7)
 and o1.fmsum=-o2.fmsum

В общем, Вам необходимо как-то найти уникальный идентификатор операции, иначе что делать вот с таким, например (всё проходит одной датой):фондтип_операциисумма1выдача займа2001выдача займа2002получение займа2003получение займа200Какая из первых двух строк связана с третьей, а какая с четвёртой?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226119
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintНо Одна и та же сумма может, в принципе, пройти за день дважды из одного фонда в другой - т.е. 2 займа за день на одинаковую сумму.Тады ой. Ищите уник, иначе придётся делать сканами.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226277
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сканами в принципе не сложно.
Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько).
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
* Исходные данные
create cursor oper (dDate d, nFondId i, nSum y)
insert into oper values ({^2013-01-02}, 1, 200)
insert into oper values ({^2013-01-02}, 2, -200)
insert into oper values ({^2013-01-02}, 1, 200)
insert into oper values ({^2013-01-02}, 3, -200)
insert into oper values ({^2013-01-05}, 4, 50)
insert into oper values ({^2013-01-05}, 1, -50)
insert into oper values ({^2013-01-05}, 3, 3000)
insert into oper values ({^2013-01-05}, 2, -3000)
* выборка выдач (отрицательные суммы)
select *, cast(0 as int) as nFondPolId from oper;
	where nSum < 0;
	order by dDate, nSum desc;
	into cursor tVidano readwrite

* выборка получений (положительные суммы)
select *, cast(0 as int) as nFondVidId from oper;
	where nSum > 0;
	order by dDate, nSum;
	into cursor tPolucheno readwrite

* Простановка второго фонда в каждый курсор
sele tVidano
scan
	if tVidano.dDate != tPolucheno.dDate or tVidano.nSum != -tPolucheno.nSum
		MessageBox('Косяк в исходных данных')
		exit
	endif
	repl in tVidano nFondPolId with tPolucheno.nFondId
	repl in tPolucheno nFondVidId with tVidano.nFondId
	skip in tPolucheno
endscan

brow
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38226776
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TСканами в принципе не сложно.
Исхожу из того что выдача и получение происходит в один день, а также при выдаче из одного фонда вся сумма попадает в другой (а не частями в несколько).


Да, так.

вижу, что 2-мя запросами и сканом можно перенести данные.
Спасибо за код!
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38231885
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
labirintвижу, что 2-мя запросами и сканом можно перенести данные.
Спасибо за код!

Первая часть получилась - создать таблицу.
Теперь со второй - поможете? :)
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38231940
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintТеперь со второй - поможете? :)"вторая часть" - это вот это?
labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займТогда давайте на примере, вот таком хотя бы
idfrom_fundto_fundamount1121002234032360423405312063180 покажите, какой результат хочется увидеть.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233470
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirlabirintТеперь со второй - поможете? :)"вторая часть" - это вот это?
labirint- лучше - если займ из одного фонда перекрывается обязательствами из другого фонда, то показать каким фондом перекрыть этот займТогда давайте на примере, вот таком хотя бы
idfrom_fundto_fundamount1121002234032360423405312063180 покажите, какой результат хочется увидеть.

А ка Вы сюда таблицу поместили?
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233482
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirint,

тег [ csv ]
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233513
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintА ка Вы сюда таблицу поместили?
Нажми "цитировать" и посмотри исходник :)
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233616
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
labirinttanglir"вторая часть" - это вот это?

idfrom_fundto_fundamount11210022340 покажите, какой результат хочется увидеть.

А ка Вы сюда таблицу поместили?

Например, есть исходные операции:
датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132550005.01.20133550008.01.201328500 и т.д.

результат (хочется видеть)
ИЗфондаВ_фондсумма51100081500
т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233874
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirint,

М-да... Видите, насколько важна постановка задачи. При такой постановке однозначного решения нет.

Представьте такую картину:
ИзфондаВфондСумма121000135002320031200
Что получается:
ФондСумма1-10002-20057008500

И кто кому сколько должен платить? Это я еще не слишком удачный пример привел ...
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233894
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintрезультат (хочется видеть)
ИЗфондаВ_фондсумма51100081500
т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.Хочется "видеть"? То есть это нужно только отобразить, для последующих расчетов именно такая форма - не особо принципиальна? Кому "хочется видеть"? - вам, бухгалтерии, начальству? Почему именно в таком конкретном виде? Ведь для таких отображений существует "шахматка", и "бухгалтер" об этом знает, привык видеть в таком разрезе; либо в виде оборотки между двумя конкретными фондами. А косолидация оборотов в "группе фондов" таит в себе маленькую, но очень скрытую угрозу - не по всем возможным оборотам возможна "полная консолидация-взаимозачёт", и вот изучение всех возможных движений и есть путь к решению задачи, а то можно заложить косяки уже при проектировании...
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233935
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintlabirintпропущено...


А ка Вы сюда таблицу поместили?

Например, есть исходные операции:
датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132550005.01.20133550008.01.201328500 и т.д.

результат (хочется видеть)
ИЗфондаВ_фондсумма51100081500
т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.
Если у тебя фонд 2 может занять в 1-м а вернуть в 5 и 8, то тут нельзя говорить кто кому должен. Можно только разделить кредиты и долги, т.е. ожидай такой результат
ФондВыдалДолжен50100080500115000
этот результат можно присте к тому что ты ожидаешь т.к. один фонд выдавший, но если выдавших будет много и должников много, то твою табличку возвратов можно нарисовать кучей способов.

Ели это принципиально, то надо фиксировать именно возвраты в исходный фонд , т.е. взаимозачеты
датаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132150004.01.20131550005.01.20133150005.01.20131550008.01.20132150008.01.201318500 тогда можно получить то что ты хочешь.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38233971
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirint,

Может, рассмотреть такой вариант?

Исходные данные:
ДатаИЗ_фондаВ_фондСумма12100013500257003140028500
Результат:
ID_фондаF1F2F3F4F5F6F7F8Itog10-1000-10000000-110021000000-70000-500-200310000000001004000000000507000000007006000000000700000000080500000000500

Правда, вопросов все равно еще много остается...
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38234407
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny540labirint,

М-да... Видите, насколько важна постановка задачи. При такой постановке однозначного решения нет.

Представьте такую картину:
ИзфондаВфондСумма121000135002320031200
Что получается:
ФондСумма1-10002-20057008500

И кто кому сколько должен платить? Это я еще не слишком удачный пример привел ...

Это состояние отдельных фондов по сумме приходов расходов в каждом, это уже есть.
Мне нужно именно состояние взаимных обязательств, желательно, с исключением "промежуточных" сумм и фондов, т.е. тех, через которые, при погашении, средства пройдут транзитом.
Поэтому в моем примере и объяснении я исключил из результата фонды 2 и 3.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38234417
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMlabirintрезультат (хочется видеть)
ИЗфондаВ_фондсумма51100081500
т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.
Хочется "видеть"? То есть это нужно только отобразить, для последующих расчетов именно такая форма - не особо принципиальна? Кому "хочется видеть"? - вам, бухгалтерии, начальству?

Финдиректору. Он не бухгалтер, и бухгалтерия этим не занимается, фонды не проходят по бухсчетам.
AndreTMПочему именно в таком конкретном виде? Ведь для таких отображений существует "шахматка", и "бухгалтер" об этом знает, привык видеть в таком разрезе; либо в виде оборотки между двумя конкретными фондами. А консолидация оборотов в "группе фондов" таит в себе маленькую, но очень скрытую угрозу - не по всем возможным оборотам возможна "полная консолидация-взаимозачёт", и вот изучение всех возможных движений и есть путь к решению задачи, а то можно заложить косяки уже при проектировании...
Не хочется вникать в термины "консолидация", "оборотка" и др. (хотя может и зря), поскольку бухгалтеру это пока не поручают, а ФД не намерен пока изучать бухгалтерию...
"не по всем возможным оборотам возможна "полная консолидация-взаимозачёт"" - что ПОЛНАЯ может не получиться, понимаю, надо сделать хотя бы частично. В конце-концов - не обязательно одним запросом.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38234419
labirint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tlabirintпропущено...

т.е. фонд "2" из баланса выбыл, поскольку долг передан фондам "5" и "8" и фонд "3" выбыл - долг тоже передан в "5"; 5 и 8 - это фонды из которых нужно вернуть долг.
Если у тебя фонд 2 может занять в 1-м а вернуть в 5 и 8, то тут нельзя говорить кто кому должен. Можно только разделить кредиты и долги, т.е. ожидай такой результат
ФондВыдалДолжен50100080500115000
этот результат можно пристегнуть к тому что ты ожидаешь т.к. один фонд выдавший, но если выдавших будет много и должников много, то твою табличку возвратов можно нарисовать кучей способов.

Ели это принципиально, то надо фиксировать именно возвраты в исходный фонд , т.е. взаимозачеты
Возвраты, когда они делаются - конечно фиксируются. Задача увидеть дисбаланс, если так можно сказать, крайних значений, чтобы при планировании возвратов понимать - откуда начинать погашение.
Dima TдатаИЗфондаВ_фондсумма01.01.201312100002.01.20131350004.01.20132150004.01.20131550005.01.20133150005.01.20131550008.01.20132150008.01.201318500 тогда можно получить то что ты хочешь.
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38234422
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirint,

Я понимаю, что "не обязательно одним запросом". Вопрос теперь упирается не в реализацию, а в "принятые у вас принципы учёта взаимозачётов", т.е. в бизнес-логику. И тут никакие наши советы не помогут, надо, как я уже упоминал, разбираться с движениями средств и смотреть, что, где и как можно "сокращать".
Вообще, вам бы сейчас надо не пытаться сделать махом "красивый отчётик", а расспросить знающих, как правильно такой отчётик составляться должен...
...
Рейтинг: 0 / 0
SQL запрос - делаю в Фоксе учет финансов
    #38234519
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labirintВозвраты, когда они делаются - конечно фиксируются. Задача увидеть дисбаланс, если так можно сказать, крайних значений, чтобы при планировании возвратов понимать - откуда начинать погашение.
Тут два варианта:
1. Как в твоем примере: получают из одного фонда (1->2), а возвращают в другие (2->5 и 2->8). С точки зрения сумм все нормально (фонд 2 ничего не должен), это нормально только если фонды все под одним управлением. Но тут невозможно утверждать что фонды 5 и 8 должны в 1. Поэтому надо конкретный алгоритм погашения долгов. Например возврат идет сначала в фонд с максимальной выданной суммой. Может какой-то другой алгоритм, например связанный с датами: кто раньше выдал тому вперед возвращать. Тут ты должен знать как правильно для твоей задачи.

2. Фонд А должен фонду Б пока явно не вернет. Тогда учет усложняется, как я показал возврат должен быть не как у тебя (2->5 и 2->8) а через фонд источник (2->1;1->5 и 2->1;1->8). Но тут можно четко видеть кто-кому сколько должен.

Если у тебя задача позволяет, то удобнее делать по варианту 1. В интерфейсе как-то так реализовать:
в фонде X появилась сумма N для возврата: получаешь список фондов для возврата отсортированных в порядке убывания порядка погашения и возвращаешь с учетом суммы долга.
например список выдач
Фонд Выдано15002300
решили погасить из 5 фонда 700 формируешь проводки
датаИЗфондаВ_фондсумма22.04.20135150022.04.201352200

Думаю тебе надо условия задачи поподробнее выяснить: какие операции возможны и что определяет алгоритм их решения.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос - делаю в Фоксе учет финансов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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