Querydocumentdelete

yerke

Well-known member
28.08.2007
392
0
#1
Здравствуете, знатоки лотуса!
Обрабатываю событие QueryDocumentDelete.
Возник следующий вопрос: можно ли программно узнать , имеет ли юзер права на удаление документов, до того как об этом дать знать сама система(ну выдаст сообщение, если у юзера нету таких прав).
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
CanDeleteDocuments property

это свойство сидит у NotesACLEntry

This script creates an entry for Eben Klemm in the current database and gives him Author access. It gives him the right to create documents in the database and denies him the right to delete documents.
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = New NotesACLEntry _
( acl, "Eben Klemm/East/ACME", ACLLEVEL_AUTHOR )
entry.CanCreateDocuments = True
entry.CanDeleteDocuments = False
Call acl.Save
 

Omh

Lotus team
04.07.2007
2 210
1
#3
Для yerke:
Как альтернатива QueryAccessPrivileges у NotesDatabase.

Для: Morpheus
КМК, если юзер будет в группе, через NotesACL будет сложновато понять, что у него за права.
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
<!--QuoteBegin-Omh+11:10:2007, 15:48 -->
<span class="vbquote">(Omh @ 11:10:2007, 15:48 )</span><!--QuoteEBegin-->Как альтернатива QueryAccessPrivileges у NotesDatabase.
[snapback]81441" rel="nofollow" target="_blank[/snapback]​
[/quote]
Да , скорее это будет даже лучше
 

yerke

Well-known member
28.08.2007
392
0
#5
работаю на лотусе 5,0,8
там еще не появился метод QueryAccessPrivileges :)
так что наверное буду использовать notesaclentry
тем более у меня в акл нету юзеров которые сидят в группе

придется еще раз спросить
:D
1)как работает событие Querydocumentdelete точнее параметр Continue
если поставить Continue=false, то он запрещает удалят все документы, полученные с помощью UnprocessedDocuments?

или запрещает удалят определенный обрабатываемый циклом документ
например если так
Код:
		Dim curdb As notesdatabase
Set curdb=source.database
Dim udc As notesdocumentcollection
Set udc=CurDB.UnprocessedDocuments	
If udc.count=0 Then Exit Sub
Dim tdoc As notesdocument
Dim nxtdoc As notesdocument

Set tdoc=udc.getfirstdocument
Dim i As Integer
For i=1 To udc.count
Set nxtdoc=udc.getnextdocument(tdoc)
If i=3 Then 
Continue=True
Else
Continue=False
End If		
Set tdoc=nxtdoc
Next
то удаляется тока 3-ий по порядку документ или как?

2) допустим при удалении документа должен удалятся вместе связанные с этим доком(ну у них определенное поле содержит одинаковое значение) другие доки
отбираю эти доки с помощью search и вызываю Call notesDocumentCollection.RemoveAll(true)
объясните при вызове Call notesDocumentCollection.RemoveAll(true) что происходит?
опять поднимается событие Querydocumentdelete?
ведь Call notesDocumentCollection.RemoveAll(true) находится внутри Querydocumentdelete.

3) поднимается ли событие Querydocumentdelete при удалении дока программно?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
1. Само событие не удаляет документ. Документы удаляются после обработки события. Поэтому Continue = False запретит удалить все документы.
2. Нет. События возникают только при работе пользователя в UI.
3. Если notesDocument.Remove, то нет. Если notesUIDocument.DeleteDocument, то да.
 

yerke

Well-known member
28.08.2007
392
0
#7
Для: Medevic
Для: Morpheus
Для: Omh
спасибо за подробные ответы ребята
:)

<!--QuoteBegin-Medevic+12:10:2007, 07:32 -->
<span class="vbquote">(Medevic @ 12:10:2007, 07:32 )</span><!--QuoteEBegin-->3. Если notesDocument.Remove, то нет. Если notesUIDocument.DeleteDocument, то да.
[snapback]81499" rel="nofollow" target="_blank[/snapback]​
[/quote]

но как тогда перехватить программное удаление доков
:D
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
<!--QuoteBegin-yerke+12:10:2007, 09:40 -->
<span class="vbquote">(yerke @ 12:10:2007, 09:40 )</span><!--QuoteEBegin-->но как тогда перехватить программное удаление доков
[snapback]81500" rel="nofollow" target="_blank[/snapback]​
[/quote]
Запретить всем удаление и удалять агентом.
 
G

Guest

#10
Dim curdb As notesdatabase
Set curdb=source.database
Dim udc As notesdocumentcollection
Set udc=CurDB.UnprocessedDocuments
If udc.count=0 Then Exit Sub
Dim tdoc As notesdocument
Dim nxtdoc As notesdocument

Set tdoc=udc.getfirstdocument
Dim i As Integer
For i=1 To udc.count
Set nxtdoc=udc.getnextdocument(tdoc)
If i=3 Then
Continue=True
Else
Continue=False
End If
Set tdoc=nxtdoc
Next
Не Continue=True или Continue=False нужно ставить,а notesDocument.Remove...и не по коллекции бегать, а по юнидам и по условию... :D :D :D