Embeddedobjects

Тема в разделе "Lotus - Программирование", создана пользователем LIGHT, 22 апр 2009.

  1. LIGHT

    LIGHT Гость

    Господа, столкнулся с непонятной фигней.

    Есть форма в ней два ричтекстовых поля для аттачментов.

    В определенный момент нужно сделать проверку на расширение файла в одном из поле.
    Повесил такую функцию:

    Все бы хорошо, проверочка работает как нужно!

    Но, если происходит копирование вложения из поля F2 или еще какого либо в проверяемое поле ObjFound всегда = False
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может после копирования какой-нибудь uidoc.Refresh(True) сделать?
    Или RTItem.Update?

    Можно было бы отписать, как копируешь, кстати.
     
  3. LIGHT

    LIGHT Гость

    Копируют люди правой кнопкой - копировать/вставить. Следовательно получается два файла с одинаковыми именами, очевидно по этому и возникает ошибка. Если посмотреть свойства документа то поля $File имею различные
    File Name:

    File Name: Выписка из ЕГРЮЛ.tif
    File Name: ATTXNSJ01 или нечто подобное

    Очевидно, что лотус так разруливает конфликты имен вложений. Вложения имеют одинаковые имена.
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Проверил, похоже на то.
    Но если надо будет сделать это под страхом смертной казни, но имя таки можно вытащить, экспортнув док в DXL и проверив теги типа
    Код (Text):
    <attachmentref name='ATT4FPUZ' displayname='номальное_имя.jpg'>
     
  5. LIGHT

    LIGHT Гость

    Omh если не сложно можно маленький пример :D
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну где-то на QuerySave делаешь
    Код (Text):
    uidoc.Refresh(True)
    , что бы перенести RT изменения в background документ.
    Потом экспортишь примерно так:
    Код (Text):
    Dim DXLExp As NotesDXLExporter
    Set DXLExp = sess.CreateDXLExporter
    Call DXLExp.SetInput(doc)
    Dim DXL As String
    DXL = DXLExp.Export()
    В данный момент в переменной DXL у тебя XML описывающий документ.
    Парсишь как строку, либо, если есть желание/умение, парсишь через NotesDOMParser.
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    думаю, что в данном случае лучше NotesSAXParser, т.к. не надо ходить искать нужные элементы, они сами найдутся :)
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Чёт я туплю, а NotesEmbeddedObject.Source это не то, что тебе надо?
    Эта пропертя разве не имя файла возвращает (даже в нашем случае)?
    Правда, я не уверен.
    -------------------------------
    Посмотрел хелп:
    NotesEmbeddedObject.Name
    For file attachments, this property returns the name of the file unless the attachment is a duplicate. If the attachment is a duplicate, this property returns an internal name. (The Source property returns the file name in all cases.)
    -------------------------------
    Вообщем, надо использовать EO.Source, а не EO.Name
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Omh, скажу честно! из твоего поста не ясно возвращает ли NotesEmbeddedObject.Source действительное имя файла, или же внутренее имя, при ситуации по теме...
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Подмандил пост :)
    Надеюсь, стало понятнее.

    Я там погорячился, что не указал, что этот кусок из хелпа к NotesEmbeddedObject.Name, который как раз использует LIGHT.
    Поэтому у него и вылазят всякие "AF322GY"
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    теперь понятнее, спасибо :) возьми с полки пирожок ;)

    зы: надо как-то взяться и написать класс для работы с вложениями через DXL :)
     
  12. LIGHT

    LIGHT Гость

    Спасибо за мысли, но

    Вылетает ошибка на Print object.Name - Variable not set :)


    Поборол!!! Всем спасибо.

     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    неа - не поборол, коды "они" засейвят так что вылетит из РТ, еще кружок пройти прийдется :(
    правда - не помню в каких ситуевинах рассогласуются бэкэнд и фронтэнд (но с участием кода - точно может)
     
Загрузка...
Похожие Темы - Embeddedobjects
  1. NickProstoNick
    Ответов:
    19
    Просмотров:
    6.253
  2. yerke
    Ответов:
    31
    Просмотров:
    9.173

Поделиться этой страницей