Тема: Переименование приложения (кнопка на LotusScript)
Вот код кнопки, которая берет все вложения в поле и можно вводить новое имя для поля.
Чтобы не перетаскивать приложение на рабочий стол, переименовывать его и потом опять крепить в лотус карточку.
Версия 1 кнопки на LotusScript.
Sub Click(Source As Button)
On Error Goto ErrH
Dim session As New NotesSession, ws As New NotesUIWorkspace, db As NotesDatabase, sview As NotesView, dc As NotesDocumentCollection
Dim uidoc As NotesUIDocument, doc As NotesDocument, templdoc As NotesDocument, DocTemp As NotesDocument
Dim picklist As Variant, mes As String
Dim rtitem As NotesRichTextItem
Dim rtitem2 As NotesRichTextItem
Dim Name_Stncl_List() As Variant ' все имена вложений
Set doc = ws.CurrentDocument.Document
Set uidoc=ws.CurrentDocument
Set rtitem = doc.GetFirstItem("attach")
Dim xxxx As Integer
i=0
If ( rtitem.Type = RICHTEXT ) Then
If Not Isempty(rtitem.EmbeddedObjects) Then
Forall obj In rtitem.EmbeddedObjects
If obj.Type = EMBED_ATTACHMENT Then ' шаг 1 имена вложений в массив
If obj.FileSize=0 Then
xxxx = Messagebox ({"Приложение: } & obj.Source & { имеет размер 0 байт.} & Chr(13) & Chr(13) & {Удалить?"}, 1 , "Удаление нулевого вложения." )
If xxxx = 1 Then
doc.history= Cstr(Now) + " "+ session.CommonUserName + " удалено приложение размером 0 байт (" + obj.Source + ") " &Chr(13) & " "&Chr(13) & doc.history(0)
Call obj.Remove
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call doc.save (True,False)
Call uidoc.Close
Call ws.EditDocument(True, doc) ' False - чтение
Exit Sub
End If
Else
Redim Preserve Name_Stncl_List(i)
Name_Stncl_List(i)= obj.Source ' в Name_Stncl_List вносим имена вложений
Print Name_Stncl_List(i)
i=i+1
End If
End If
End Forall
End If
End If
If i>0 Then 'есть хоть одно вложение в поле атач
nameobj = ws.Prompt (PROMPT_OKCANCELLIST, "Переименовать", "Выберите вложение", Name_Stncl_List(0), Name_Stncl_List)
If nameobj=False Then Exit Sub
End If
datapatch$ = "C:\XML\"
If Dir$ (datapatch$ ,16 )="" Then
Mkdir datapatch$
End If
i=1
Forall obj In rtitem.EmbeddedObjects
If obj.Source = nameobj Then ' nameobj - ямя выбранного вложения
new_nameobj=Trim(Inputbox$("Введите новое имя приложения " & i ,"Ввод названия приложения",nameobj))
If new_nameobj<>nameobj Then ' надо переименовать
Call obj.ExtractFile( datapatch$ & nameobj)
Name datapatch$ & nameobj As datapatch$ & new_nameobj ' переименовать файл nameobj на диске в new_nameobj
Call rtitem.EmbedObject ( EMBED_ATTACHMENT, "", datapatch$ & new_nameobj)
Call obj.Remove
Kill datapatch$ & new_nameobj
End If
End If
i=i+1
End Forall
Call doc.Save(1,0)
Print "Сохранили."
doc.history= Cstr(Now) + " "+ session.CommonUserName + " переименовано приложение (" + nameobj + ") " &Chr(13) & " "&Chr(13) & doc.history(0)
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call doc.save (True,False)
Call uidoc.Close
Call ws.EditDocument(True, doc) ' False - чтение
Exit Sub
ErrH:
Print "Ошибка " & Error(Err) & " в строке " & Erl
Exit Sub
End Sub