• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

@setfield

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

Idea

Доброго времени суток!
Столкнулась со следующей проблемой:
В системе существует кнопка для рассылки уведомлений. Уведомления создаются как Bookmark. Список адресатов, которым рассылается уведомление берется из представления. Код кнопки следующий:
Код:
pee := @PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2);
@Command([Compose]; @MailDbName; "BookMark");
@SetField("SendTo";@Implode(pee))
в результате ничего в поле SendTo не отображается. Такое же безобразие остается, если создать любой документ и попытаться передать значение в его поле аналогичным образом. Проверила код
Код:
pee := @PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2);
@SetField("To";pee)
на другой формочке, соответственно не создавая новый документ - в поле To отображается список адресов, то есть то, что и требуется.

Подскажите, как все-таки передать значения из пиклиста в поле только что созданного документа?
 
I

Idea

к сожалению в скриптах пока непроходимый ламер)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Что-то типа:
Код:
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim maildb As NotesDatabase
Dim doc As NotesDocument
Dim mailDBName As Variant
Dim pee As Variant

mailDBName = Evaluate({@MailDbName})
Set maildb = session.GetDatabase(mailDBName(0), mailDBName(1), False)

pee = ws.PickListStrings(...)
if Not Isempty(pee) then
Set doc = maildb.CreateDocument
doc.Form = "BookMark"
doc.SendTo = pee
Call ws.EditDocument(True, doc, False)
end if
 
I

Idea

спасибо, сейчас попробую это "что-то типа")
 
I

Idea

Адресаты прекрасно вставились, большое спасибо. Но возникла проблема следующего содержания - в букмарк в соответствующее поле необходимо вставить ссылку на текущий док. Итог - ссылка не вставляется( Вот такой вот вышел код, чего с ним может быть не так?
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim maildb As NotesDatabase
Dim doc As NotesDocument
Dim mailDBName As Variant
Dim pee As Variant
Dim sbj As Variant
Dim uidoc As NotesUIDocument
Dim rtitem As NotesRichTextItem

Set uidoc = ws.CurrentDocument

mailDBName = Evaluate({@MailDbName})
Set maildb = session.GetDatabase(mailDBName(0), mailDBName(1), False)

pee = ws.PickListStrings(PICKLIST_CUSTOM, True, 	"lotus2/IATE",	"PRANAPrj.nsf" , "PranaTeam", "Notify users","Select some addressees", 2)
If Not Isempty(pee) Then
Set doc = maildb.CreateDocument
doc.Form = "BookMark"
delim = "," 
doc.SendTo = Implode(pee, delim)
doc.Subject =  uidoc.FieldGetText( "Title" )
Set rtitem = New NotesRichTextItem(doc, "Body" )
Call rtitem.AppendDocLink( uidoc.document, " ")

Call ws.EditDocument(True, doc, False)

End If
End Sub
 
F

Fossil Code

По-моему, первоначальная проблема была в том, что последовательность формул выполнялась в разных контекстах: т.е. сначала инициализировалась переменная, а потом создавался новый документ, в поле которого производилась попытка вставки переменной. Но контекст для скрипта уже иной! Не исключено, что если сделать форму с полем SendTo и кнопкой, куда повешен код

pee := @PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2);
@Command([Compose]; @MailDbName; "BookMark");
@SetField("SendTo";@Implode(pee))

то правильно проинициализируется именно поле в _исходной_ форме. Кроме того, @Command, как правило, выполняются _в конце_ последовательности формул, невзирая на их место в коде. Сказанное подтверждается Вашей проверкой пиклиста на отдельной форме.

Мораль: Если поставить в форме BookMark для поля SendTo значение по умолчанию @Implode(@PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2)), то диалог будет выполнен при создании формы. А можно

@SetField("SendTo";@Implode(@PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2)))

повесить на кнопочку в форме.
 
I

Idea

Мораль: Если поставить в форме BookMark для поля SendTo значение по умолчанию @Implode(@PickList([Custom];"";"PranaTeam";"PRANA Team";"PRANA Team";2)), то диалог будет выполнен при создании формы.

Править стандартную базу Mail как-то странновато, по-моему)
 
F

Fossil Code

Всяко бывает... :) Последнее личное достижение состоит в том, что для 99% своих пользователей вообще не пользуюсь стандартной почтовой базой. См. пост Минимальная почтовая база в разделе администрирования (https://codeby.net/threads/11974.html)
 
I

Idea

Всяко бывает... :) Последнее личное достижение состоит в том, что для 99% своих пользователей вообще не пользуюсь стандартной почтовой базой. См. пост Минимальная почтовая база в разделе администрирования (https://codeby.net/threads/11974.html)


да я сначала тоже свою форму сделала для такой рассылки, но меня убедили не изобретать велосипед. сижу и мучаюсь теперь)
 
I

Idea

Так как же все-таки правильно вставить ссылку на документ в поле ричтекст в LS?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
После этого
<!--QuoteBegin-Idea+13:02:2007, 13:19 -->
<span class="vbquote">(Idea @ 13:02:2007, 13:19 )</span><!--QuoteEBegin-->Call rtitem.AppendDocLink( uidoc.document, " ")
[snapback]55995" rel="nofollow" target="_blank[/snapback]​
[/quote]
Добавь:
Call rtitem.Update
 
Y

Yakov

Попробуйте rtitem.Update перед открытием документа.
 
Мы в соцсетях:

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