|
|
|
Как организовать учет документов по дате
|
|||
|---|---|---|---|
|
#18+
Посоветуйте как организовать учет документов по дате, когда дата это не только время проведения документа, а поле которое определяет последовательность всех расчетов в программе. Расчеты проводятся по последовательности этих дат и соответственно дата, или (дата + дополнительное поле) должны быть уникальны проводки могут не приходить долго, но потом за одну секунду может прийти до 500 одновременною Как все это организовать (не на практике, а теоретически), А, именно, допустим в базе имеем уже существующие проводки: .... 1. 2014-02-24 14:01:01 2. 2014-02-24 14:01:02 3. 2014-02-24 14:01:03 4. 2014-02-24 14:05:01 .... х. 2014-02-24 15:10:21 х. 2014-02-24 15:10:22 1. Что делать если следующие 10 проводок пришли одновременно в 2014-02-24 14:10:22 (совпадает с последней записью) 2. Что делать если при редактировании даты (а, такая возможность у оператора имеется) выбрали дату 2014-02-24 14:01:02 (которая совпадает с записью №2, а перед и после дата занято.). Дата обязательно должно сохранятся как календарная дата, плюс где-то нужно обязательно сохранить последовательность внутри совпадающих дат. Соответственно нужно дополнительное поле, которое определит иерархию в группе совпадающих дат, но как организовать это дополнительное поле? Перенумерация этого поля, при каждой проводке, просто исключается, смысл постановки вопроса как раз исходит из этого условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 14:57 |
|
||
|
Как организовать учет документов по дате
|
|||
|---|---|---|---|
|
#18+
AvtopicДата обязательно должно сохранятся как календарная дата, плюс где-то нужно обязательно сохранить последовательность внутри совпадающих дат. Соответственно нужно дополнительное поле, которое определит иерархию в группе совпадающих дат, но как организовать это дополнительное поле?Дополнительное поле - вполне себе нормальное решение. Ну а как организовать - это уже Вы сами... это будет ручная эмуляция счётчика на уровне группы записей. Вероятно, придётся решать триггером... хотя для этой обработки (особенно при многопоточной записи) ради упрощения соблюдения уникальности и исключения накладок я бы вынес эту нумерацию в отдельную таблицу и при выполнении операций на ней блокировал бы её полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 15:07 |
|
||
|
Как организовать учет документов по дате
|
|||
|---|---|---|---|
|
#18+
Спасибо, за ответ! Да, триггером и, в отдельной таблице, хотя бы для того чтобы триггер не ругался при обновлении в самом же триггере той же таблицы, но, это все ровно подразумевает пересчет и обновление всех записей в группе одной даты, при каждой проводке. может кто знает механизм (хеширование, рандом, заранее резервирование диапазона для предполагаемых вставок между записями, исходя из разумного возможного количества, и т.д.). допустим, может кто знает как это организована в 1С, как я знаю там тоже для программы дата основное понятые в расчетах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 15:42 |
|
||
|
Как организовать учет документов по дате
|
|||
|---|---|---|---|
|
#18+
AkinaAvtopicДата обязательно должно сохранятся как календарная дата, плюс где-то нужно обязательно сохранить последовательность внутри совпадающих дат. Соответственно нужно дополнительное поле, которое определит иерархию в группе совпадающих дат, но как организовать это дополнительное поле?Дополнительное поле - вполне себе нормальное решение. Ну а как организовать - это уже Вы сами... это будет ручная эмуляция счётчика на уровне группы записей. Не надо ничего эмулировать - это явный оверинжиниринг. Если в этом "дополнительном" поле (на самом деле, это м.б. "внутренним" уникальным идентификатором документа) значения нарастают монотонно, то сортировка будет одинаковой что при использовании "счетчика на уровне группы записей", что на уровне "глобального счетчика" по таблице. И задаемся вопросом: "если результат одинаков, зачем платить больше?!" (с) реклама AkinaВероятно, придётся решать триггером... хотя для этой обработки (особенно при многопоточной записи) ради упрощения соблюдения уникальности и исключения накладок я бы вынес эту нумерацию в отдельную таблицу и при выполнении операций на ней блокировал бы её полностью.Вполне упрощает проектирование подход, когда сохранение документа, регистрация документа (в журнале) и проведение документа - разные процессы... Еще лучше, когда они разделены по времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 16:40 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1341449]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 514ms |

| 0 / 0 |
