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

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

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

@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 отображается список адресов, то есть то, что и требуется.

Подскажите, как все-таки передать значения из пиклиста в поле только что созданного документа?
 
к сожалению в скриптах пока непроходимый ламер)
 
Что-то типа:
Код:
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
 
спасибо, сейчас попробую это "что-то типа")
 
Адресаты прекрасно вставились, большое спасибо. Но возникла проблема следующего содержания - в букмарк в соответствующее поле необходимо вставить ссылку на текущий док. Итог - ссылка не вставляется( Вот такой вот вышел код, чего с ним может быть не так?
Код:
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
 
По-моему, первоначальная проблема была в том, что последовательность формул выполнялась в разных контекстах: т.е. сначала инициализировалась переменная, а потом создавался новый документ, в поле которого производилась попытка вставки переменной. Но контекст для скрипта уже иной! Не исключено, что если сделать форму с полем 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)))

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

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


да я сначала тоже свою форму сделала для такой рассылки, но меня убедили не изобретать велосипед. сижу и мучаюсь теперь)
 
Так как же все-таки правильно вставить ссылку на документ в поле ричтекст в LS?
 
После этого
<!--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
 
Попробуйте rtitem.Update перед открытием документа.
 
Мы в соцсетях:

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