• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поле Richtext в новом документе

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

PavelT100

В форме есть поле RichText c именем "Pharmacie".

Код:
	Set doc = conv_db.CreateDocument
doc.Form = "Installation"	

Dim rtItem As NotesRichtextItem
Set rtitem = New NotesRichTextItem( doc, "Pharmacie" )
...

то в результате в документе образуется 2 поля с именем "Pharmacie", причем первое пустое, а во втором та информация которую я записал программно.
Код:
	Set doc = conv_db.CreateDocument
doc.Form = "Installation"	

Dim rtItem As NotesRichtextItem
Set rtitem = doc.GetFirstItem("Pharmacie")
...
А если так, то rtitem = Nothing. Как мне сделать так чтобы поле было только одно и в него можно было программно записать данные ?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Сделать рефреш документа с параметром True.
 
P

PavelT100

Код:
	Dim doc As NotesDocument
Set doc = conv_db.CreateDocument
doc.Form = "Installation"

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.EditDocument( True, doc)
Call uidoc.Refresh(True)

Call doc.Save(True, True)
Dim unid As String
unid = doc.UniversalID
Set doc = Nothing	
Set doc = conv_db.GetDocumentByUNID(unid)	

Dim rtItem As NotesRichtextItem
Set rtitem = doc.GetFirstItem("Pharmacie")

Вот как я записал - но в результате всеравно rtitem = Nothing. Что я сделал не так ?

А, понял, полуилось, Refresh надо делать после Save
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Потому что doc и uidoc(.Document) - это разные документы.
В doc ты нигде не создаешь поле Pharmacie.



Сделай так.
Код:
Set uidoc = ws.EditDocument( True, doc)
Call uidoc.Refresh(True)
Set doc = uidoc.Document
Хотя что-то мне не нравится это.
 
P

PavelT100

Эх, вообщем плохо получается - вот такой код дает в результте аж 3 (три) поля Pharmacie в документе. Почему ?
Код:
Dim doc As NotesDocument
Set doc = conv_db.CreateDocument
doc.Form = "Installation"	
Call doc.Save(True, True)

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.EditDocument( True, doc)
Call uidoc.Refresh(True)

Dim unid As String
unid = doc.UniversalID
Set doc = Nothing

Set doc = conv_db.GetDocumentByUNID(unid)	

Dim rtItem As NotesRichtextItem
Set rtitem = doc.GetFirstItem("Pharmacie")

Dim soc As NotesDocument	
set soc = ...<инициализация soc> .....

Call rtItem.AppendDocLink(soc, "", "soc")
Call rtItem.AddNewLine(1)

Call doc.Save(True, False)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Код страшный какой-то. Ты хоть скажи что нужно?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
ежели не нужно это делать в UI - делайте через DXL (выгрузка, изменение, загрузка)
глюкозявые они - UI классы... (приспособится можно - но, часто, не нужо)
выглядит типа того:
<pardef id='15'/>
<par def='15'><doclink document='D40588E10CB6D593C3256F8C005EDA5E' view='57D34A0095AC1EECC3256F95004490F9'
database='C3256E07004B1B77' description='My DB' server='CN=server/O=CRUINTERNET'/>-doc link</par>

<pardef> - можете взять и предыдущего параграфа (ссылка осущ. по номеру)
 
P

PavelT100

Код страшный какой-то. Ты хоть скажи что нужно?
Согласен, что страшный. А нужно то совсем не много. Создать документ формы "Installation" и в нем в поле "Pharmacie" создать линк на другой документ soc. Вообщем у меня это получается, но кривость заключается в том что сейчас полей "Pharmacie" целых 3 (три).
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Непонятно, зачем открывать для этого документ(ws.EditDocument( True, doc)), а потом еще сохранять? Т.к. когда захотим сохранить открытый документ, то получим конфликт.
То, что поля плодятся, это нормально для ричтекста.
 
P

PavelT100

Непонятно, зачем открывать для этого документ(ws.EditDocument( True, doc)), а потом еще сохранять? Т.к. когда захотим сохранить открытый документ, то получим конфликт.
То, что поля плодятся, это нормально для ричтекста.

ws.EditDocument( True, doc) я делаю для того чтобы получить uidoc. А Save - можно сказать, что это мой "творческий" поиск. Но я делал и как вы сказали,
Код:
Call uidoc.Refresh(True)
Set doc = uidoc.Document
, без Save, результат все равно тот же самый - три поля Pharmacie. Причем первое и третье пустые, а во втором моя ссылка. Откуда они плодятся ?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Ты в бакэнде полностью работаешь что ли?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Тогда не важно что там на форме есть.
Верен самый первый код:
Set doc = conv_db.CreateDocument
doc.Form = "Installation"

Dim rtItem As NotesRichtextItem
Set rtitem = New NotesRichTextItem( doc, "Pharmacie" )
...
Если поля плодятся, то это не страшно. Попробуй документ открыть и посмотреть всё ли нормально.
 
Мы в соцсетях:

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