• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Взять строку в Richtext поле

  • Автор темы Dragon108
  • Дата начала
D

Dragon108

Есть поле Richtext , в нем надо найти строку, и взять следующие 10 символов идущие после нее в поле. Какие есть функции и как можно реализовать?
Заранее Спасибо.
 
A

alik86

Открываете в хелпе NotesRichTextItem class и смотрите - там Вы найдете GetFormattedText method и еще много интересного... ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
есть ещё РТнафигатор, но он глючен...
 
D

Dragon108

Целиком задача звучала так:
Есть поле рич текст , в нем есть строчка "Дата рождения <dd.mm.yyyy>". Необходимо было найти эту строчку и взять только <dd.mm.yyyy> и записать данное значение в поле Дата рождения(birthday_edit) в документе.

Придумал следующее решение. Написал следующего агента:

Код:
'Агент: Берется поле рич текст, ищется в нем информацию и сохраняется в поле с типом дата (предварительно преобразовываются данные)
'1) Берет все выделенные документы, и по очереди обрабатывает их
'2) В каждом выделенном документе берет поле Рич текст и записывает ее в строковую переменную
'3) Разбивает данную строковую переменную на элементы массива и соответственно загоняет все в массив
'4) Ищет по полученному массиву слово Дата и возвращает индекс данного элемента
'5) Прибавляет к индексу данного элемента 2, (полученный индекс будет являться индексом даты (числа))
'6) Берет по данному индексу элемент из массива, удаляет у данного элемента символы переноса строки в начале и конце элемента
'7) Записывает полученную даты в поле Дата Рождения и сохраняет документ

Sub Initialize

'Обработчик ошибок
On Error Goto errorhandler

Dim ws As NotesUIWorkspace
Dim uiview As NotesUiView
Dim ses As Notessession
Dim db As NotesDatabase, mailDb As NotesDatabase	
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument, mailDoc As NotesDocument

'Счетчик
Dim i%

'Переменные полей
Dim item3 As NotesRichTextItem
Dim item4 As NotesItem


'Массив строк для разбияния и сохранения в нем текста из поля рич текст
Dim ret As Variant

'Индекс элемента Дата в массиве
Dim nash_result As Variant
'Индекс самой даты в массиве
Dim nash_result_1 As Variant
'Переменная для хранения полученной даты
Dim temp As String

Set ws = New NotesUIWorkspace	
Set uiview = ws.CurrentView
Set coll = uiview.Documents

'Для каждого отмеченного документа выполянет действия
If coll.Count > 0 Then	
For i%=1 To coll.Count
Set doc = coll.GetNthDocument(i%)

'Берет поле Рич текст
Set item3 = doc.GetFirstItem( "Body" )

'Записывает весь текст из поля рич текст с строковую переменную
plainText$ = item3.GetFormattedText( True, 10 )

'Разбивает текстовую переменную на элементы массива
ret = Split (plainText$, , -1, 0)

'Убирает у элементов пробелы (на свякий случай)
ret = Fulltrim (ret)

'Получает индекс элемента (слова Дата) в массиве строк
nash_result = Arraygetindex( ret, "Дата" ,0 ) 

'Прибавляет к полученному индексу 2, таким образом получаем индекс даты рождения (цифры) 
nash_result_1 = nash_result + 2

'Сохраняем дату рождения в переменную temp
temp = ret(nash_result_1)

'Удаляем лишние переносы строки (спереди и сздаи нашей даты, дата- 10 символов)
temp = Left(temp, 12)
temp = Right(temp, 10)

'Записываем полученную даты в поле Дата рождения
Set item4 = doc.ReplaceItemValue("birthday_edit", temp)

Call doc.Save( True, True )

Next		
Else
Msgbox "Выберите документы"
End If



errorhandler:
If Err <> False Then
Msgbox "Ошибка: " +Error$ + Chr(10) + " Код ошибки: " + Cstr(Err) + Chr(10) + "Строка ошибки: "+ Cstr(Erl)+ Chr(10) + "Передайте эту информацию разработчику.", 0 +16, "Ошибка"
Exit Sub
End If


End Sub



Вот как то так. А вдруг кому нить пригодиться :)
 
T

TIA

Не будет работать если Body станет достаточно большим.
Что будет если не окажется слова "Дата"?
Коллекцию лучше перебирать через coll.getNextDocument.
 
T

turumbay

Попробуйте прочитать это вслух:
nash_result_1 = nash_result + 2
Рекомендую к еженедельному прочтению по пятницам:
(c) Roedy Green сказал(а):
.. я передаю эти подсказки мастеров о том, как писать код, настолько трудный для поддержки, что у людей, пришедших после вас, уйдут годы на внесение даже малейших изменений. Более того, скрупулезно следуя всем этим правилам, вы гарантируете себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в этом аду. При достаточной дотошности, использовав все правила, даже вы не сможете поддерживать собственный код.
Тем не менее, не стоит увлекаться. Ваш код должен не выглядеть безнадежным, а всего лишь быть таким. Иначе есть опасность, что код перепишут или устроят ему рефакторинг. ...
Продолжение
 
Мы в соцсетях:

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