Нумерация документов

makaset

Well-known member
14.03.2007
128
0
#1
Привет Всем. как можно организовать нумерацию документов. мне надо при регистрации документа пронумеровать ее. типа счетчика.
 
R

Ronchik

#2
Для: makaset
самое хорошее что видел и делал это отдельную базу для регистрации различных документов
 
G

Guest

#4
Можно счетчик разместить на форме и через профайл туда загонять значения, если не охота создавать новую базу... Но лучше послушаться предыдущих 2-х советов
 
Y

Yakov

#5
Для: makaset
Делаю так.
Создаю документ-счетчик (ни в коем случае не профильный документ!) с полем, хранящим последний использованный номер.
Для присвоения номера документу нахожу счетчик, блокирую его, инкрементирую поле с номером, сохраняю счетчик, разблокирываю его, записываю в целевой документ полученный из счетчика номер.
 

morpheus

скриптописец
07.08.2006
3 915
1
#6
<!--QuoteBegin-Ерюков Алексей+18:09:2007, 09:31 -->
<span class="vbquote">(Ерюков Алексей @ 18:09:2007, 09:31 )</span><!--QuoteEBegin-->Можно счетчик разместить на форме и через профайл туда загонять значения
[snapback]78563" rel="nofollow" target="_blank[/snapback]​
[/quote]
угу... именнно так не надо делать
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
<!--QuoteBegin-Yakov+18:09:2007, 10:36 -->
<span class="vbquote">(Yakov @ 18:09:2007, 10:36 )</span><!--QuoteEBegin-->Создаю документ-счетчик (ни в коем случае не профильный документ!) с полем, хранящим последний использованный номер.
Для присвоения номера документу нахожу счетчик, блокирую его, инкрементирую поле с номером, сохраняю счетчик, разблокирываю его, записываю в целевой документ полученный из счетчика номер.
[snapback]78566" rel="nofollow" target="_blank[/snapback]​
[/quote]
Аналогично.
Хотя лучше никак не делать. :)
 
A

allex

#8
Где гарантия что не потребуется создать документ противоречющий нумерации...
И тут начнется "веселье новогоднее" :)
 

makaset

Well-known member
14.03.2007
128
0
#9
может сделать так включить еще одну форму "Nomer". с полем номер. при сохранени документа он обращаетсяв форму "Nomer". делает поле номер+1.
но мне при сохранени документа как мне добраться до формы номер. елси можно пример кода. за ранее благодарен.
 
A

Azrael

#10
Код:
stView := "(ordernumeration-global)";
listN := @DbLookup("":"NoCache";"":"";stView;@Text(@Year(@Now));2;[FailSilent]);
N := @Elements(listN)+1;
Appendix := @Text(@Now;"S1");
Appendix := @Middle(Appendix;0;2) + @Middle(Appendix;3;2);
@SetField("номер";@Text(@Repeat("0";4-@Length(@Text(N)))) + @Text(N) + "-"+Appendix)
Примерно так: нумерация внутри года + число, полученное из текущего времени, но лучше никак :)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#11
Для: Azrael
Загнётся на больших объемах. ;)
Плюс на разных репликах получим одинаковые номера.
 
A

Azrael

#12
Для: Medevic
Зависит от задачи + оптимизация, в моем случае в колонке в виде - число, колонка сортируется по убыванию, далее, вместо N := @Elements(listN)+1; - берем первый элемент из вида, итого получаем безпроблемную работу для документа в виде до ~16к документов, да и далее т.к. берем 1-ое значение, работать нормально должно. Потом: какова вероятность того, что 2 юзера создадут 2 документа одновременно с точностью до секунды? Ну будут документы с номерами 0057-1306 и 0057-1402, номера то уникальные все равно, тут, конечено, не идет речь о мега-корпорациях, когда базой пользуются тысячи человек.
 

morpheus

скриптописец
07.08.2006
3 915
1
#13
<!--QuoteBegin-Azrael+18:09:2007, 11:07 -->
<span class="vbquote">(Azrael @ 18:09:2007, 11:07 )</span><!--QuoteEBegin-->Потом: какова вероятность того, что 2 юзера создадут 2 документа одновременно с точностью до секунды?
[snapback]78582" rel="nofollow" target="_blank[/snapback]​
[/quote]
Очень велика, если регистрацией занимаеться отдельный секритариат , с всего лишь 4мя операторами. поверте опыту

<!--QuoteBegin-Azrael+18:09:2007, 11:07 -->
<span class="vbquote">(Azrael @ 18:09:2007, 11:07 )</span><!--QuoteEBegin-->номера то уникальные все равно, тут, конечено, не идет речь о мега-корпорациях, когда базой пользуются тысячи человек.
[snapback]78582" rel="nofollow" target="_blank[/snapback]​
[/quote]
кто сказал?
 
R

Ronchik

#14
<!--QuoteBegin-makaset+18:09:2007, 10:00 -->
<span class="vbquote">(makaset @ 18:09:2007, 10:00 )</span><!--QuoteEBegin-->может сделать так включить еще одну форму "Nomer". с полем номер. при сохранени документа он обращаетсяв форму "Nomer". делает поле номер+1.
но мне при сохранени документа как мне добраться до формы номер. елси можно пример кода. за ранее благодарен.
[snapback]78575" rel="nofollow" target="_blank[/snapback]​
[/quote]
такого делать нельзя т.к. регистрацией может заниматься несколько юзеров.....не будет обновляться форма Nomer на клиенте
 
A

Azrael

#15
<!--QuoteBegin-Morpheus+18:09:2007, 13:10 -->
<span class="vbquote">(Morpheus @ 18:09:2007, 13:10 )</span><!--QuoteEBegin-->Очень велика, если регистрацией занимаеться отдельный секритариат , с всего лишь 4мя операторами. поверте опыту
[snapback]78583" rel="nofollow" target="_blank[/snapback]​
[/quote]
прямо секунда в секунду? ужас. Тогда можно в номер еще буквы добавить из инициалов пользователя (учесть случай с одинаковыми), либо присвоить пользователям код.
 
R

Ronchik

#16
<!--QuoteBegin-Azrael+18:09:2007, 11:38 -->
<span class="vbquote">(Azrael @ 18:09:2007, 11:38 )</span><!--QuoteEBegin-->прямо секунда в секунду? ужас. Тогда можно в номер еще буквы добавить из инициалов пользователя (учесть случай с одинаковыми), либо присвоить пользователям код.
[snapback]78592" rel="nofollow" target="_blank[/snapback]​
[/quote]
такое не прокатывало ...пробовал
 
A

Azrael

#17
<!--QuoteBegin-Ronchik+18:09:2007, 13:45 -->
<span class="vbquote">(Ronchik @ 18:09:2007, 13:45 )</span><!--QuoteEBegin-->такое не прокатывало ...пробовал
[snapback]78597" rel="nofollow" target="_blank[/snapback]​
[/quote]
почему, если не секрет? или просто формат номера типа 0057(просто числа, по возрастающей, могут повторяться в разных репликах) - 001 (код сотрудника) - 1358(текущее время), или 0057-АлС-1359, где АлИ - условные инициалы в случае повторения (у др. пользователя, например, АнИ)
 
R

Ronchik

#18
<!--QuoteBegin-Ronchik+18:09:2007, 11:45 -->
<span class="vbquote">(Ronchik @ 18:09:2007, 11:45 )</span><!--QuoteEBegin-->почему, если не секрет?
[snapback]78597" rel="nofollow" target="_blank[/snapback]​
[/quote]
1 регистрацией занималось одновременно несколько юзеров
2 Номер должен был быть единый и не зависить от каких либо других факторов
3. Регистрация проходила автоматически при создании нового документа

При всем при этом пробовал различные схемы проставления номера.....и реально более менее нормално работают только 2 варианта
1 В скрипте создать док сномером потом открывать на редактирование
2 Использовать отдельную БД для регистрации где различные добавления типа <!--QuoteBegin-Azrael+18:09:2007, 11:54 -->
<span class="vbquote">(Azrael @ 18:09:2007, 11:54 )</span><!--QuoteEBegin-->001 (код сотрудника)
[snapback]78603" rel="nofollow" target="_blank[/snapback]​
[/quote]
можно настраивать
 

makaset

Well-known member
14.03.2007
128
0
#20
не не подохдить. в моем случае. Ргистрацию будет делать один человек. и еще база не секм не реплицируется. поэтому я хотчу сделать номер = номер+1.
но никак не могу добравться до фромы номер. обьясните пожалуиста. как добравтся до поле из другого формы.