|
|
|
Нумерация документов
|
|||
|---|---|---|---|
|
#18+
Поделитесь пожалуйста опытом как огранизовать автоматическую нумерацию документов. Например: Расходные накадные каждый год начинаются с 1 и когда пользователь заводит документ, то по дате предлагать следющий номер. Но пользователь может и поменять дату, значит необходимо поменять и номер. Кто как выходит из такой ситуации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2003, 10:00:18 |
|
||
|
Нумерация документов
|
|||
|---|---|---|---|
|
#18+
Создаешь таблицу вида: create table doc_numbers (doc_type ,year ,next_num ); ... primary key (doc_type,year) ... Пишешь функцию create function next_num (p_type ...,p_year) return number is v_next_num number; begin begin select next_num into v_next_num from doc_numbers where doc_type=p_type and year=p_year for update; exception when no_data_found then v_next_num:=1; insert into doc_numbers (doc_type,year,next_num) values (p_type,p_year,v_next_num); end; update doc_numbers set next_num=next_num+1 where doc_type=p_type and year=p_year for update; return v_next_num; end; / Вызывать эту функцию в приложении для получения номера по возможности максимально блтзко от commit-а, чтобы не держать остальных пользователей, вводящих документы такого же типа за этот же год. При изменнии даты, надеюсь, сам домыслишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2003, 11:03:16 |
|
||
|
Нумерация документов
|
|||
|---|---|---|---|
|
#18+
Но пользователь может и поменять дату, значит необходимо поменять и номер. Что-то я не совсем понял, как тебе надо сделать. Предположим, за 10 мая есть накладные с номерами: 100, 101, 102, 103, 104, 105, 106 за 11 мая - 107, 108, 109, 110, 111, 112, 113 за 12 мая - 114, 115, 116 Чел сел за комп создавать накладную 13 мая (следующее число в счетчике накладных - 117), а дату на накладной выставил 10 мая . И какой тебе номер на накладной нужен: 117 или 107(максимальный за 10 мая - 106 +1) ? Или же необходимо отслеживать только изменения года? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2003, 11:25:29 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32170425&tid=1990311]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
197ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 508ms |

| 0 / 0 |
