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

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

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

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

как правильно заменить $ref

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

phantom76

что нужно учитывать, чтобы в респонсах заменить значение поля $ref новым? Нужно респонсы перетянуть под другого родителя...
в каком формате указывать новое значение?
 
N

nvyush

что нужно учитывать, чтобы в респонсах заменить значение поля $ref новым? Нужно респонсы перетянуть под другого родителя...
в каком формате указывать новое значение?

call respdoc.MakeResponce(newparentdoc)

а вообще $REF - это UNID родителя, т.е. текст
 
P

phantom76

т.е. смело беру UNID нужного родителя и записываю его в $REF респонса?
 
O

Omh

phantom76
Нет, ты находишь новый парент и делаешь doc.MakeRespnse
То, что сказал nvy в первом же ответе.
 
A

Akupaka

почувствуйте разницу:
Data Type: Response Reference List
Data Type: Text

если в обычное текстовое поле засунуть Response Reference List и отобразить, то мы увидим линк на документ, как хотспот, такой же, как если бы линк создали в RT-поле
 
P

phantom76

почувствуйте разницу:
Data Type: Response Reference List
Data Type: Text

если в обычное текстовое поле засунуть Response Reference List и отобразить, то мы увидим линк на документ, как хотспот, такой же, как если бы линк создали в RT-поле
уже почувствовал :), потому и спрашиваю..
 
N

nvyush

nvy

это НЕ текст это УНИД
иначе бы на такой текст не применяли бы команду в видах @Text(UNID)

С "текстом" погорячился. Просто doc.Getitemvalue("$REF")(0) дает строку без к-либо преобразований. ПисАть в $REF-поля не пробовал - не было нужды.
 
A

Akupaka

если нужно перенести поле типа Response Reference List, то надо копировать NotesItem
notesItem.CopyItemToDocument( document, newName$ )
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
С "текстом" погорячился. Просто doc.Getitemvalue("$REF")(0) дает строку без к-либо преобразований.
опять не верно :)
Getitemvalue - делает преобразования в распространенные типы переменных
так как Reference List не узаконен как тип переменных преобразование идет в текст
аналогом doc.Getitemvalue("$REF")(0) является Doc.ParentDocumentUNID - уже преобразованный стринг
 
O

oshmianski

не мое, но все же.
будьте внимательны, стандартное поле $Ref удаляется!!!
применяется для создания альтернативной иерархии.

Код:
Function SERVICE_CreateAlternateResponse (docParent As NotesDocument, docChildren As NotesDocument, refItemName As String) As Boolean
Dim tmpRefItem As NotesItem

On Error Goto ErrorHandler

SERVICE_CreateAlternateResponse = False

If docParent Is Nothing Then
Error 1000, "Не передан параметр <docParent>."
End If

If docChildren Is Nothing Then
Error 1001, "Не передан параметр <docChildren>."
End If

If Len(refItemName) = 0 Then
Error 1002, "Не передан параметр для функции <refItemName>."
Exit Function
End If

Call docChildren.MakeResponse (docParent)
Set tmpRefItem = docChildren.GetFirstItem ("$Ref")

While docChildren.HasItem (refItemName)
Call docChildren.RemoveItem (refItemName)
Wend

Call docChildren.CopyItem (tmpRefItem, refItemName)
Call docChildren.RemoveItem ("$Ref")

SERVICE_CreateAlternateResponse = True
Ex:
Exit Function

ErrorHandler:
Call ProcessError (LIB_NAME, Err, Error, Erl, Lsi_info(2), Lsi_info(12))
Resume Ex
End Function
 
P

phantom76

не мое, но все же.
будьте внимательны, стандартное поле $Ref удаляется!!!
применяется для создания альтернативной иерархии.

Код:
Function SERVICE_CreateAlternateResponse (docParent As NotesDocument, docChildren As NotesDocument, refItemName As String) As Boolean
Dim tmpRefItem As NotesItem

On Error Goto ErrorHandler

SERVICE_CreateAlternateResponse = False

If docParent Is Nothing Then
Error 1000, "Не передан параметр <docParent>."
End If

If docChildren Is Nothing Then
Error 1001, "Не передан параметр <docChildren>."
End If

If Len(refItemName) = 0 Then
Error 1002, "Не передан параметр для функции <refItemName>."
Exit Function
End If

Call docChildren.MakeResponse (docParent)
Set tmpRefItem = docChildren.GetFirstItem ("$Ref")

While docChildren.HasItem (refItemName)
Call docChildren.RemoveItem (refItemName)
Wend

Call docChildren.CopyItem (tmpRefItem, refItemName)
Call docChildren.RemoveItem ("$Ref")

SERVICE_CreateAlternateResponse = True
Ex:
Exit Function

ErrorHandler:
Call ProcessError (LIB_NAME, Err, Error, Erl, Lsi_info(2), Lsi_info(12))
Resume Ex
End Function

да, спасибо :) у меня как раз 2 комплекта полей используется для иерархии в каждом документе, стандартное исспользуется только для визуализации, а через дублируемые работает логика приложения..
 
R

rins

да, спасибо :) у меня как раз 2 комплекта полей используется для иерархии в каждом документе, стандартное исспользуется только для визуализации, а через дублируемые работает логика приложения..

Еще одна элегантная функция от Egor A. Ivanov; InterTrust 13.03.2007 17:24
********
на входе псевдодочерний документ, имя поля заменяющего $REF и родительский UNID в строке.

Sub SetRRLItem (note As NotesDocument, itemName As String, itemValue As String)
Dim parent As New NotesDocument (note.ParentDatabase)
Dim response As New NotesDocument (note.ParentDatabase)
Let parent.UniversalID = itemValue
Call response.MakeResponse (parent)
Call response.GetFirstItem ("$REF").CopyItemToDocument (note, itemName)
End Sub
********
 
Мы в соцсетях:

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