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

P

PeNgViN213

Добрый день!
Подскажите такую вещь, написал агента который прикрепляет файлы к документу в поле "docAttach". Но после прикрепления он отображается вот так:
1531903273253.png
.
Возможно ли как-то сделать, чтобы прикрепленный файл отображался вот таким образом:
1531903391021.png

?
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Добрый день!
Подскажите такую вещь, написал агента который прикрепляет файлы к документу в поле "docAttach". Но после прикрепления он отображается вот так Посмотреть вложение 20420.
Возможно ли как-то сделать, чтобы прикрепленный файл отображался вот таким образом Посмотреть вложение 20421?
возможно - поле д.б. типа РТ и отображать как майм (галочка в сво-вах формы)
отображение будет соответствовать зареганому типу в системе (если на серевер зареган ЛибраОфис, то код на сервере даст отображение его иконки, на клиенте будет свой)
Visual Basic:
Class HashMap As ErrorHandler
    Private hMap List As String
    Function put(key As String, xVal As String)
        On Error GoTo ErrH
        hMap(key)=xVal
Quit:
        Exit Function
ErrH:
        Error Err, RaiseError
    End Function

    Function get(key) As String
        On Error GoTo ErrH
        Me.Get=hMap(key)
Quit:
        Exit Function
ErrH:
        Error Err, RaiseError
    End Function
End Class

Sub Initialize
    CodePage="UTF-8"
    Set map=New HashMap()
    Call FillMimeTypes()
End Sub

Function EmbedFile(fName As String, doc As NotesDocument, xField As String) As Boolean
    On Error GoTo ErrH
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim body As NotesMIMEEntity
    Dim header As NotesMIMEHeader
    Dim child As NotesMIMEEntity
    Dim stream As NotesStream
    Dim fileFormat As String
    Dim rtitemA As NotesRichTextItem
    Dim rtitemB As NotesRichTextItem

    session.ConvertMime = False
    Set db = doc.ParentDatabase
    Set stream = session.CreateStream
    Call stream.Open(fName)

    Set body = doc.CreateMIMEEntity(xField)
    fileFormat = map.get(StrRightBack(fName, {.}))
    Print {File Format:} fileformat
    Set child = body.createChildEntity()
    Set header=child.createHeader("Content-Disposition")
    header.setHeaderVal({attachment; filename="} + fName + {"})
    Call child.setContentFromBytes(stream, fileFormat, ENC_IDENTITY_BINARY)

    Call stream.Close()
    EmbedFile = True
Quit:
    Exit Function
ErrH:
    Error Err, RaiseError
End Function

Private Function FillMimeTypes()
    On Error GoTo ErrH
    map.put "323", "text/h323"
    map.put "acx", "application/internet-property-stream"
    map.put "ai", "application/postscript"
    map.put "aif", "audio/x-aiff"
    map.put "aifc", "audio/x-aiff"
    map.put "aiff", "audio/x-aiff"
    map.put "asf", "video/x-ms-asf"
    map.put "asr", "video/x-ms-asf"
    map.put "asx", "video/x-ms-asf"
    map.put "au", "audio/basic"
    map.put "avi", "video/x-msvideo"
    map.put "axs", "application/olescript"
    map.put "bas", "text/plain"
    map.put "bcpio", "application/x-bcpio"
    map.put "bin", "application/octet-stream"
    map.put "bmp", "image/bmp"
    map.put "c", "text/plain"
    map.put "cat", "application/vnd.ms-pkiseccat"
    map.put "cdf", "application/x-cdf"
    map.put "cer", "application/x-x509-ca-cert"
    map.put "class", "application/octet-stream"
    map.put "clp", "application/x-msclip"
    map.put "cmx", "image/x-cmx"
    map.put "cod", "image/cis-cod"
    map.put "cpio", "application/x-cpio"
    map.put "crd", "application/x-mscardfile"
    map.put "crl", "application/pkix-crl"
    map.put "crt", "application/x-x509-ca-cert"
    map.put "csh", "application/x-csh"
    map.put "css", "text/css"
    map.put "dcr", "application/x-director"
    map.put "der", "application/x-x509-ca-cert"
    map.put "dir", "application/x-director"
    map.put "dll", "application/x-msdownload"
    map.put "dms", "application/octet-stream"
    map.put "doc", "application/msword"
    map.put "dot", "application/msword"
    map.put "dvi", "application/x-dvi"
    map.put "dxr", "application/x-director"
    map.put "eps", "application/postscript"
    map.put "etx", "text/x-setext"
    map.put "evy", "application/envoy"
    map.put "exe", "application/octet-stream"
    map.put "fif", "application/fractals"
    map.put "flr", "x-world/x-vrml"
    map.put "gif", "image/gif"
    map.put "gtar", "application/x-gtar"
    map.put "gz", "application/x-gzip"
    map.put "h", "text/plain"
    map.put "hdf", "application/x-hdf"
    map.put "hlp", "application/winhlp"
    map.put "hqx", "application/mac-binhex40"
    map.put "hta", "application/hta"
    map.put "htc", "text/x-component"
    map.put "htm", "text/html"
    map.put "html", "text/html"
    map.put "htt", "text/webviewhtml"
    map.put "ico", "image/x-icon"
    map.put "ief", "image/ief"
    map.put "iii", "application/x-iphone"
    map.put "ins", "application/x-internet-signup"
    map.put "isp", "application/x-internet-signup"
    map.put "jfif", "image/pipeg"
    map.put "jpe", "image/jpeg"
    map.put "jpeg", "image/jpeg"
    map.put "jpg", "image/jpeg"
    map.put "js", "application/x-javascript"
    map.put "latex", "application/x-latex"
    map.put "lha", "application/octet-stream"
    map.put "lsf", "video/x-la-asf"
    map.put "lsx", "video/x-la-asf"
    map.put "lzh", "application/octet-stream"
    map.put "m13", "application/x-msmediaview"
    map.put "m14", "application/x-msmediaview"
    map.put "m3u", "audio/x-mpegurl"
    map.put "man", "application/x-troff-man"
    map.put "mdb", "application/x-msaccess"
    map.put "me", "application/x-troff-me"
    map.put "mht", "message/rfc822"
    map.put "mhtml", "message/rfc822"
    map.put "mid", "audio/mid"
    map.put "mny", "application/x-msmoney"
    map.put "mov", "video/quicktime"
    map.put "movie", "video/x-sgi-movie"
    map.put "mp2", "video/mpeg"
    map.put "mp3", "audio/mpeg"
    map.put "mpa", "video/mpeg"
    map.put "mpe", "video/mpeg"
    map.put "mpeg", "video/mpeg"
    map.put "mpg", "video/mpeg"
    map.put "mpp", "application/vnd.ms-project"
    map.put "mpv2", "video/mpeg"
    map.put "ms", "application/x-troff-ms"
    map.put "mvb", "application/x-msmediaview"
    map.put "nws", "message/rfc822"
    map.put "oda", "application/oda"
    map.put "p10", "application/pkcs10"
    map.put "p12", "application/x-pkcs12"
    map.put "p7b", "application/x-pkcs7-certificates"
    map.put "p7c", "application/x-pkcs7-mime"
    map.put "p7m", "application/x-pkcs7-mime"
    map.put "p7r", "application/x-pkcs7-certreqresp"
    map.put "p7s", "application/x-pkcs7-signature"
    map.put "pbm", "image/x-portable-bitmap"
    map.put "pdf", "application/pdf"
    map.put "pfx", "application/x-pkcs12"
    map.put "pgm", "image/x-portable-graymap"
    map.put "pko", "application/ynd.ms-pkipko"
    map.put "pma", "application/x-perfmon"
    map.put "pmc", "application/x-perfmon"
    map.put "pml", "application/x-perfmon"
    map.put "pmr", "application/x-perfmon"
    map.put "pmw", "application/x-perfmon"
    map.put "pnm", "image/x-portable-anymap"
    map.put "pot,", "application/vnd.ms-powerpoint"
    map.put "ppm", "image/x-portable-pixmap"
    map.put "pps", "application/vnd.ms-powerpoint"
    map.put "ppt", "application/vnd.ms-powerpoint"
    map.put "prf", "application/pics-rules"
    map.put "ps", "application/postscript"
    map.put "pub", "application/x-mspublisher"
    map.put "qt", "video/quicktime"
    map.put "ra", "audio/x-pn-realaudio"
    map.put "ram", "audio/x-pn-realaudio"
    map.put "ras", "image/x-cmu-raster"
    map.put "rgb", "image/x-rgb"
    map.put "rmi", "audio/mid"
    map.put "roff", "application/x-troff"
    map.put "rtf", "application/rtf"
    map.put "rtx", "text/richtext"
    map.put "scd", "application/x-msschedule"
    map.put "sct", "text/scriptlet"
    map.put "setpay", "application/set-payment-initiation"
    map.put "setreg", "application/set-registration-initiation"
    map.put "sh", "application/x-sh"
    map.put "shar", "application/x-shar"
    map.put "sit", "application/x-stuffit"
    map.put "snd", "audio/basic"
    map.put "spc", "application/x-pkcs7-certificates"
    map.put "spl", "application/futuresplash"
    map.put "src", "application/x-wais-source"
    map.put "sst", "application/vnd.ms-pkicertstore"
    map.put "stl", "application/vnd.ms-pkistl"
    map.put "stm", "text/html"
    map.put "svg", "image/svg+xml"
    map.put "sv4cpio", "application/x-sv4cpio"
    map.put "sv4crc", "application/x-sv4crc"
    map.put "swf", "application/x-shockwave-flash"
    map.put "t", "application/x-troff"
    map.put "tar", "application/x-tar"
    map.put "tcl", "application/x-tcl"
    map.put "tex", "application/x-tex"
    map.put "texi", "application/x-texinfo"
    map.put "texinfo", "application/x-texinfo"
    map.put "tgz", "application/x-compressed"
    map.put "tif", "image/tiff"
    map.put "tiff", "image/tiff"
    map.put "tr", "application/x-troff"
    map.put "trm", "application/x-msterminal"
    map.put "tsv", "text/tab-separated-values"
    map.put "txt", "text/plain"
    map.put "uls", "text/iuls"
    map.put "ustar", "application/x-ustar"
    map.put "vcf", "text/x-vcard"
    map.put "vrml", "x-world/x-vrml"
    map.put "wav", "audio/x-wav"
    map.put "wcm", "application/vnd.ms-works"
    map.put "wdb", "application/vnd.ms-works"
    map.put "wks", "application/vnd.ms-works"
    map.put "wmf", "application/x-msmetafile"
    map.put "wps", "application/vnd.ms-works"
    map.put "wri", "application/x-mswrite"
    map.put "wrl", "x-world/x-vrml"
    map.put "wrz", "x-world/x-vrml"
    map.put "xaf", "x-world/x-vrml"
    map.put "xbm", "image/x-xbitmap"
    map.put "xla", "application/vnd.ms-excel"
    map.put "xlc", "application/vnd.ms-excel"
    map.put "xlm", "application/vnd.ms-excel"
    map.put "xls", "application/vnd.ms-excel"
    map.put "xlt", "application/vnd.ms-excel"
    map.put "xlw", "application/vnd.ms-excel"
    map.put "xof", "x-world/x-vrml"
    map.put "xpm", "image/x-xpixmap"
    map.put "xwd", "image/x-xwindowdump"
    map.put "z", "application/x-compress"
    map.put "zip", "application/zip"
    map.put ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    map.put ".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"
    map.put ".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"
    map.put ".xltm", "application/vnd.ms-excel.template.macroEnabled.12"
    map.put ".xlam", "application/vnd.ms-excel.addin.macroEnabled.12"
    map.put ".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"
    map.put ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"
    map.put ".potx", "application/vnd.openxmlformats-officedocument.presentationml.template"
    map.put ".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"
    map.put ".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"
    map.put ".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"
    map.put ".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"
    map.put ".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"
Quit:
    Exit Function
ErrH:
    Resume Quit
End Function
использование:
Visual Basic:
%REM
    Agent test\AttachDoc
    Created Jul 18, 2018 by Mikhail Cholokov/CRUINTERNET
%END REM
Option Public
Option Declare
Use "AttachmentUtils"

Sub Initialize
    On Error GoTo ErrH
    Dim doc As NotesDocument, db As NotesDatabase, wks As New NotesUIWorkspace
    Set db = wks.CurrentDatabase.Database
    Set doc = db.CreateDocument()
    'log form should be in DB
    doc.ReplaceItemValue {form}, {Log}
    Dim path As String
    path = {%TEMP%\test.doc}
    'RT field name - body
    EmbedFile path, doc, {body}
    'essentially - it have to be here to avoid save
    doc.ComputeWithForm false, false
    wks.EditDocument False, doc
Quit:
    Exit sub
ErrH:
    Error Err, RaiseError
End Sub
в примере док инмемори, без сохранения на диск! нюанс с ComputeWithForm важен (иначе РТ не отобразится, без сохранения дока "на диск")
java (с его оригинала и взято) я выкладывать, типы маймов тоже были из java (я адаптировал код для ЛС)
повторный аттач в поле не будет работать (ругнется на присутсвие айтема), т.е. body надо будет хачить в доке! если захочется новый аттач внебенить в док
 
Последнее редактирование модератором:
  • Нравится
Реакции: VladSh

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
@lmike
Если прикреплять в UI, то галочка "Mime" ведь необязательна.
У меня как-то "случайно" возник баг - добавляю вложение в UI, но после сохранения его иконка становится серой и, кроме того, вложение "раздваивалось" (отображалось и в поле, и внизу формы). Причина была в том, что я вынес RT-поле, в которое вставлял файл, на подформу... Вернул на форму и всё стало Ok.

А что в {body} может передаваться?

И что будет, если не делать ComputeWithForm, а просто сохранить док, форматирование останется?
 
Последнее редактирование:

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
lmike
offtop: я в свой аналог
HashMap добавлял свойство Count - приятная плюшка :)
 
P

PeNgViN213

я конечно не такой про, как Вы)) я так понял это ScriptLibrary? я добавляю у меня ошибка ErrorHadler
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
я конечно не такой про, как Вы)) я так понял это ScriptLibrary? я добавляю у меня ошибка ErrorHadler
отвечайте на пост - иначе я не узнаю что был ответ, без захода на страницу
профи быть необязательно ;) - это обертка по обработке ошибок, можете просто убрать и в обработке поставить свой код (где RaiseError)
я выкладывал либу с обработкой здесь..., но смысла не вижу - у каждого она своя
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Если прикреплять в UI, то галочка "Mime" ведь необязательна.
разумеется, но этот код для бэкэнда, во фронт вынесено для наглядности
А что в {body} может передаваться?
если вопрос про поле - имя поля любое РТ, если про содержимое поля - желательно пустое (если поле будет на форме - придется мудрить с переносом РТ в др. РТ)
И что будет, если не делать ComputeWithForm, а просто сохранить док, форматирование останется?
сохранение даст тот же эффект, а вот если ничего не делать (ни компуте ни сохранение) - то просто не отобразит во фронте
здесь сделан инмемори - потому и нет сохранения
 
  • Нравится
Реакции: VladSh и alexas1
P

PeNgViN213

отвечайте на пост - иначе я не узнаю что был ответ, без захода на страницу
профи быть необязательно ;) - это обертка по обработке ошибок, можете просто убрать и в обработке поставить свой код (где RaiseError)
я выкладывал либу с обработкой здесь..., но смысла не вижу - у каждого она своя

Библиотеку добавил, ну что-то не пойму, не работает.... =((
вот мой код:
Код:
Sub Initialize
    Dim ws As New NotesUIWorkspace
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim col As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim rtitem As Variant
    Dim newrtitem As Variant
    Dim object As NotesEmbeddedObject
    Dim j As Integer
    Dim files As Variant
    
    Set db=ses.currentdatabase
    Set col=db.unprocesseddocuments
    Set doc=col.getfirstdocument
    
    While Not doc Is Nothing
        Set rtitem = doc.GetFirstItem("docAttach")
        If (rtitem.Type = RICHTEXT) Then
            ForAll o In rtitem.EmbeddedObjects
                If ( o.Type = EMBED_ATTACHMENT ) then
                    Call o.ExtractFile ("D:\red\" + o.Name)
                End If
                Print "-----> " & o.Name & " unload"
            End ForAll
        End If
        
        Call rtitem.Remove()
        Call doc.Save(True, True)
        
        Set newrtitem = New NotesRichTextItem(doc, "docAttach" )
        files = ws.OpenFileDialog(True, "Выберите файл","|All Files|*.*","D:\red\")
        If Not(IsEmpty(files)) Then
            ForAll i In files
                Set object = newrtitem.EmbedObject(EMBED_ATTACHMENT, "", i)
            End ForAll
        End If
        Call doc.Save(True, True)
        Set doc=col.getnextdocument(doc)
    Wend
End Sub
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Библиотеку добавил, ну что-то не пойму, не работает.... =((
вот мой код:...
ваш код работать не будет!
мой код работает, яж выкладывал рабочий вариант

ваш код, просто с приложением аттача, не работает по очень простой причине - никто не говорит домине какой майм тип загружать
Вариант с ДХЛ я даже предлагать не стану - оверинжениринг будет

желтый заголовок ;)"Предыстория грандиозного нае..лова от МС"

В стародавние времена, когда звери жили как добрые соседи никому в голову не приходило, что файлы могут быть идентифицированы по содержимому (ибо 640 килобайт должно хватать), и затраты на анализ были бы чрезмерными.
В современных реалиях, в системах нет необходимости быть привязанными к так называемому "расширению" (наследие DOS и прочих устаревших систем).
Задумайтесь на секунду - файлы называют как не попадя, включая национальные алфавиты и только долбаное расширение должно, по какой-то странной причине, определять содержимое файла
В системах типа виндядки этот трэш считается нормой и переименовав файл можно вызвать джина запуск программы, которая, о чудо, не опознает формат ;)
Так вот, дорогие мои "маленькие любители винды" коллеги, расширение - это нонсенс и присутствует "чиста" по привычке.
Системы опираются на майм тип и анализ заголовка файла (как пример - в линухах пофиг расширение файла, в большинстве ситуаций и картинка "соответствует" содержимому или назначенному майм типу, в умолчальных "файл браузерах")

Т.о. либо при интерактивном взаимодействии с ОС будет определена иконка для файла (в соответствии с майм или как в винде - умолчальным расширением, а уже потом майм), либо никак (только руками)
При формировании майм - мы проходим эту процедуру без интерактива (на уровне библиотек системы) и получаем иконку ср-ваи библиотек ОС, а EmbedObject это из ДОСовской эпохи (где об иконках для файлов даже не икали)

Теперь о сути - что не получилось с огрызками моей библиотеки?

упомяну ряд допущений в моем коде:
- либа не анализирует имя файла на предмет слэшей и прочей хери (а надобы), и имя формируется как есть (это неправильно, надо - StrRightBack(fName,{\}), для виндядко)
- в примере я засовываю файл по пути системной переменной (в темпы), а она специфична только для винды
- по-хорошему - либа должна манипулировать только стримом и получать имя файла (для атача)
 
Последнее редактирование:
  • Нравится
Реакции: VladSh

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
В стародавние времена, когда звери жили как добрые соседи
Аудио-сказки дядюшки Римуса? :)

P.S. Подрежь, плз, цитированный код в сообщении, можно просто многоточие поставить, и так видно на какое сообщение цитирование.
 
Последнее редактирование:

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
типа того :) я это слушал на пластинке, комбайн (ламповый с приемником) Украина (детство в СССР навевает)
У меня та же история, только с бабинным магнитофоном Астра-209 :)
 
P

PeNgViN213

ваш код работать не будет!
мой код работает, яж выкладывал рабочий вариант

ваш код, просто с приложением аттача, не работает по очень простой причине - никто не говорит домине какой майм тип загружать
Вариант с ДХЛ я даже предлагать не стану - оверижениринг будет

желтый заголовок ;)"Предыстория грандиозного нае..лова от МС"

В стародавние времена, когда звери жили как добрые соседи никому в голову не приходило, что файлы могут быть идентифицированы по содержимому (ибо 640 килобайт должно хватать), и затраты на анализ были бы чрезмерными.
В современных реалиях, в системах нет необходимости быть привязанными к так называемому "расширению" (наследие DOS и прочих устаревших систем).
Задумайтесь на секунду - файлы называют как не попадя, включая национальные алфавиты и только долбаное расширение должно, по какой-то странной причине, определять содержимое файла
В системах типа виндядки этот трэш считается нормой и переименовав файл можно вызвать джина запуск программы, которая, о чудо, не опознает формат ;)
Так вот, дорогие мои "маленькие любители винды" коллеги, расширение - это нонсенс и присутствует "чиста" по привычке.
Системы опираются на майм тип и анализ заголовка файла (как пример - в линухах пофиг расширение файла, в большинстве ситуаций и картинка "соответствует" содержимому или назначенному майм типу, в умолчальных "файл браузерах")

Т.о. либо при интерактивном взаимодействии с ОС будет определена иконка для файла (в соответствии с майм или как в винде - умолчальным расширением, а уже потом майм), либо никак (только руками)
При формировании майм - мы проходим эту процедуру без интерактива (на уровне библиотек системы) и получаем иконку ср-ваи библиотек ОС, а EmbedObject это из ДОСовской эпохи (где об иконках для файлов даже не икали)

Теперь о сути - что не получилось с огрызками моей библиотеки?

упомяну ряд допущений в моем коде:
- либа не анализирует имя файла на предмет слэшей и прочей хери (а надобы), и имя формируется как есть (это неправильно, надо - StrRightBack(fName,{\}), для виндядко)
- в примере я засовываю файл по пути системной переменной (в темпы), а она специфична только для винды
- по-хорошему - либа должна манипулировать только стримом и получать имя файла (для атача)

Ваш код будет работать, для коллекции документов, без ui?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Ваш код будет работать, для коллекции документов, без ui?
он для того и создан, просто сохраняйте док
у меня на сервере так загружаются аттачи через браузер, и картинки присутствуют в доках (там где через майм), сервер на линухах, аттачи формируются программно
1531994821576.png

как видим - иконка не серая, а что у меня там привязано - я не помно (может и либры нет, даже)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Visual Basic:
Private Function FillMimeTypes()
    On Error GoTo ErrH
    '...
    map.put "zip", "application/zip"
    map.put ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    '...
Quit:
    Exit Function
ErrH:
    Resume Quit
End Function
Начиная с ".xlsx" расширение файла идёт вначале с точкой. М.б. для однообразия точку поубирать? Или так и должно быть?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
повторный аттач в поле не будет работать (ругнется на присутсвие айтема), т.е. body надо будет хачить в доке! если захочется новый аттач внебенить в док
Именно так и нужно - несколько вложений.
Пытаюсь сделать EmbedObject во временный документ, и оттуда уже копировать RT-поле AppendRTItem, но оно ругается - несовпадение типов (у меня поле основного дока - RichText, но не MIME).
Можно как-то это побороть, не конвертируя поле основного дока в MIME?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Начиная с ".xlsx" расширение файла идёт вначале с точкой. М.б. для однообразия точку поубирать? Или так и должно быть?
я не помню - как анализируется хэшмеп, приципиально необходимости нет
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
454
Именно так и нужно - несколько вложений.
Пытаюсь сделать EmbedObject во временный документ, и оттуда уже копировать RT-поле AppendRTItem, но оно ругается - несовпадение типов (у меня поле основного дока - RichText, но не MIME).
Можно как-то это побороть, не конвертируя поле основного дока в MIME?
я майм использовал для поточной обработки (без явного использования диска)
и совмещение содержимого РТ и майм вряд ли возможно без опции конвертации (с ней ещё тоже будет история)
покажи код, там заморочки могут быть с типами полей и возможно надо использовать NotesItem (а не NotesRichTextItem)
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!