
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.09.2004, 02:33:34
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Основные табл-ы бызы(упрощенно): Клиенты(IdКлиент); Квоты(IdКлиент, Квота, Дата); ТратыПоМесяцам(IdKлиент, Сумма, Остаток), где Остаток=Сумма-Квота. Если Квота использована не полностью, то разница "сгорает". Возникла необходимость разрешать/запрещать переносить неиспользованное на след.месяц. Добавил в табл.Квоты логич.поле [Копить?] и на этом все кончилось. Раз накопление разрешают/запрещают, то вроде поле Дата нужно и где-то надо еще неиспользованное копить... Вобщем просится еще одна таблица, но ее структура, обработка записей и участие в программе - в полном тумане, может кто подскажет чего путное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 05:17:13
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
>Раз накопление разрешают/запрещают, то вроде поле Дата нужно насколько я понял оно уже есть >Квоты(IdКлиент, Квота, Дата); не так ли? насколько я понял,если у тебя меняется квота то появляется навая запись в таблице квот и в дальнейшем она влияет на формирование остатка с этой даты >Добавил в табл.Квоты логич.поле [Копить?] Продолжая эту логику можно сказать, что и изменение квоты и изменение ее типа ( [Копить?] да/нет) должно приводить к появлению новой записи в таблице квот теперь достаточно лиш модифицировать алгоритм вычисления остатка добавив в него реакцию на новое свойство Если не можеш родить сам алгоритм то копай в сторону IF [Копить?] = да AND (Квота не израсходована) болше подсказать трудно ибо не ясен сам исходный алгоритм >Остаток=Сумма-Квота в частности не понятно что происходит если Сумма < Квота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 12:39:24
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
По пунктам: 1. ...новая запись в таблице квот и в дальнейшем она влияет на формирование остатка с этой даты... все правильно 2. ...изменение ее типа ( [Копить?] да/нет)должно приводить к появлению новой записи... Ну, в принципе можно, хотя мне казалось, что здесь только тип нужно менять, а в новой таблице помещать запись о дате начала накопления и саму "копилку". В табл.Квоты для каждого [IdКлиент] указана [Квота] начиная с [Дата]. Пока Клиенту не выделена новая Квота, эта запись - "рабочая". Если не добавить какую-то новую таблицу, то в случае накопления, неиспользованная часть старой Квоты должна прибавляться к Квоте "рабочей" записи? По смыслу так, конечно, и происходит, но если в карточке Клиента, в поле "Выделена квота" будет указано 500, то не понятно: это выделено или он наэкономил столько? 3. ...не ясен сам исходный алгоритм... Остаток=Сумма-Квота, если Остаток <0( Сумма < Квота ) или =0, то ничего не происходит - Клиент уложился в Квоту. Если Остаток >0, то его величину надо списать со счета Клиента - перерасход выделенной Квоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 13:44:39
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
>Если Остаток >0, то его величину надо списать со счета берем актуальную на дату расчета остатка строку Квоты(IdКлиент, Квота, Дата,Копить); Если Остаток >0 или Копить=нет , то его величину надо списать со счета Клиента - перерасход выделенной Квоты. Если Остаток < 0 и Копить=да , то его ABS(величину) надо добавить к счету Клиента - накопление неизрасходованной Квоты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 15:35:31
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
...надо добавить к счету Клиента Если б было так просто! "Счет клиента" - это я опрометчиво выразился, на самом деле здесь программа кончается, в жизни Клиенту предоставляется распечатка и сообщается, что он должен "Остаток" рублей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 19:03:26
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Вроде выкрутился: Табл.Квоты: добавил флажок "Копить" и поле [dtНачалоКопить] Табл.ТратыПоМесяцам добавил поле [КвотаНакопл](по умолч.=0) При открытии формы "Новая Трата" программа в табл.Квота через составной запрос ищет для данного idКлиент запись с "Копить"=-1. В запрос попадает только последняя - "действующая" квота. Если такая запись есть, то возвращается значение [dtНачалоКопить]. Потом это значение + idКлиент служат параметрами запроса к табл.ТратыПоМесяцам. Запрос возвращает Sum([Остаток]), если она <0(есть накопление), то после умножения на -1 это значение попадает в поле [КвотаНакопл]. Расчет теперь идет как:Остаток=Сумма-Квота-КвотаНакопл. Как-будто все работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2004, 19:41:40
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
К сожалению предметная область не очень ложится в формат данного форума и дать внятный диагноз по твоему вопросу без обзора всей системы я не могу. По косвенным ощущениям не совсем правильно спроектирована реакция системы на ФХД(факт (так и хочется сказать фак ) хозяйственной деятельности) Когда выкрутишься, на досуге, советую подумать над следующими теоретическими вопросами 1) Дифференциация временного континуума в учетной системе 2) Влияние ФХД на состояние ОУ (объектов учета) 3) Первичный документ как основа для учета ФХД Желаю успехов и не бойся показатся глупее чем на самом деле :) PS главное постарйся выражать мысли словами а не скриншотами как некоторые :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 11:47:32
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Latuk, может случилось чего?! Что это ты так величаво заговорил? Пункт 1 по формулировке - блеск(откуда списал?)! :)) ---------------------------------------------------------------------- Проще: где-то в самой логике учета и обработке всех этих "квот" у меня есть "нескладушка", так что ли? ---------------------------------------------------------------------- Про "область", которая "не ложится" - не понял(ударение на "я"): на форуме полным-полно "теоретических" вопросов, без просьб подсказать функцию или оператор. ---------------------------------------------------------------------- Лучше б ты, как в анекдоте, - "... пальцем показал." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 11:58:06
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
>пальцем показал Кажися жись состоит из событий. И учетная система должна эти события фиксировать в табличках. Движения денег там всякие, изменения квот. Все остальное- это отчеты Кажися латук не увидел, что твои таблички фиксируют факты(я тоже это мелко вижу) Вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 12:00:49
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
По-моему, в Квоты достаточно добавить флажок Копить, а в Траты - дату расхода. Я предполагаю, что один клиент может иметь несколько квот. При этом активной может считаться либо последняя по дате, либо их сумма, в зависимости от условий. Тогда запросом можно получить на любую дату для любого клиента остаток неистраченных квот. Более сложный случай - если квоты имеют срок действия. Тогда в Таблицу квот нужна дата окончания действия квоты, и запрос результата усложнится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 12:21:22
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Вот.....! Я ж в первом сообщении писал, что, во-первых, описываю только основные таблицы, а , во-вторых - упрощенно ! Квот может быть несколько, активная определяется max Дата, более ранние квоты не учитываются. Табл.ТратыПоМесяцам, ест-нно, имеет ДатуРасхода. С полем ДатаНачКопить - это я перемудрил, наверно, лишнее условие - достаточно выяснить "установлен ли флажок "Копить?" у активной на отчетную дату квоты?". А "движений денег" в базе, как таковых, и нет. На входе: занесенные оператором(с бум.носителей) данные Сумма трат по клиентам, на выходе: распечатка с указанием Остатков(долгов), в середине: обработка внесенной Суммы в зависимости от установленных квот, скидок и прочей хрени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 13:04:24
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Перевожу 1) Дифференциация временного континуума в учетной системе при проектировании учетной системы необходимо изначально определить минимальный промежуток времени (временной квант) на который она сможет точно определять состояние объктов учета. это могут быть например сутки(типично для оперативного учета) т.е. например невозможно сказать сколько денег было в кассе позавчера в середине дня есть только цифра позавчера в 24:00 вчера 00:00 или квартал (типично для бухгалтерского учета) т.е. состояние ОУ может быть определено системой квантовано на конец отчетного периода в то время как на самом деле ОУ может изменятся во времени непрерывно (По такому же приципу определяется дифференциация пространственного континуума) 2) Влияние ФХД на состояние ОУ (объектов учета) В жизни происходит нечто (разрешение накапливать квоту) в результате чего изменяется состояние ОУ (счета клиента) 3) Первичный документ как основа для учета ФХД лубое событие в жизни (разрешение накапливать квоту) если оно влияет на состояние ОУ должно быть зафиксированно учетной системой. стандартным инструментом для этого служит первичный документ (некий бланк/заявление на смену тарифа и т.п.) Я советовал тебе оценить свою систему уяснив эти класические пастулаты тогда решать вопросы подобные заданному в топике станет гораздо легче >блеск(откуда списал?)! я действительно ничего не выдумал эти формулировки можно в том или ином виде найти в любой академической литературе по учету если у вас в штате нет аналитика,который напишет тебе подробное ТЗ то советую хотябы ретроспективно ознакомится с теорией учета которая сама по себе является отдельной от програмирования (и гораздо более древней) дисциплиной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 13:09:21
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Засомневался - а может и надо поле ДатаНачКопить? Табл.Квоты. 1.1.04 установлена квота в 100руб без накопления, с 1.3.04 квота остается той же, но ее разрешено накапливать. Вопрос: это новая запись или достаточно установить флажок, записав ДатаНачКопить = 1.3.04? Далее: с 1.06.04 накопление запретили, квота та же. Вопрос: вводить еще одну запись или достаточно снять флажок, записав ДатаНачКопить = Null? Дело в том, что табл.ТратыПоМесяцам тоже имеет поле [Квота], куда попадает значение квоты актуальное на момент создания новой записи в табл.ТратыПоМесяцам(аналог поля Цена в табл.Заказ, при имеющемся поле Цена табл.Товары в учебной базе) и вроде нет смысла плодить записи в табл.Квоты, только из-за изменения признака накопления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 13:15:03
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
2 Latuk: Ты, надеюсь, не обиделся? Просто был такой разительный переход с "человеческого" языка на "академический", что я и "поперхнулся"... :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 13:25:16
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
BenzinЗасомневался - а может и надо поле ДатаНачКопить? Табл.Квоты. 1.1.04 установлена квота в 100руб без накопления, с 1.3.04 квота остается той же, но ее разрешено накапливать. Вопрос: это новая запись или достаточно установить флажок, записав ДатаНачКопить = 1.3.04? Далее: с 1.06.04 накопление запретили, квота та же. Вопрос: вводить еще одну запись или достаточно снять флажок, записав ДатаНачКопить = Null? Вводить дполнительную запись поле Копить.Default=False, Not nullable Дополнительное поле даты не вводить. Benzin Дело в том, что табл.ТратыПоМесяцам тоже имеет поле [Квота], куда попадает значение квоты актуальное на момент создания новой записи в табл.ТратыПоМесяцам(аналог поля Цена в табл.Заказ, при имеющемся поле Цена табл.Товары в учебной базе) Это, вообще говоря, плохо. Патамушта увеличивает степень функциональной зависимости строк одной таблицы от содержимого другой без достаточного основания. Benzin и вроде нет смысла плодить записи в табл.Квоты, только из-за изменения признака накопления? Это вопрос об определении того, что есть "факт" применительно к этой таблице и твое конструкции воопче. Если ты видишь смысл в том, чтобы добавить поле "ДатаНачКопить", то рано или поздно тебе придется признать, что в паре с полем "копить" оно составляет самостоятельную сущность, выделить ее в отдельную таблицу с Fk на исходную. Это оно тебе нада? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 13:44:05
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
2Victosha: VictoshaЭто, вообще говоря, плохо Ну а как же с примерами в учебных базах? т.Заказ: ключ на IdТовар и Цена в явном виде. А в т.Товары у этого IdТовар Цена сейчас может быть другой, но сделка(в т.Заказ) зафиксирована именно с ценой активной на дату сделки. Иначе придется в т.Товары плодить новые записи, только из-за изменения цены? Видел я как-то лет 10 назад базу сваянную на ...Екселе, вот там так и было - 10 записей товара "Огурцы" только с разницей в цене. Victoshaв паре с полем "копить" оно составляет самостоятельную сущность А то! Я сразу интуичил, что просится какая-то новая таблица(см.№1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 14:03:11
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Benzin2Victosha: VictoshaЭто, вообще говоря, плохо Ну а как же с примерами в учебных базах? т.Заказ: ключ на IdТовар и Цена в явном виде. А в т.Товары у этого IdТовар Цена сейчас может быть другой, но сделка(в т.Заказ) зафиксирована именно с ценой активной на дату сделки. Иначе придется в т.Товары плодить новые записи, только из-за изменения цены? Это СОВСЕМ другая история. И происходит она примено вот из каких представлений. В "учебных" базах Товары совмещают в себе ПрайсЛист. Объявленная цена товара не более чем ориентировка для продавца. Фактическая цена - это реквизит непосредственно строки заказа, НИКАК не связанный ни с какими другими строками в базе ни в каких таблицах. Изменения/удаления/добавления во всех прочих строках прочих таблиц, включая ПРАЙСЛИСТ, не имеют отношению к ФАКТИЧЕСКОЙ зафиксированной по сделе цене. В твоем случае - Если Квота может быть хоть в каком-нибудь смысле оказаться САМОСТОЯТЕЛЬНЫМ реквизитом Траты - пиши ее туда. Если это всего лишь ориентировка для "оператора ввода строки" - делать ей там нечего. Самостоятельным реквизитом она может оказаться, например, в случае, если Траты окажется по совместительству Остатками. Тогда туда, в Траты, поле Остаток вводи. Иначе это просто грязь и непонятно зачем занятое место, НИГДЕ потом не используемое. Benzin Видел я как-то лет 10 назад базу сваянную на ...Екселе, вот там так и было - 10 записей товара "Огурцы" только с разницей в цене. Victoshaв паре с полем "копить" оно составляет самостоятельную сущность А то! Я сразу интуичил, что просится какая-то новая таблица(см.№1). Это не я сказал. Если ты так думаешь, и у тебя есть основания так думать - делай. Мне не разглядеть отсюда - нада оно или нет.. По тому описанию, что было - кажется - не нада... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.09.2004, 14:22:59
|
|||
|---|---|---|---|
Накопление остатков, подскажите идею |
|||
|
#18+
Наконец то я понял, что остатком(долгом) вы называете объем оставшейся квоты. Тогда вот пара мыслей про остатки. Остатки можно считать с регистрами(хранением промежуточных результатов) и без. Регистры- это тот еще геморрой, связанный с понятием "проведение". Есть смысл его использовать при миллионах документов. Тут этого кажися нету. А без регистров можно сделать так, кажися. Делаем документ изменение квоты Дата Клиент Сумма Копить? Если актуально "Не копить", то считаем квоты-траты с первого числа текущего месяца. Если актуально "копить", то считаем с первого изменения "Копить" перед которым было "Не копить", если "не копить" не было, то от рождества христова. Вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1671851]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 356ms |

| 0 / 0 |
