Milan | v pohlade dokument oznaceny na zmazanie |
| V LS6, ked zatvaram pohlad, tak by som chcel otestovat ci je dokument oznaceny na zmazanie... Premena continue by nadobudla false resp. true pokial by som vedel otestovat tu znacku (mark) na zmazanie, ale neviem :((........ Vie mi niekto priatelia poradit ako na to ????
Este jeden dotaz: ked je dokument(y) oznacene na zmazanie a dam refresh (F9) da sa "potlacit" systemova hlaska : "Chcete odstranit dokument......"
dakujem
milan | VZ | Přes Database Script | 07.04.2014 17:56:44
ID: 3554.1
| Nelze to zachytit přes eventy v pohledu, ale jde to zachytit v eventu "Querydocumentdelete" v Database Scriptu. Hlavní problém spočívá v tom, odkud vzít seznam dokumentů označených ke smazání. Jeden hodně zkušený kolega programátor v LN mi před lety (v R6) tvrdil, že to nijak nejde, ale jedno řešení jsem později v R6 našel - je to kolekce dokumentů přístupná přes Source.Documents. Tak snad by to mohlo fungovat i nyní po těch letech. Ukázka reálného kódu z té doby, která by měla namísto smazání jen nastavit parametr použitý pro skrývání v pohledech:
Sub Querydocumentdelete(Source As NotesUIDatabase, Continue As Variant) On Error GoTo Errhndl Dim errcounter As Integer errcounter = 0 Dim ws As New NotesUIWorkspace Dim db As NotesDatabase Dim coll As NotesDocumentCollection, coll2 As NotesDocumentCollection Dim doc As NotesDocument, res As NotesDocument Dim lze As Variant Dim msgtxt As String Dim count As Integer Dim e As Variant Set db = Source.Database Set coll = Source.Documents Stop e = Evaluate( "@Contains( @UserRoles; ""[Administrator]"")") If CStr(e(0))<> "0" Then 'Admin se může rozhodnout msgtxt$ = "Pokud chcete vymazat " & CStr(coll.Count) & " z dokumentů, klikněte na [Yes]." msgtxt$ = msgtxt$ & Chr(13) & "Pokud je chcete jen skrýt (jako běžný uživatel), klikněte na [No]" If MessageBox(msgtxt$, 308, "Upozornění pro [Administrator]" ) = 7 Then e(0) = "0" End If If CStr(e(0))="0" Then continue = False msgtxt$ = "Opravdu chcete odstranit " & CStr(coll.Count) & " z kontaktů?" Print msgtxt$ If MessageBox(msgtxt$, 308, "Varování" ) = 7 Then Exit Sub 'Uživatelé jen skrývají, mazat může jen [Administrator] Set doc = coll.getfirstdocument While Not doc Is Nothing If doc.documenttype(0) = "Contact" Then lze = True Set coll2 = doc.responses Set res = coll2.getfirstdocument Do While Not res Is Nothing If res.DocumentType(0) = "Contact" Then lze = False Exit Do End If Set res = coll2.getnextdocument(res) Loop If lze Then doc.documentType = "!H" & doc.DocumentType(0) doc.NotesFullName = "" If Not doc.save( False, False ) Then msgtxt$ = doc.contactFullName(0) & " " & doc.CompanyFullName(0) & " se nepodařilo odstranit!" Print msgtxt$ MessageBox msgtxt$ Else count = count + 1 End If Else msgtxt$ = doc.contactFullName(0) & " " & doc.CompanyFullName(0) & " nelze odstranit, nejdříve přesuňte nebo vymažte podřízené kontakty!" Print msgtxt$ MessageBox msgtxt$ End If End If Set doc = coll.getnextdocument( doc ) Wend msgtxt$ = CStr(count) & " of contacts removed" Print msgtxt$ Call ws.Viewrefresh() Else 'Administrator msgtxt$ = "Administrator: " & CStr(coll.Count) & " documents to delete." Print msgtxt$ End If If errcounter > 0 Then Evaluate({@MailSend("LocalDomainAdmins";"";""; "Some error's occured"; "Check Notes Log"; "")}) Exit Sub errhndl: Print "QueryDocumentDelete - error #" & CStr(Err)& " on line " & CStr(Erl) & ": " & Error errcounter = errcounter + 1 If errcounter <= 20 Then Resume Next Else Print "QueryDocumentDelete - more than 20 errors occured. Terminating script" Evaluate({@MailSend("LocalDomainAdmins";"";""; "More then 20 error's occured"; "Check Notes Log"; "")}) End If End Sub | Milan | je to OK | 10.04.2014 15:51:19
ID: 3554.2
| velmi pekne dakujem, je to ono...dovolil som si to trochu upravit podla mojich potrieb :).... este raz vdaka
milan | VZ | Pozor na přístupová práva | 10.04.2014 16:11:45
ID: 3554.3
| Pokud si dobře vzpomínám, tak tam byl v té souvislosti nějaký problém s ACL. Myslím, že uživatelé museli mít povoleno právo "Delete documents", aby to fungovalo. Anebo naopak to měli zakázáno? Už si přesně nevzpomínám => zkrátka je to třeba důkladně otestovat i s nižšími (obvyklými uživatelskými) právy než má vývojář nebo admin. ;-) A možná na to má nějaký vliv i nastavení SoftDeletions ve vlastnostech databáze. |
|