Решено Attach файла с иконкой (back-end)

Есть ли решение на лотусскрипт, чтобы когда креплю аттач
Call rtitem.EmbedObject ( EMBED_ATTACHMENT, "", файлик)
иконка не становилась серым квадратиком?

ИЛи только цеплять целую библиотеку для этого?

Visual Basic:
Dim ses As New NotesSession
    Dim db As NotesDatabase
    
    Dim doc As NotesDocument
    
    ses.ConvertMIME = false
    
    Set db = ses.Currentdatabase
    
    Set doc = db.Createdocument()
    
    Dim body As NotesMIMEEntity, header As NotesMIMEHeader ,  child As NotesMIMEEntity
    Dim streamIn As NotesStream
    
    Dim z_data As String
    Dim Stream As NotesStream
    
    Set Stream = ses.Createstream()
    
    If Not Stream.Open("D:/Temp/excel.xlsx", "Binary") Then
        Error 5001, "stream not open"
    End If
    
    z_data = Stream.Readtext()
    
    Set body = doc.CreateMIMEEntity("Body")
    
    'Content Type
    Set header = body.CreateHeader("Content-Type")
    Call header.SetHeaderValAndParams({multipart/alternative;charset="UTF-8"})
    
    Set child = body.createChildEntity() 'ChildEntities are containers
    
    Set streamIn = ses.CreateStream 
    Call streamIn.WriteText(z_data)
    streamIn.Position = 0
    
    Set header = child.CreateHeader("Content-Type")
    Call header.SetHeaderVal("multipart/mixed")

    Set header = child.CreateHeader("Content-Disposition")
    Call header.SetHeaderVal("attachment; filename=excel.xlsx")

    Set header = child.CreateHeader("Content-ID")
    Call header.SetHeaderVal("excel.xlsx")
    
    Call child.setContentFromText(streamIn, {"application/octet-stream"}, ENC_IDENTITY_BINARY)
    
    Call doc.Closemimeentities(True)
    Call doc.Replaceitemvalue("Form", "rtItem")
    
    Call doc.save(True, false)
    
    ses.ConvertMIME = True
    
    Call Stream.Close()
    Call streamIn.Close()
 
  • Нравится
Реакции: seoman2 и VladSh
Что то не работает, даже сделал простейший тестовый пример, чтбы по кнопке в поле засунуть что то в миме в уи.
но не пашет. не понимаю почему.
 
Что то не работает, даже сделал простейший тестовый пример, чтбы по кнопке в поле засунуть что то в миме в уи.
но не пашет. не понимаю почему.
я не пробовал через UI делать, но возможно как раз дело в форме и в том, что на форме уже есть одноименное поле.
Вот только если есть UI док, то зачем программно на LS делать?
Можно сделать хот-спот или кнопку с формульным кодом:
Код:
@Command([EditGotoField];"Body");
@Command([EditInsertFileAttachment])
 
Если уже есть одноименное поле у doc - да, ошибка при вызове, так и указано в документации .
doc.CreateMIMEEntity("поле").

Я делаю переименование существующего аррача на LotusScript, всё ок - только иконочка исчезает.
Вот и думал через миме крепить обратно.

"я не пробовал через UI делать," - попробуйте? никак не получается. чтобы корректно.
пробую сначала закрыть док в уи...
Call doc.Save(True, True) скидывает содержимое NotesMIMEEntity в поле.
в общем пока никак (
 
ничего не происходит (
Visual Basic:
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
 
Set doc = ws.CurrentDocument.Document
Set uidoc=ws.CurrentDocument
Call uidoc.save
Dim result As Variant
Call uidoc.GoToField("Body2")
Macro$ = { @Command([EditInsertFileAttachment] ; "C:\\XML\\Инст.docx"; "1";  "0";   "0";     "0");     }
result = Evaluate(Macro$, doc)
Print "OK"
Exit Sub
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab