• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

агент работает правильно только в Debug

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

PavelT100

LN 7. Написал вот такой агент.

[codebox]Sub Initialize
Dim db As NotesDatabase
Set s = New NotesSession
Set db = s.CurrentDatabase
Dim doc_af As NotesDocument
Set doc_af = db.GetDocumentByUNID("E9BBC4BE56A8C2EEC32574180047F76B") 'для эксперимента выбираем документ по фикированному UNID

Dim db_ver As New NotesDatabase("","")
If( Not(db_ver.Open(db.Server, "EvVers.nsf") )) Then
Exit Sub
End If

Dim doc As NotesDocument
Set doc= db_ver.CreateDocument
doc.Form = "REC"

Dim rt As NotesRichTextItem
If doc.HasItem("rt") Then
Set rt = doc.GetFirstItem( "rt" )
Else
Set rt = New NotesRichTextItem( doc, "rt" )
End If
If Not rt Is Nothing Then
If rt.Type = RICHTEXT Then
Call rt.AppendDocLink(doc_af, "")
End If
Else
Msgbox "Error!"
End If
Dim ws As New NotesUIWorkspace
Set uidoc = ws.EditDocument(True, doc)
End Sub[/codebox]

Ожидаю, что при открытии вновь созданного документа в поле rt будет ссылка.
Если выполнить агент в debug режиме по шагам последовательно нажимая F8, то так и будет, выполнится Set rt = New NotesRichTextItem( doc, "rt" ) и добавится ссылка которая правильно будет отображена в форме.
Но если F8 не нажимать, то ссылки не будет, Msgbox "Error!" тоже не сработает.
Почему так ?
 
M

morpheus

PavelT100
а агент случаем не шедулерный?
 
P

PavelT100

PavelT100
а агент случаем не шедулерный?
Агент не шедулерный, я его пока запускаю строго из дизайнера - в списке агентов выделяю, нажимаю правую кнопку мыши и выбираю Run.
Предпологаю после отладки запускать его по пункту меня, но это, думаю, не имеет значения сейчас.


Вдогонку еще один не понятный вопрос:
после
[codebox]Set uidoc = ws.EditDocument(True, doc)[/codebox]
начинает открываться форма для документа, в форме обрабатывается событие
[codebox]Sub Postopen(Source As Notesuidocument)[/codebox]
в этом событии проверяется Source.Isnewdoc,
и что не понятно - Source.Isnewdoc равен False, хотя я же документ еще не сохранял, и по моим представлениям он должен быть новым.
 
S

Sandr

Source.Isnewdoc равень тру тока при композе...

кучок
Код:
If doc.HasItem("rt") Then
Set rt = doc.GetFirstItem( "rt" )	
Else
Set rt = New NotesRichTextItem( doc, "rt" )	
End If

смело переделывайте на
Код:
Set rt = New NotesRichTextItem( doc, "rt" )
Так как док у Вас новый...

А в остельном - прикольный глюк. Порпробуйте сохранить документ перед открытием...
 
P

PavelT100

Source.Isnewdoc равень тру тока при композе...
- спасибо большое

смело переделывайте на ...
, да я понимаю, это когда уже творческий поиск перешел в порывы отчаяния, я стал так "экспериментировать".

Порпробуйте сохранить документ перед открытием...
- а вот этого как раз делать не хочется, дело в том, что задумка была - заполнить форму, открыть ее на редактирование пользователю и пользователь сам должен дальше решать, что делать, сохранять новый документ или нет - вполне возможно, что пользователь откажется от дальнейшего редактирования и сохранения документа. А если на этом этапе документ уже существует, то прийдется как -то исукусственно его удалять, что лишнее.

А вот rt.Update() очень даже заработало, спасибо Yakov, считаю, что вопрос исчерпан.
 
Мы в соцсетях:

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