• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Как прикрепить документ

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

SkyRanger

Делаю систему регистрации изменений в БД, т.е. каждое действие юзверя записывается в лог-форму с calculated полями. Вроде все работает, но хочу так же перед сохранением прикреплять документ к лог-форме, и таким образом всегда можно определить каким документ был ДО сохранения :)

Как прикрепить открытый в данный момент документ к другому???
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: SkyRanger
notesDocument.RenderToRTItem ?
Также посмотри пункт Versions в настройке формы. И метод notesUIDocument.SaveNewVersion.
 
S

SkyRanger

Вот код который я вызываю при нажатии на кнопку "Удалить", чтобы зарегить удаление текущего документа

Код:
	Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim uidoc1 As NotesUIDocument
Dim doc As NotesDocument
Dim doc1 As NotesDocument
Dim session As New NotesSession
Dim user As String
Dim rtitem As NotesRichTextItem	

Set uidoc1 = workspace.CurrentDocument	
Set doc1 = uidoc1.document

Set uidoc = workspace.ComposeDocument( "", "", "(LogCard)" )

Call uidoc.FieldSetText("dt", Format(Now(), "General Date"))

user = session.UserName

Call uidoc.FieldSetText("user", user)

Call uidoc.FieldSetText("action", ActionName)

Call uidoc.GotoField("action")

Set doc1 = uidoc.Document

Set rtitem = New NotesRichTextItem( doc, "lastver" )
success = doc.RenderToRTItem( rtitem )

Call uidoc.Save
Call uidoc.Close(True)

Почему то я получаю в результате пустой документ, не заполенный никакими данными...

Если закоментировать success = doc.RenderToRTItem( rtitem ) то все работает, но мне нужно поместить снимок удаляемой формы в лог-форму, респозны и версии не подойдут...



Так же есть проблема с удалением текущего документа:

Код:
	Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim doc As NotesDocument
Set doc = uidoc.Document
Dim session As New NotesSession


answer% = Messagebox("Удалить ребенка из Базы данных?", 4, "Продолжить?")
If (Not ( uidoc.EditMode )) And (answer%=6) Then
fio = uidoc.FieldGetText("fam")+" "+uidoc.FieldGetText("nam")+" "+uidoc.FieldGetText("otc")
Set doc = uidoc.document
Call RegisterAction("Удалено из БД: ребенок - "+fio)		
Call doc.Remove( False )

На строке Call doc.Remove( False )
мне грит что я не могу юзать Remove в такой ситуации...

Как удалить этот документ...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: SkyRanger
<!--QuoteBegin-SkyRanger+22:08:2007, 09:01 -->
<span class="vbquote">(SkyRanger @ 22:08:2007, 09:01 )</span><!--QuoteEBegin-->Set rtitem = New NotesRichTextItem( doc, "lastver" )
success = doc.RenderToRTItem( rtitem )
[snapback]75984" rel="nofollow" target="_blank[/snapback]​
[/quote]
По первому коду не понятно что такое doc и зачем ты пытаешься скопировать его в самого себя. Также где ты его сохраняешь?
Подозреваю, что нужно делать так:
Код:
Set rtitem = New NotesRichTextItem(doc, "lastver")
success = doc1.RenderToRTItem(rtitem)
Перед сохранением doc вызови метод rtitem.Update
По поводу удаления. Делай агентом. В нем же и сохраняй копию удаленного документа перед удалением.
 
G

Guest

<!--QuoteBegin-Medevic+22:08:2007, 09:25 -->
<span class="vbquote">(Medevic @ 22:08:2007, 09:25 )</span><!--QuoteEBegin-->Подозреваю, что нужно делать так:
[snapback]75987" rel="nofollow" target="_blank[/snapback]​
[/quote]
очень верное подозрение, rtitem.Update вызывать не обязатьно. Вот кусочек кода который содержимое документов помещает в другой документ:
Код:
		Set db = session.CurrentDatabase
Set dc = db.AllDocuments
Set doc = dc.GetFirstDocument
Set docA = db.CreateDocument
Set rtf = New NotesRichTextItem (docA, "Body")
docA.Form = "NewForm"
While Not (doc Is Nothing) 
Call doc.RenderToRTItem (rtf)
Set doc = dc.GetNextDocument (doc)
Wend
Call docA.Save (True, True)
 
Мы в соцсетях:

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