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

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#2
как вариант DbSearch с формулой @LowerCase(Form) =* {memo}
 

alik86

Well-Known Member
Lotus team
20.11.2008
465
1
#3
Так вроде в представление ($All) все доки имеются.
P.S. Письмо может быть и по форме Bookmark, Reply и т.п.
 

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

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

alik86

Well-Known Member
Lotus team
20.11.2008
465
1
#5
Body - это Rich Text поле. С ним работают конструкции типа:
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
RTitem.EmbeddedObjects				  'атачи
RTitem.GetFormattedText( False, 0))  'текст
но не Вoc.GetItemValue("Body")(0)
 

Гость
#6
Body - это Rich Text поле. С ним работают конструкции типа:
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
RTitem.EmbeddedObjects				  'атачи
RTitem.GetFormattedText( False, 0))  'текст
но не Вoc.GetItemValue("Body")(0)
С помощью какой команды можно найти позицию искомого стрингового элемента. Находить искомый элемент, к примеру "103", в поле я научился с помощью команды FindFirstString
Код:
	Set rtnav = body.CreateNavigator
Set rtrange = body.CreateRange
searchString$ = "103"
If rtnav.FindFirstString(searchString$, RT_FIND_CASEINSENSITIVE) Then
End If
А как прочитать некоторое кол. элементов после первой найденной позиции?
 
A

amigolinx

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

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