Как удалить текущий документ и закрыть окно кнопкой действия?

Я изменил кнопку действия на «», поэтому, когда какой-либо пользователь нажимает эту кнопку, я просто сохраняю Uidoc. Я хотел бы удалить этот документ, учитывая тот факт, что, если я не удалю его, все документы будут сохранены во ВСЕХ представлениях документов!

Когда я пытаюсь удалить документ (вызов doc.remove), я получаю сообщение об ошибке: «Не удается удалить документ заметок при создании экземпляра NotesUIDocument», все это в другой кнопке действия документа.

Также я хотел бы закрыть NotesDocument. Я тоже пробовал что-то вроде:

@Command([movetotrash]);
@Command([emptytrash]);
@Command([fileclosewindow]) but it doesn;t work. Thank you, Samir Akhtubir

Я тоже пробовал что-то подобное:

 Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   noteid$ = source.document.NoteID
   Delete source 
   Dim S As New notessession
   Dim db As notesdatabase
   Set db = s. currentdatabase
   Dim doc As Notesdocument
   Set doc = db.GetDocumentbyID(noteid$)
   Call doc.Remove(True)
 End Sub

Но если я помещу этот код в только что созданный документ, все документы будут удалены. Затем я вставил в QueryClose свою кнопку действия под названием «Отмена», но она не работает.

Итак, как я могу удалить текущий документ и закрыть окно кнопкой действия?


person Akhtubir    schedule 28.09.2012    source источник
comment
Добро пожаловать в StackOverflow. Это сайт вопросов и ответов. У вас есть конкретный вопрос?   -  person Ken Pespisa    schedule 28.09.2012


Ответы (1)


Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc as NotesDocument

'*** Get currently open document
Set uidoc = ws.CurrentDocument
'*** Save it, so we can later close it
'*** without prompt. You can also set
'*** the field SaveOptions to "0".
Call uidoc.Save()
Call uidoc.FieldSetText("SaveOptions","0")
'*** Get the backend document
Set doc = uidoc.Document
'*** Force closed the UI document
Call uidoc.Close(True)
'*** Delete the backend document
Call doc.Remove(True)

Если это не сработает, установите для документа флаг удаления. Обычно я использую flagDelete и устанавливаю для него значение «Да». У меня все мои представления отфильтрованы, чтобы не отображать какие-либо документы с этим полем, установленным на «Да». Затем у меня есть запланированный агент, который будет удалять все документы с параметром 'flagDelete', установленным в «Да», один раз в час или один раз в день (в зависимости от того, сколько документов обрабатывается в день).

У этого метода есть еще одно преимущество. Вы можете удалить доступ на удаление из ACL, но по-прежнему разрешить пользователям «удалять» определенные документы, установив флаг. Затем документы удаляются по-настоящему запланированным агентом, работающим с доступом на удаление. Конечно, любой имеющийся у вас код, который выполняет поиск или другой поиск, не основанный на представлениях, должен быть изменен, чтобы также исключить документы.

person Karl-Henry Martinsson    schedule 28.09.2012