• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Добавление нового значения в Rich Text

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

seoman2

Green Team
17.02.2010
508
1
Можно ли добавлять в Rich text поле новое значение, как в массив или множественное поле?
 
Можно! В дизайнерском хелпе находите NotesRichTextItem class, а там пред Вами предстанут всякие AppendText'ы и ему подобные вещи.
 
Проблема вот в чем, при выполнении

Dim RTItm As NotesRichTextItem
Set RTItm=CurDoc.getFirstItem("ИСТОРИЯ")
Call RTItm.Appendtext (formul$)

Создается 2 поля ИСТОРИЯ !
Одно пустое, а во второе как и надо добавляется значение formul$.
 
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
 
Ща няма часу. Вот Вам на затравку рабочий код (по-моему рабочий ;)):
Код:
Sub AppendToRTitem(RTitem As NotesRichTextItem, text As String)
'---------------------------------------------------------------------------------------------------------------------------------------------	
' Процедура динамического добавления текста в поле Rich Text 
'RTitem - поле RTitem, text - текст, который добавляется
'!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов
'---------------------------------------------------------------------------------------------------------------------------------------------
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument

Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Call RTitem.AppendText(text)
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True		
End Sub
 
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
Поле история вычисляемое. Само на себя.

alik86, у меня примерно такой же код, но всё равно 2 поля создается!
Вот сделал в тестовой базе:
Sub Click(Source As Button)
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument
Dim RTitem As NotesRichTextItem
Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Set RTitem = Doc.GetFirstItem("История")
Call RTitem.AppendText(" 123123123 ")
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True
End Sub
И все равно 2 поля история создается!

Разобрался, в 7.0.2. - создается 2 поля RichText.
А в 8.5 - все правильно, 1 поле.
 
А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
 
А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
А я уже не помню - методом тыка до этого доходил... :)
Вспомнил :):
Там были косяки с созданием конфликтов (см. "!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов"). Вот в процессе написания и отладки процедуры и сохранял принудительно, а апосля не убрал.
Т.о. ответ: если процедура вызывается после Doc.Save, то не надо.
И все равно 2 поля история создается!
Это нормально (а может не совсем, но и у меня так) - это дубликаты одного поля. Вся инфа отражается в РТфилде "История", который вы всунули в вашу форму...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab