|
|
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть задача: построить достаточно сложную систему для учета документов, финансов и прочей лабуды, но так чтобы каждый объект (в смысле договор, контрагент, счет-фактура...) базы мог менять свои параметры в зависимости от даты. Структура базы без учета даты построена и ясна. Т.к. нужно менять параметры у всех возможных объектов (а их очень много), то была придумана следующая схема для работы со всеми типами объектов: 1. table OBJECTS - хранится ключ объекта. (один ключ на объект) 2. table OBJ_PERIODS + table с данными об объекте - хранятся информация о периоде действия + параметры объекта для конкретного ключа table OBJECTS. (для одного объекта их может быть много) При написании пробных рабочих мест оказалось все очень геморно, сложно и криво :(. Но работало :) Очень не хочется изобретать велосипед, поэтому может быть кто сталкивался с похожими задачами и поделится вариантами решения. Заранее благодарен, Дмитрий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 13:19 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
ЗЫ: MS SQL + Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 13:38 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Тоже хотелось бы услышать опыт ALLа в этом вопросе. Учавствовала в разработке чего-то похожего. (MS sql + VB.Net) - т.е. требовалось сделать некую псевдо-историческую ось. Например - ООО "Ромашка" в ноябре 2004 года переименовалась в ООО "Василек". Поэтому в документах (накладных и т.д.) до ноября 2004 года в качестве имени клиента выдавать "Ромашку", а потом "Василек". Схема была похожа на вашу - Из таблицы OBJECTS никогда ничего не удаляем, а регулируется все за счет таблицы OBJ_PERIODS. Осталась нерешенной проблема - что если мы заключаем длительный договор с "Ромашкой" (например что Ромашка будет поставлять нам в 2007 году компы). А Ромашка тем временем переименовывается в Василек... Получаются что объекты таким образом блокируются... К сожалению наш проект закрылся (по независящей от нас причине), поэтому вопрос мне до сих пор интересен %)) З.Ы. Пыталась узнать, как обстоят дела с этим вопросом в других системах - и практически везде мне отвечали, что такой "исторической оси" либо вообще нет (клиент просто переименуется и все). Либо задача упращена только классификаторами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 14:03 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
2 dm82 примерно то же самое есть таблица ид объектов без даты и таблица с полным состоянием объекта за период из нее можно узнать состояние объекта на заданную дату инфа дублируется но искать проще одну из дат периода можно не хранить ессно в отчетах выводится инфа на нужную дату например на дату составление договора и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 15:09 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
> как обстоят дела с этим вопросом в других системах - и практически везде > мне отвечали, что такой "исторической оси" либо вообще нет > (клиент просто переименуется и все). Либо задача упращена только > классификаторами. Не там спрашивали, не то искали. Ключевые слова "хронологические базы данных". Все отлично работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 15:21 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
/topic/102804 /topic/29368 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 16:12 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Все на самом деле архи-просто но только те слуiайте тех людей, которые предлагают делать select min().max() where <период>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 16:38 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы... попробую поискать по указанным ссылкам. И наверное буду как-то оптимизировать придуманную структуру, т.к. архивный вариант не подходит, а что-то другое думать... придумаю напишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 17:24 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
[quot babaEGA]Например - ООО "Ромашка" в ноябре 2004 года переименовалась в ООО "Василек". Поэтому в документах (накладных и т.д.) до ноября 2004 года в качестве имени клиента выдавать "Ромашку", а потом "Василек". Схема была похожа на вашу - Из таблицы OBJECTS никогда ничего не удаляем, а регулируется все за счет таблицы OBJ_PERIODS. Осталась нерешенной проблема - что если мы заключаем длительный договор с "Ромашкой" (например что Ромашка будет поставлять нам в 2007 году компы). А Ромашка тем временем переименовывается в Василек... Получаются что объекты таким образом блокируются... К сожалению наш проект закрылся (по независящей от нас причине), поэтому вопрос мне до сих пор интересен %)) quot] А книгу про учет расчетов с контрагентами читать не пробовали? При переименовании заводится новый контрагент, оформляется договор, а остатки по договору переуступаются с одного контрагента на другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 18:25 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Насколько я понял - в основном неправильный инжиниринг бизнес процессов и в связи с этим и гемор в ведении учета. Изучайте законодательную базу по ведению учета на предприятии. Мне вот интересно - в бухгалтерии, что будут переписывать все приходные, расходные, договора, спецификации к ним и прочее, если контрагент переименовался? Спросите у Главбуха для начала.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 18:28 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Валентин КНасколько я понял - в основном неправильный инжиниринг бизнес процессов и в связи с этим и гемор в ведении учета. Изучайте законодательную базу по ведению учета на предприятии. Мне вот интересно - в бухгалтерии, что будут переписывать все приходные, расходные, договора, спецификации к ним и прочее, если контрагент переименовался? Спросите у Главбуха для начала.... Полностью согласен. Но есть одно маленькое но: если предприятие вполне успешно работает не по нормативным документам, а по понятиям (гадкое слово, но по другому не назовешь). И если ты говоришь, что по нормативам - вот так, а тебе отвечают, что народ обо всем договорился и давай все делай совсем по другому. В моем случае исключения составляют 30-40% от общего числа операций. Поэтому в некоторых случаях это не неправильная постановка тех.процесса, а единственно возможный вариант решения задачи. З.Ы. Хотя вчера на мозговом штурме мы пришли к мысли отказаться от хронологических баз данных и подменить их стандартной реляционной базой с чем-то вроде самовосстанавливающихся логов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 10:19 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
А посто заводить новую учетную запись для этой фирмы, а старую помечать, типа "умерла", "переименовалась", можно даже связку с новой организовать. По умолчнию работаем с новой учетной записью, а когда надо - достаем старую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 10:32 |
|
||
|
Значения полей в зависимости от даты.
|
|||
|---|---|---|---|
|
#18+
Slider_spbПо умолчнию работаем с новой учетной записью, а когда надо - достаем старую... Вот-вот. Это и будем реализовывать. Только у меня так: помека на удаление - это одно, а исправления фиксятся в специалном логе и оттуда в случае необходимости ресторятся. А для скоростных запросов ко всей истории можно будет сделать специальную таблицу только для просмотра. Ну это пока в черновике... додумать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2005, 10:39 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1545499]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 517ms |

| 0 / 0 |
