@setfield

Тема в разделе "Lotus - Программирование", создана пользователем Idea, 13 фев 2007.

  1. Idea

    Idea Гость

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

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Делай на скрипте.
     
  3. Idea

    Idea Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Что-то типа:
    Код (Text):
    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
     
  5. Idea

    Idea Гость

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

    Idea Гость

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

    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)))

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

    Idea Гость

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

    Fossil Code Гость

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

    Idea Гость


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

    Idea Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    После этого
    <!--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
     
  13. Yakov

    Yakov Гость

    Попробуйте rtitem.Update перед открытием документа.
     
  14. Idea

    Idea Гость

    Огромное спасибо!!! Тема закрыта)
     

Поделиться этой страницей