Достучатся к почтовой базе.

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

Статус темы:
Закрыта.
  1. Гость

    Всем привет!
    Нужно получить тело письма. Если я правильно понимаю - это поле называется Body. Но вот проблема, не знаю как выбрать документы по форме Memo. Прошу меня поправить, если не точно указал форму и поле. В стандартной почтовой базе столько форм и представлений, голова кругом идет.
     
  2. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    как вариант DbSearch с формулой @LowerCase(Form) =* {memo}
     
  3. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Так вроде в представление ($All) все доки имеются.
    P.S. Письмо может быть и по форме Bookmark, Reply и т.п.
     
  4. Гость

    Всем спасибо, оказалось что база только и использует форму memo. Теперь осталось распарсить текст, может у кого есть наработки по парсингу текста. Когда получаю значение через doc.GetItemValue("Body")(0), в переменную заношу значение типа:
    System PrivatDoc - Intranet:
    System PrivatDoc - Internet:
    Документ "Касается определения исполнителя работ по демонтажу судопогрузочной машины (на №10334532517871)" (Intranet, Internet) - карточка 660323524248.
    Новый документ 66023523244248 на исполнении.

    Надо отлавливать число (номер карточки) и что после него стоит.
     
  5. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Body - это Rich Text поле. С ним работают конструкции типа:
    Код (Text):
    Dim RTitem As NotesRichTextItem
    Set RTitem = Doc.GetFirstItem("Body")
    RTitem.EmbeddedObjects                'атачи
    RTitem.GetFormattedText( False, 0))  'текст
    но не Вoc.GetItemValue("Body")(0)
     
  6. Гость

    С помощью какой команды можно найти позицию искомого стрингового элемента. Находить искомый элемент, к примеру "103", в поле я научился с помощью команды FindFirstString
    Код (Text):
        Set rtnav = body.CreateNavigator
    Set rtrange = body.CreateRange
    searchString$ = "103"
    If rtnav.FindFirstString(searchString$, RT_FIND_CASEINSENSITIVE) Then
    End If
    А как прочитать некоторое кол. элементов после первой найденной позиции?
     
  7. amigolinx

    amigolinx Гость

    если имеется в виду необходимость вычленить вот этот кусок "10334532517871" из Body, то можно сделать так (если текст всегда в одном и том же формате, как указано. если же нет, то нужны дополнительные проверки на возможный "мусор", который может попасть по обычной неаккуратности при составлении документа):
    Код (Text):
    Dim RTitem As NotesRichTextItem
    Set RTitem = Doc.GetFirstItem("Body")
    Dim txt As String
    txt = RTitem.GetUnformattedText
    txt = StrRightBack(txt, {№}) ' обрезали текст слева по символ № включительно
    txt = StrLeft(txt, {)}) ' а теперь отрезали лишнее еще и справа от скобки
     
  8. Гость

    Thanks, очень помогло :)
     
Загрузка...
Статус темы:
Закрыта.

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