![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Генерация уникального номера [D6, IB6.x]
Belkova © (2003-05-29 21:47:00)Мастера Delphi! Подскажите как будет работать, если генерацию уникальных номеров (например в счетах-фактурах) выполнять как Select Max() From Table +1 и на момент выполнения транзакции блокировать необходимые таблицы от каких-либо изменений и в случаи отката -1. Если очень плохо, то как это можно сделать? Генератор не подходит, т.к. в случае Rollback он не уменьшает №, а в счетах-фактурах пробелы не допускаются.
Ann (2003-05-30 08:49:00) [1]ну да.. если без пропусков тогда генератор не подходит...
Zacho (2003-05-30 08:44:00) [2]
> Ann © (30.05.03 08:36)
Да и я бы посоветовал генератор, или вообще ввод номеров вручную оператором.
Но если нужна нумерация без пропусков - то единственный выход все-таки - SELECT MAX с блокировкой на время формирования нового документа.
Ann (2003-05-30 08:36:00) [3]я бы тоже посоветовала генератор..
Danilka (2003-05-30 07:27:00) [4]Вообще-то в данном случае я бы посоветовал все-таки воспользоваться генератором, т.к. нумерация в счетах-фактурах допускает пробелы. :))
На самом деле, сколько знаю предприятий, не видел еще ни одного без пробелов. У нас так вообще номер составной. На всякий случай пересмотрел "Консультант+", единственные требования к нумерации обнаружил вот-здесь:
МИНИСТЕРСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО НАЛОГАМ И СБОРАМ
ПИСЬМО от 21 мая 2001 г. N ВГ-6-03/404
О ПРИМЕНЕНИИ СЧЕТОВ - ФАКТУР ПРИ РАСЧЕТАХ ПО НАЛОГУ НА ДОБАВЛЕННУЮ СТОИМОСТЬ
...нумерация счетов - фактур производится в порядке возрастания номеров в целом по организации. Возможно как резервирование номеров по мере их выборки, так и присвоение составных номеров с индексом обособленного подразделения;...
И то, это всего лишь письмо.
Zacho (2003-05-30 06:38:00) [5]
> kaif © (30.05.03 02:50)
Так там же не генератор, а SELECT MAX с блокировкой таблиц, так что прекрасно откатится
kaif (2003-05-30 02:50:00) [6]2 Zacho © (29.05.03 21:55)
Если генератор щелкнул, то он не откатится.
Belkova (2003-05-29 22:48:00) [7]Спасибо!
Zacho (2003-05-29 21:55:00) [8]
> Belkova (29.05.03 21:47)
> Мастера Delphi! Подскажите как будет работать, если генерацию
> уникальных номеров (например в счетах-фактурах) выполнять
> как Select Max() From Table +1 и на момент выполнения транзакции
> блокировать необходимые таблицы от каких-либо изменений
> и в случаи отката -1.
Блокировать не только от изменений, но и на чтение. -1 - не надо, вставка же откатится. Транзакции нужно сделать как можно более короткими. При таких условиях - будет вполне нормально.
Плюс к этому - запретить удалять документы и редактировать номера.
А еще по этой теме можно почитать http://www.ibase.ru/devinfo/pslock.htmи http://www.ibase.ru/devinfo/ibtrans.htm