Уникальный номер документа

  • Автор темы DNT
  • Дата начала
А

Адриан

Здравствуйте не давно начал програмировать в Lotus
Нужно внедрить этот код в мою БД,
Создал поле Code, view wEnter c колонкой TopLevelEntryCount
Распишите пожалуйста как это сделать? и что означают все строки.

Код:
Sub Postopen(Source As Notesuidocument)
Dim session As New NotesSession
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView( "wEnter" )
Set doc = source.document
If doc.Code(0)=0 Then
If view.TopLevelEntryCount=0 Then
doc.rgCode=1 ' первому присваиваем 1
End If
If view.TopLevelEntryCount>0 Then
Set doc2 = view.GetLastDocument
doc.rgCode2=doc2.rgCode2(0)+1 'берем номер последнего и
'увеличиваем на 1
End If
End If
End Sub
 
A

alexas

Я так понимаю это продолжение топика "Прогрессивный номер в форме..."
Такая логика не даст гарантии уникальности номера при одновременном выписывании фактур несколькими бухами.
Делайте через общий профайл или отдельный специальный документ - запоминайте в нем вычисленный номер и флажок, который взводится ДО вычисления номера (с проверкой, что он сброшен) и сбрасывается сразу ПОСЛЕ и говорит о том, что какой-то бух печатает фактуру. А другой желающий в это время ждет сброса флажка. Как только дождется - повторяет процедуру первого.
Или применяйте Lock - unLock для дока, где храните номер.
Это если логика - в кнопке печати.
Цикл ожидания короткий - второй бух даже не заметит.

Здесь есть нюанс - "зависание" взведенного флажка (или лока) при трабле во время печати фактуры (крах клиента, откл.питания ...)
Решение - по таймауту (напр. секунда, ведь чтение-вычисление номера-сохранение профайла с новым номером - быстрая операция) - принудительный сброс флажка.

Брать инфу в View для этих целей плохо, особенно учитывая время на перестроение индекса. Взять профайл или док по UNID гораздо быстрее.
Это не идеальное решение но оно очень просто в реализации.
И читайте хелп по дизайнеру - найдете много полезных примеров, а то очень крутой RTFM получается.
Вам сейчас нужно NotesDocument, GetProfileDocument, NotesUIDocument - пользуйтесь поиском вверху-слева дизайнера. Обратите внимание, что поиск вывалит Вам инфу не только по LS но и по Java.

Успехов!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!