|
|
|
конструкция данных для вывода в отчет сопоставления
|
|||
|---|---|---|---|
|
#18+
ADP Есть задача сопоставить данные планируемых и фактических поступлений. сложность вот в чем: одной строке в плане может соответствовать несколько строк в факте и наоборот кроме того может быть соответствие группе из нескольких строк плана группе строк факта (платеж A частично относится к плану А частично к плану B , но не интересно в какой именно части) пока приходит в голову такая конструкция таблицы : t1 Группы платежей (Кодгруппы-счетчик, комментарий) t2 Список id строк из таблицы планирование по группам t1 (idплана, idгруппы) t3 Список id строк из таблицы факт по группам t1 (idплана, idгруппы) такая структура может позволить хранить необходимые данные. причем впоследствии легко создать источник для результирующего запроса при этом критерием для группы в отчете будет код t1 но вот в чем меня мучают сомнения - в основном все данные соответствуют один к одному и создание групп скорее исключение чем правило. при этом логично в таблицах план и факт добавить по полю идентификатора записи - связи вот я мучаюсь что лучше создать однородную структуру с группами или собирать для отчета данные по данные соответствия один к одному UNION многие ко многим и опять же борьба с повторами в отчете (или запросе - источнике?) или подчиненные отчеты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:18 |
|
||
|
конструкция данных для вывода в отчет сопоставления
|
|||
|---|---|---|---|
|
#18+
Можно сделать другой вариант структуры основных данных. В которой одной строке плана всегда соответствует одна строка факта. 1. Сумма факта, не может быть больше плана. 2. При соотнесении факта и плана если факт меньше плана, тогда план дробится. Пример: план 1. 01.01.04 100,00 - зачислено 0,00 2. 01.02.04 150,00 - зачислено 0,00 Факт 02.01.04 50,00 - после процедуры соотнесения вместо план 1. становится 01.01.04 50,00 - зачислено 50,00 01.01.04 50,00 - зачислено 0,00 01.02.04 150,00 - зачислено 0,00 При таком подходе - связь всегда один-ко-многим со многие со стороны плана. Соответственно построение отчетов намного упрощается. Сорри, если не свосем понятно рассказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 11:11 |
|
||
|
конструкция данных для вывода в отчет сопоставления
|
|||
|---|---|---|---|
|
#18+
2 incod если я правильно понял подход : если факт из двух частей а план одна - то делаем из одной записи план - две и делим соответственно сумму плана на части в некоторой пропорции в исходной таблице. в принципе разумно если добавить идентификатор дробления чтоб потом можно было сгруппировать и просумировать (так как в отчете нужно увидеть именно исходные данные а не разбитую на части сумму) единственное неудобство , которое я сейчас в таком походе вижу - то что у меня многие ко многим (с двух сторон ) а платежи дробить нельзя. самое смешное что если данные о дроблении платежей и планов вынести в отдельные таблицы - вылезает структура сходная с изначальной )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 11:28 |
|
||
|
конструкция данных для вывода в отчет сопоставления
|
|||
|---|---|---|---|
|
#18+
В общем-то понял правильно, но не до конца Если план один, а факта два, то план дробится не в некоторой пропорции, а по той части которая погашена фактом. При таком подходе нет необходимости выносить в отдельные таблицы - все можно считать по исходным. P.S. Я же не говорил, что такой подход единственно правильный - просто один из имеющихся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 11:50 |
|
||
|
конструкция данных для вывода в отчет сопоставления
|
|||
|---|---|---|---|
|
#18+
Если план один, а факта два, то план дробится не в некоторой пропорции, а по той части которая погашена фактом у меня немножко другая задача - мне нужно учитывать не списание плана а сопоставлять план и факт т.е. без учета сумм. но твой совет навел на такое решение t2, t3 выкинуть оставить только t1 c группами а в таблицы с планом и фактом добавить не только поле с идентификатором связи один к одному но и еще поле с ид группы для связи через группу и выставлять одно из значений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 15:24 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32421964&tid=1676465]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 330ms |

| 0 / 0 |
