Работа с полями (обязательные, авторы)

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

FRun

#1
Доброго времени суток!
У меня 2 вопроса
1) Как сделать обязательное поле? Есть ли какая нибудь функция которая это делает? Или делать этом кодом? То каким?
Пробовал делать так
тип поле текст, редактируюмое
Код:
@If(appar=""; @Failure("Выбирите подразделение"); 
@Length(appar)>254; 
@Failure("Количество символов в поле не должно превышать числа 254"); @Success)
но что то не выходит!

2) Создал поле в форме, где отражается имя пользователя создавщий документ
в свойствах тип поставил авторы и вычислять при созданий
а в значений написал
Код:
@V3UserName
пробовал и пустое значение
но он или остается пустым или изменяется когда открываешь документ.
Как быть?
Подскажите люди! Заранее спасибо!
 

Omh

Lotus team
04.07.2007
2 210
1
#2
Обязательное - я обычно юзаю скриптовую проверку на QuerySave event.
Можно юзать validation у поля, но мне не вставляет.

По второму вопросу: @UserName вроде...
 
F

FRun

#3
когда сохраняю док выдает ошибку
'Object variable not set'
где не так?
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument 
Dim fdocnum As String
Set db = session.CurrentDatabase
Set doc = ws.CurrentDocument.Document 
fdocnum = uidoc.GetFieldText( "num_gos" ))
If fdocnum = "" Then 
Messagebox "Заполните поле"
Exit Sub
End If
End Sub
 

Omh

Lotus team
04.07.2007
2 210
1
#5
FRun
ErrorHandler кто ставить будет?
А код, извините, гогно.

Попробуй так (хандлер в примере специально олдскульный)

Код:
On Error Goto Errh

Dim Doc as NotesDocument
Set Doc = Source.Document
if Doc is Nothing then Exit Sub

if Doc.GetItemValue("num_gos")(0) = "" then
Messagebox "Scuko!", 0 + 64, "Information"
Continue = False
Exit Sub
end if

Exit Sub
errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
Exit Sub
 
F

FRun

#6
Omh, спасибо отлично работает!

еще вопрос не по сабжу:
короче создаю по лотусскрипту ответный документ
вот код
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument 
Dim col As NotesDocumentCollection 
Dim res As NotesDocument 
Dim found_doc As NotesDocument 
Dim uidoc As NotesUIDocument 
Dim undoc As NotesItem  
Dim unres As NotesItem 
Dim fmain As String 
Dim item As NotesItem

Set uidoc = ws.CurrentDocument 
Set doc = ws.CurrentDocument.Document
Set db = session.CurrentDatabase
Set col = doc.Responses 
Set undoc = doc.GetFirstItem ("main_id")
If col.Count > 0 Then 
Set res = col.GetFirstDocument 
Do While Not res Is Nothing 
Set unres=	res.GetFirstItem ("par_id")
If undoc.Text = unres.Text Then 
Set found_doc = res 
Call ws.EditDocument (False, found_doc,,,,False)

Exit Sub 
Else
Set res = col.GetNextDocument(res) 
End If
Loop
Else	
If found_doc Is Nothing Then 
Set found_doc = New NotesDocument(db) 
End If
fmain = uidoc.FieldGetText( "main_id" )
fdocnum = uidoc.FieldGetText( "DocNum" )
fdocdate = uidoc.FieldGetText( "DocDate" )
fsubj = uidoc.FieldGetText( "Subject" )
fcat = uidoc.FieldGetText( "Categories" )
fappar = uidoc.FieldGetText( "appar" )
found_doc.Form = "response"
Call 	found_doc.MakeResponse(doc)
Set item = found_doc.ReplaceItemValue( "par_id", fmain)
Call ws.EditDocument(True,found_doc) 
End If
End Sub
когда запускаю ругает
'обджект вариабл нот сет'
самое интересное иногда работает а иногда нет
в чем причина?
помоему не работает Set col = doc.Responses
как обойти?
 

Omh

Lotus team
04.07.2007
2 210
1
#9
FRun
Doc.Responses может иногда вернуть не коллекцию с нулевым или больше количеством, а именно Nothing.
Сделай проверку.

И вставь хандлер.
 
F
#11
спасибо за советы!
когда вставлю on error ошибка будет обработана и код выполниться? (как я понял)
 
F
#13
сделал вот так
Код:
On Error Resume Next
...
If col.Count > 0 Then ' ругается здесь
If Err = ErrDivisionByZero Then
Goto lir
End If
...
Else	
lir:
If found_doc Is Nothing Then 
Set found_doc = New NotesDocument(db) 
End If
...
вроде нормально работает
 
F
#15

Omh

Lotus team
04.07.2007
2 210
1
#16
Код:
Dim Dc As NotesDocumentCollection
Set Dc = Doc.Responses
If Not Dc is Nothing then
if Dc.Count > 0 then
'обработка
End if
End if