powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нумерация документов
4 сообщений из 4, страница 1 из 1
Нумерация документов
    #32170294
Фотография Andrew Campball
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделитесь пожалуйста опытом как огранизовать автоматическую нумерацию документов.

Например: Расходные накадные каждый год начинаются с 1 и когда пользователь заводит документ, то по дате предлагать следющий номер.
Но пользователь может и поменять дату, значит необходимо поменять и номер.

Кто как выходит из такой ситуации ?
...
Рейтинг: 0 / 0
Нумерация документов
    #32170388
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаешь таблицу вида:
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-а, чтобы не держать остальных пользователей, вводящих документы такого же типа за этот же год.

При изменнии даты, надеюсь, сам домыслишь
...
Рейтинг: 0 / 0
Нумерация документов
    #32170425
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но пользователь может и поменять дату, значит необходимо поменять и номер.
Что-то я не совсем понял, как тебе надо сделать.
Предположим, за 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) ?

Или же необходимо отслеживать только изменения года?
...
Рейтинг: 0 / 0
Нумерация документов
    #32170507
Фотография Andrew Campball
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктор

Или же необходимо отслеживать только изменения года?

Да.

2 va_kochnev
Спасибо.
Получается так, что номер определяется в самый последний момент.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нумерация документов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]