1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Dragon108

    Dragon108 Well-Known Member

    Репутация:
    0
    Регистрация:
    19 янв 2010
    Сообщения:
    265
    Симпатии:
    0
    Есть поле Richtext , в нем надо найти строку, и взять следующие 10 символов идущие после нее в поле. Какие есть функции и как можно реализовать?
    Заранее Спасибо.
     
  2. alik86

    alik86 Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    1
    Открываете в хелпе NotesRichTextItem class и смотрите - там Вы найдете GetFormattedText method и еще много интересного... ;)
     
  3. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.379
    Симпатии:
    336
    есть ещё РТнафигатор, но он глючен...
     
  4. Dragon108

    Dragon108 Well-Known Member

    Репутация:
    0
    Регистрация:
    19 янв 2010
    Сообщения:
    265
    Симпатии:
    0
    Целиком задача звучала так:
    Есть поле рич текст , в нем есть строчка "Дата рождения <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


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

    TIA :-)
    Lotus team

    Репутация:
    0
    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    Не будет работать если Body станет достаточно большим.
    Что будет если не окажется слова "Дата"?
    Коллекцию лучше перебирать через coll.getNextDocument.
     
  6. turumbay

    Репутация:
    0
    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Попробуйте прочитать это вслух:
    Рекомендую к еженедельному прочтению по пятницам:
     
Загрузка...

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