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

Тема в разделе "Lotus - Программирование", создана пользователем FRun, 29 фев 2008.

  1. FRun

    FRun Гость

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Обязательное - я обычно юзаю скриптовую проверку на QuerySave event.
    Можно юзать validation у поля, но мне не вставляет.

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

    FRun Гость

    когда сохраняю док выдает ошибку
    'Object variable not set'
    где не так?
    Код (Text):
    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
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Кто такой uidoc? Наверное, это Source. :unsure:
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    FRun
    ErrorHandler кто ставить будет?
    А код, извините, гогно.

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

    Код (Text):
    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
     
  6. FRun

    FRun Гость

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

    еще вопрос не по сабжу:
    короче создаю по лотусскрипту ответный документ
    вот код
    Код (Text):
    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
    как обойти?
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Дебаггером?
     
  8. FRun

    FRun Гость

    вот именно что дебаггер не срабатывая выдается ошибка
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    FRun
    Doc.Responses может иногда вернуть не коллекцию с нулевым или больше количеством, а именно Nothing.
    Сделай проверку.

    И вставь хандлер.
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Бывает, конечно. Тогда On Error. Всегда срабатывает.
     
  11. FRun

    FRun Гость

    спасибо за советы!
    когда вставлю on error ошибка будет обработана и код выполниться? (как я понял)
     
  12. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Как сделаешь, так и будет работать. Тебе надо ошибку и номер строки узнать.
     
  13. FRun

    FRun Гость

    сделал вот так
    Код (Text):
    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
    ...
    вроде нормально работает
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Как Coll получаешь?
    Doc.Responses?
     
  15. FRun

    FRun Гость

    подскажите как поставить условие что коллекция Nothing?

    да, см. выше
     
  16. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (Text):
    Dim Dc As NotesDocumentCollection
    Set Dc = Doc.Responses
    If Not Dc is Nothing then
    if Dc.Count > 0 then
    'обработка
    End if
    End if
     
  17. FRun

    FRun Гость

    вот спасибо!
     
Загрузка...
Похожие Темы - Работа полями (обязательные
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    34
  2. Hoasker
    Ответов:
    0
    Просмотров:
    65
  3. garri671
    Ответов:
    0
    Просмотров:
    75
  4. lelik200969
    Ответов:
    0
    Просмотров:
    55
  5. Kozolick
    Ответов:
    0
    Просмотров:
    147

Поделиться этой страницей